diff --git a/src/main/java/one/oth3r/sit/Events.java b/src/main/java/one/oth3r/sit/Events.java index 9fd9ef8..9ed4bc3 100644 --- a/src/main/java/one/oth3r/sit/Events.java +++ b/src/main/java/one/oth3r/sit/Events.java @@ -24,6 +24,8 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import one.oth3r.sit.Utl.HandType; +import one.oth3r.sit.Utl.PlayerSettings; +import one.oth3r.sit.Utl.PlayerSettings.Setting; import java.util.*; @@ -46,17 +48,17 @@ public class Events { for (HandType type:HandType.values()) { ItemStack targetStack = itemMap.get(type); // if req is empty and the item isn't empty, false - if (Utl.getReq(player,type).equals(config.HandRequirement.empty) && !targetStack.isEmpty()) return false; + if (PlayerSettings.getRequirement(player,type).equals(config.HandRequirement.empty) && !targetStack.isEmpty()) return false; // if req is restrictive - if (Utl.getReq(player,type).equals(config.HandRequirement.restrictive)) { + if (PlayerSettings.getRequirement(player,type).equals(config.HandRequirement.restrictive)) { // if item is in blacklist, false - if (checkList(Utl.getList(player,type,"blacklist"),targetStack)) return false; + if (checkList(PlayerSettings.getList(player,type,Setting.blacklist),targetStack)) return false; // if item is NOT in whitelist - if (!checkList(Utl.getList(player,type,"whitelist"),targetStack)) { + if (!checkList(PlayerSettings.getList(player,type,Setting.whitelist),targetStack)) { // if block is restricted and items is block, false, ect - if (Utl.getBool(player,type,"block") && (targetStack.getItem() instanceof BlockItem)) return false; - if (Utl.getBool(player,type,"food") && food.contains(targetStack.getUseAction())) return false; - if (Utl.getBool(player,type,"usable") && !notUsable.contains(targetStack.getUseAction())) return false; + if (PlayerSettings.getToggle(player,type,Setting.block) && (targetStack.getItem() instanceof BlockItem)) return false; + if (PlayerSettings.getToggle(player,type,Setting.food) && food.contains(targetStack.getUseAction())) return false; + if (PlayerSettings.getToggle(player,type,Setting.usable) && !notUsable.contains(targetStack.getUseAction())) return false; } } } @@ -105,7 +107,7 @@ public class Events { if (block instanceof CarpetBlock && config.carpetsOn) return true; if (blockState.isFullCube(world,pos.add(0,1,0)) && config.fullBlocksOn) return true; // custom checker - if (config.customOn && config.customBlocks.size() != 0) { + if (config.customOn && !config.customBlocks.isEmpty()) { for (HashMap map:getCustomBlocks().values()) { String blockID = Registries.BLOCK.getId(block).toString(); if (map.get("block").equals(blockID)) { @@ -149,7 +151,7 @@ public class Events { entity.updatePositionAndAngles(pos.getX() + 0.5, pos.getY()+.78, pos.getZ() + 0.5, 0, 0); hitBoxY = 2; } - if (config.customOn && config.customBlocks.size() != 0) { + if (config.customOn && !config.customBlocks.isEmpty()) { for (HashMap map:getCustomBlocks().values()) { String blockID = Registries.BLOCK.getId(block).toString(); if (map.get("block").equals(blockID)) { @@ -174,7 +176,7 @@ public class Events { ServerPlayerEntity player = handler.player; checkPlayers.put(player,2); // put server settings in the player settings - Sit.playerSettings.put(player,Utl.getHandSettings()); + Sit.playerSettings.put(player, PlayerSettings.getHandSettings()); }); ServerPlayConnectionEvents.DISCONNECT.register((handler, server) -> { ServerPlayerEntity player = handler.player; diff --git a/src/main/java/one/oth3r/sit/Utl.java b/src/main/java/one/oth3r/sit/Utl.java index 3045ec1..c7e5056 100644 --- a/src/main/java/one/oth3r/sit/Utl.java +++ b/src/main/java/one/oth3r/sit/Utl.java @@ -11,35 +11,58 @@ import java.util.HashMap; import java.util.List; public class Utl { - enum HandType { + public enum HandType { main, off } - public static HashMap getHandSettings() { - Gson gson = new GsonBuilder().disableHtmlEscaping().create(); - HashMap settings = new HashMap<>(); - settings.put("hand.main.requirement",String.valueOf(config.mainReq)); - settings.put("hand.main.block",String.valueOf(config.mainBlock)); - settings.put("hand.main.food",String.valueOf(config.mainFood)); - settings.put("hand.main.usable",String.valueOf(config.mainUsable)); - settings.put("hand.main.whitelist",gson.toJson(config.mainWhitelist)); - settings.put("hand.main.blacklist",gson.toJson(config.mainBlacklist)); - settings.put("hand.off.requirement",String.valueOf(config.offReq)); - settings.put("hand.off.block",String.valueOf(config.offBlock)); - settings.put("hand.off.food",String.valueOf(config.offFood)); - settings.put("hand.off.usable",String.valueOf(config.offUsable)); - settings.put("hand.off.whitelist",gson.toJson(config.offWhitelist)); - settings.put("hand.off.blacklist",gson.toJson(config.offBlacklist)); - return settings; + public static class PlayerSettings { + public enum Setting { + requirement, + block, + food, + usable, + whitelist, + blacklist + } + /** + * Gets a HashMap of all player configurable settings. + * @return a map with player hand settings. + */ + public static HashMap getHandSettings() { + Gson gson = new GsonBuilder().disableHtmlEscaping().create(); + HashMap settings = new HashMap<>(); + // main hand + settings.put("hand.main."+Setting.requirement,String.valueOf(config.mainReq)); + settings.put("hand.main."+Setting.block,String.valueOf(config.mainBlock)); + settings.put("hand.main."+Setting.food,String.valueOf(config.mainFood)); + settings.put("hand.main."+Setting.usable,String.valueOf(config.mainUsable)); + settings.put("hand.main."+Setting.whitelist,gson.toJson(config.mainWhitelist)); + settings.put("hand.main."+Setting.blacklist,gson.toJson(config.mainBlacklist)); + // copy but offhand + settings.put("hand.off."+Setting.requirement,String.valueOf(config.offReq)); + settings.put("hand.off."+Setting.block,String.valueOf(config.offBlock)); + settings.put("hand.off."+Setting.food,String.valueOf(config.offFood)); + settings.put("hand.off."+Setting.usable,String.valueOf(config.offUsable)); + settings.put("hand.off."+Setting.whitelist,gson.toJson(config.offWhitelist)); + settings.put("hand.off."+Setting.blacklist,gson.toJson(config.offBlacklist)); + return settings; + } + // returns specific items from the player config + public static config.HandRequirement getRequirement(ServerPlayerEntity player, HandType type) { + return config.HandRequirement.get(Sit.playerSettings.get(player).get("hand."+type+".requirement")); + } + public static List getList(ServerPlayerEntity player, HandType type, Setting setting) { + Type listType = new TypeToken>() {}.getType(); + return new Gson().fromJson(Sit.playerSettings.get(player).get("hand."+type+"."+setting),listType); + } + public static boolean getToggle(ServerPlayerEntity player, HandType type, Setting setting) { + return Boolean.parseBoolean(Sit.playerSettings.get(player).get("hand."+type+"."+setting)); + } } - public static config.HandRequirement getReq(ServerPlayerEntity player, HandType type) { - return config.HandRequirement.get(Sit.playerSettings.get(player).get("hand."+type+".requirement")); - } - public static List getList(ServerPlayerEntity player, HandType type, String setting) { - Type listType = new TypeToken>() {}.getType(); - return new Gson().fromJson(Sit.playerSettings.get(player).get("hand."+type+"."+setting),listType); - } - public static boolean getBool(ServerPlayerEntity player, HandType type, String setting) { - return Boolean.parseBoolean(Sit.playerSettings.get(player).get("hand."+type+"."+setting)); + public static class Assets { + public static final String CUSTOM_BLOCKS = "\"minecraft:campfire|0.255|1|lit=false\""; + public static final String REQUIREMENT_OPTIONS = String.format("%s, %s, %s", + config.HandRequirement.empty,config.HandRequirement.restrictive,config.HandRequirement.none); + public static final String LIST = "\"minecraft:torch\""; } }