Fixed a bunch of stuff

This commit is contained in:
Norbi Peti 2017-04-01 19:57:43 +02:00
parent b9738837a1
commit f2931ed2fd
6 changed files with 35 additions and 2 deletions

View file

@ -152,7 +152,7 @@ public abstract class ChromaGamerBase implements AutoCloseable {
* The target player class * The target player class
* @return The player as a {@link T} object or null if not having an account there * @return The player as a {@link T} object or null if not having an account there
*/ */
public <T extends ChromaGamerBase> T getAs(Class<T> cl) { public <T extends ChromaGamerBase> T getAs(Class<T> cl) { // TODO: Provide a way to use TBMCPlayerBase's loaded players
String newfolder = getFolderForType(cl); String newfolder = getFolderForType(cl);
if (newfolder == null) if (newfolder == null)
throw new RuntimeException("The specified class " + cl.getSimpleName() + " isn't registered!"); throw new RuntimeException("The specified class " + cl.getSimpleName() + " isn't registered!");

View file

@ -18,4 +18,9 @@ public class EnumPlayerData<T extends Enum<T>> {
public void set(T value) { public void set(T value) {
data.set(value.toString()); data.set(value.toString());
} }
public T getOrDefault(T def) {
T value = get();
return value == null ? def : value;
}
} }

View file

@ -13,10 +13,21 @@ public class PlayerData<T> {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public T get() { public T get() {
return (T) yaml.get(name); Object value = yaml.get(name);
return (T) value;
} }
public void set(T value) { public void set(T value) {
yaml.set(name, value); yaml.set(name, value);
} }
public T getOrDefault(T def) {
T value = get();
return value == null ? def : value;
}
@Override
public String toString() {
return get().toString();
}
} }

View file

@ -48,6 +48,7 @@ public abstract class TBMCPlayerBase extends ChromaGamerBase {
* *
* @return A data object with methods to get and set * @return A data object with methods to get and set
*/ */
@Override
protected <T> PlayerData<T> data() { protected <T> PlayerData<T> data() {
return super.data(pluginname); return super.data(pluginname);
} }
@ -57,6 +58,7 @@ public abstract class TBMCPlayerBase extends ChromaGamerBase {
* *
* @return A data object with methods to get and set * @return A data object with methods to get and set
*/ */
@Override
protected <T extends Enum<T>> EnumPlayerData<T> dataEnum(Class<T> cl) { protected <T extends Enum<T>> EnumPlayerData<T> dataEnum(Class<T> cl) {
return super.dataEnum(pluginname, cl); return super.dataEnum(pluginname, cl);
} }

View file

@ -50,12 +50,18 @@ public class PlayerDataTest extends TestCase {
assertEquals("Test", p.PlayerName().get()); assertEquals("Test", p.PlayerName().get());
p.testenum().set(TestEnum.A); // TODO: Fix enum saving p.testenum().set(TestEnum.A); // TODO: Fix enum saving
assertEquals(TestEnum.A, p.testenum().get()); assertEquals(TestEnum.A, p.testenum().get());
// p.TestShort().set((short) 5);
// assertEquals((short) 5, (short) (int) p.TestShort().get());
p.TestBool().set(true);
assertEquals(true, (boolean) p.TestBool().get());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try (TestPlayerClass p = TBMCPlayerBase.getPlayer(uuid, TestPlayerClass.class)) { try (TestPlayerClass p = TBMCPlayerBase.getPlayer(uuid, TestPlayerClass.class)) {
assertEquals("Test", p.PlayerName().get()); assertEquals("Test", p.PlayerName().get());
assertEquals(TestEnum.A, p.testenum().get()); assertEquals(TestEnum.A, p.testenum().get());
// assertEquals((short) 5, (short) p.TestShort().get());
assertEquals(true, (boolean) p.TestBool().get());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -2,6 +2,7 @@ package buttondevteam.core;
import buttondevteam.lib.player.EnumPlayerData; import buttondevteam.lib.player.EnumPlayerData;
import buttondevteam.lib.player.PlayerClass; import buttondevteam.lib.player.PlayerClass;
import buttondevteam.lib.player.PlayerData;
import buttondevteam.lib.player.TBMCPlayerBase; import buttondevteam.lib.player.TBMCPlayerBase;
@PlayerClass(pluginname = "TestPlugin") @PlayerClass(pluginname = "TestPlugin")
@ -13,4 +14,12 @@ public class TestPlayerClass extends TBMCPlayerBase {
public enum TestEnum { public enum TestEnum {
A, B A, B
} }
public PlayerData<Short> TestShort() {
return data();
}
public PlayerData<Boolean> TestBool() {
return data();
}
} }