From e044b5b5bd5f21ea6717144a345914264f59b0e8 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 27 Jan 2019 21:34:02 +0200 Subject: [PATCH] Added a few more config options. This is probably not the best use of json, lol --- .../com/minelittlepony/unicopia/UConfig.java | 48 ++++++++++++++++++- .../com/minelittlepony/unicopia/Unicopia.java | 31 +++++++----- 2 files changed, 67 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/UConfig.java b/src/main/java/com/minelittlepony/unicopia/UConfig.java index a46e4be9..bde46af5 100644 --- a/src/main/java/com/minelittlepony/unicopia/UConfig.java +++ b/src/main/java/com/minelittlepony/unicopia/UConfig.java @@ -17,7 +17,7 @@ import com.google.gson.stream.JsonWriter; public class UConfig { - private static UConfig instance; + private static UConfig instance = new UConfig(); private static final Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() @@ -51,13 +51,59 @@ public class UConfig { private File file; + @Expose(deserialize = false) + private final String speciesWhiteListComment = + "A whitelist of races permitted on the server. " + + "Races added to this list can be used by anyone, whilst any ones left off are not permitted. " + + "An empty list disables whitelisting entirely."; @Expose private final List speciesWhiteList = Lists.newArrayList(); + @Expose(deserialize = false) + private final String preferredRaceComment = + "The default preferred race. " + + "This is the race a client requests when first joining a game. " + + "It is the default used both when Mine Little Pony is not installed and when they respond with a human race."; + @Expose + private Race preferredRace = Race.HUMAN; + + @Expose(deserialize = false) + private final String ignoreMineLPComment = + "If true Mine Little Pony will not be considered when determining the race to use. " + + "The result will always be what is set by this config file."; + @Expose + private boolean ignoreMineLP = false; + public List getSpeciesWhiteList() { return speciesWhiteList; } + public boolean ignoresMineLittlePony() { + return ignoreMineLP; + } + + public void setIgnoreMineLittlePony(boolean value) { + if (value != ignoreMineLP) { + ignoreMineLP = value; + save(); + } + } + + public void setPreferredRace(Race race) { + if (preferredRace != race) { + preferredRace = race; + save(); + } + } + + public Race getPrefferedRace() { + if (preferredRace == null) { + setPreferredRace(Race.HUMAN); + } + + return preferredRace; + } + public void save() { if (file.exists()) { file.delete(); diff --git a/src/main/java/com/minelittlepony/unicopia/Unicopia.java b/src/main/java/com/minelittlepony/unicopia/Unicopia.java index cd95f0a3..0f05f0ca 100644 --- a/src/main/java/com/minelittlepony/unicopia/Unicopia.java +++ b/src/main/java/com/minelittlepony/unicopia/Unicopia.java @@ -111,11 +111,17 @@ public class Unicopia implements IGuiHandler { @SideOnly(Side.CLIENT) private static Race getclientPlayerRace() { - if (Minecraft.getMinecraft().player != null && MineLP.modIsActive()) { - return Race.fromPonyRace(IPony.forPlayer(Minecraft.getMinecraft().player).getRace(false)); + if (!UConfig.getInstance().ignoresMineLittlePony() + && Minecraft.getMinecraft().player != null + && MineLP.modIsActive()) { + Race race = Race.fromPonyRace(IPony.forPlayer(Minecraft.getMinecraft().player).getRace(false)); + + if (!race.isDefault()) { + return race; + } } - return Race.HUMAN; + return UConfig.getInstance().getPrefferedRace(); } @EventHandler @@ -137,6 +143,7 @@ public class Unicopia implements IGuiHandler { FBS.init(); NetworkRegistry.INSTANCE.registerGuiHandler(this, this); + clientPlayerRace = getclientPlayerRace(); } @EventHandler @@ -189,15 +196,17 @@ public class Unicopia implements IGuiHandler { @SideOnly(Side.CLIENT) @SubscribeEvent public static void onGameTick(TickEvent.ClientTickEvent event) { - Race newRace = getclientPlayerRace(); - - if (newRace != clientPlayerRace && Minecraft.getMinecraft().player != null) { - clientPlayerRace = newRace; - - channel.send(new MsgRequestCapabilities(Minecraft.getMinecraft().player, clientPlayerRace), Target.SERVER); - } - if (event.phase == Phase.END) { + if (Minecraft.getMinecraft().player != null) { + Race newRace = getclientPlayerRace(); + + if (newRace != clientPlayerRace) { + clientPlayerRace = newRace; + + channel.send(new MsgRequestCapabilities(Minecraft.getMinecraft().player, clientPlayerRace), Target.SERVER); + } + } + Keyboard.getKeyHandler().onKeyInput(); } }