Added some 'extends ChromaGamerBase'
This commit is contained in:
parent
cf74a1cb3c
commit
1ddfd1e3cc
2 changed files with 6 additions and 7 deletions
|
@ -24,5 +24,5 @@ public @interface AbstractUserClass {
|
||||||
/**
|
/**
|
||||||
* Indicates the class to create when connecting accounts.
|
* Indicates the class to create when connecting accounts.
|
||||||
*/
|
*/
|
||||||
Class<?> prototype();
|
Class<? extends ChromaGamerBase> prototype();
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import buttondevteam.lib.TBMCCoreAPI;
|
||||||
public abstract class ChromaGamerBase implements AutoCloseable {
|
public abstract class ChromaGamerBase implements AutoCloseable {
|
||||||
public static final String TBMC_PLAYERS_DIR = "TBMC/players/";
|
public static final String TBMC_PLAYERS_DIR = "TBMC/players/";
|
||||||
|
|
||||||
private static final HashBiMap<Class<?>, String> playerTypes = HashBiMap.create();
|
private static final HashBiMap<Class<? extends ChromaGamerBase>, String> playerTypes = HashBiMap.create();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used for connecting with every type of user ({@link #connectWith(ChromaGamerBase)})
|
* Used for connecting with every type of user ({@link #connectWith(ChromaGamerBase)})
|
||||||
|
@ -55,7 +55,7 @@ public abstract class ChromaGamerBase implements AutoCloseable {
|
||||||
* The folder to get the class from (like "minecraft")
|
* The folder to get the class from (like "minecraft")
|
||||||
* @return The type for the given folder name or null if not found
|
* @return The type for the given folder name or null if not found
|
||||||
*/
|
*/
|
||||||
public static Class<?> getTypeForFolder(String foldername) {
|
public static Class<? extends ChromaGamerBase> getTypeForFolder(String foldername) {
|
||||||
return playerTypes.inverse().get(foldername);
|
return playerTypes.inverse().get(foldername);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,16 +131,15 @@ public abstract class ChromaGamerBase implements AutoCloseable {
|
||||||
Consumer<YamlConfiguration> sync = sourcedata -> {
|
Consumer<YamlConfiguration> sync = sourcedata -> {
|
||||||
final String sourcefolder = sourcedata == plugindata ? ownFolder : userFolder;
|
final String sourcefolder = sourcedata == plugindata ? ownFolder : userFolder;
|
||||||
final String id = sourcedata.getString(sourcefolder + "_id");
|
final String id = sourcedata.getString(sourcefolder + "_id");
|
||||||
for (Entry<Class<?>, String> entry : playerTypes.entrySet()) { // Set our ID in all files we can find, both from our connections and the new ones
|
for (Entry<Class<? extends ChromaGamerBase>, String> entry : playerTypes.entrySet()) { // Set our ID in all files we can find, both from our connections and the new ones
|
||||||
if (entry.getKey() == getClass() || entry.getKey() == user.getClass())
|
if (entry.getKey() == getClass() || entry.getKey() == user.getClass())
|
||||||
continue;
|
continue;
|
||||||
final String otherid = sourcedata.getString(entry.getValue() + "_id");
|
final String otherid = sourcedata.getString(entry.getValue() + "_id");
|
||||||
if (otherid == null)
|
if (otherid == null)
|
||||||
continue;
|
continue;
|
||||||
try (@SuppressWarnings("unchecked")
|
try (ChromaGamerBase cg = getUser(otherid, entry.getKey())) {
|
||||||
ChromaGamerBase cg = getUser(otherid, (Class<T>) entry.getKey())) {
|
|
||||||
cg.plugindata.set(sourcefolder + "_id", id); // Set new IDs
|
cg.plugindata.set(sourcefolder + "_id", id); // Set new IDs
|
||||||
for (Entry<Class<?>, String> item : playerTypes.entrySet())
|
for (Entry<Class<? extends ChromaGamerBase>, String> item : playerTypes.entrySet())
|
||||||
if (sourcedata.contains(item.getValue() + "_id"))
|
if (sourcedata.contains(item.getValue() + "_id"))
|
||||||
cg.plugindata.set(item.getValue() + "_id", sourcedata.getString(item.getValue() + "_id")); // Set all existing IDs
|
cg.plugindata.set(item.getValue() + "_id", sourcedata.getString(item.getValue() + "_id")); // Set all existing IDs
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
Loading…
Reference in a new issue