From 0cbb5a576aca0e7d637259dc4222296d5f8f1f0c Mon Sep 17 00:00:00 2001 From: Flemmli97 Date: Fri, 11 Dec 2020 16:21:46 +0100 Subject: [PATCH] change global definition getter --- .../java/com/flemmli97/flan/claim/Claim.java | 16 +++++++--------- .../com/flemmli97/flan/claim/GlobalClaim.java | 16 +++++++--------- .../flemmli97/flan/commands/CommandClaim.java | 4 +--- .../java/com/flemmli97/flan/config/Config.java | 15 ++++++++++++--- .../flemmli97/flan/gui/ServerScreenHelper.java | 6 +++--- 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/flemmli97/flan/claim/Claim.java b/src/main/java/com/flemmli97/flan/claim/Claim.java index 18a2329..f25bddc 100644 --- a/src/main/java/com/flemmli97/flan/claim/Claim.java +++ b/src/main/java/com/flemmli97/flan/claim/Claim.java @@ -192,15 +192,13 @@ public class Claim implements IPermissionContainer { return true; } } - if (!this.isAdminClaim() && ConfigHandler.config.globalDefaultPerms.containsKey(this.world.getRegistryKey().getValue().toString())) { - Map permMap = ConfigHandler.config.globalDefaultPerms.get(this.world.getRegistryKey().getValue().toString()); - if (permMap.containsKey(perm)) { - if (permMap.get(perm) || this.isAdminIgnore(player)) - return true; - if (message) - player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true); - return false; - } + Boolean global = ConfigHandler.config.getGlobal(this.world, perm); + if (!this.isAdminClaim() && global != null) { + if (global || this.isAdminIgnore(player)) + return true; + if (message) + player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true); + return false; } if (PermissionRegistry.globalPerms().contains(perm)) { for (Claim claim : this.subClaims) { diff --git a/src/main/java/com/flemmli97/flan/claim/GlobalClaim.java b/src/main/java/com/flemmli97/flan/claim/GlobalClaim.java index 91e48f7..c747a60 100644 --- a/src/main/java/com/flemmli97/flan/claim/GlobalClaim.java +++ b/src/main/java/com/flemmli97/flan/claim/GlobalClaim.java @@ -19,15 +19,13 @@ public class GlobalClaim implements IPermissionContainer { @Override public boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos, boolean message) { - if (ConfigHandler.config.globalDefaultPerms.containsKey(this.world.getRegistryKey().getValue().toString())) { - Map permMap = ConfigHandler.config.globalDefaultPerms.get(this.world.getRegistryKey().getValue().toString()); - if (permMap.containsKey(perm)) { - if (permMap.get(perm)) - return true; - if (message) - player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true); - return false; - } + Boolean global = ConfigHandler.config.getGlobal(this.world, perm); + if (global != null) { + if (global) + return true; + if (message) + player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true); + return false; } return true; } diff --git a/src/main/java/com/flemmli97/flan/commands/CommandClaim.java b/src/main/java/com/flemmli97/flan/commands/CommandClaim.java index 58c23a7..8771d98 100644 --- a/src/main/java/com/flemmli97/flan/commands/CommandClaim.java +++ b/src/main/java/com/flemmli97/flan/commands/CommandClaim.java @@ -495,10 +495,8 @@ public class CommandClaim { ServerWorld world = context.getSource().getWorld(); Claim claim = ClaimStorage.get(world).getClaimAt(new BlockPos(context.getSource().getPosition())); boolean admin = claim != null && claim.isAdminClaim(); - String serverWorld = world.getRegistryKey().getValue().toString(); - Map global = ConfigHandler.config.globalDefaultPerms.get(serverWorld); for (ClaimPermission perm : PermissionRegistry.getPerms()) { - if (!admin && global != null && global.containsKey(perm)) { + if (!admin && ConfigHandler.config.globallyDefined(world, perm)) { continue; } if (!group || !PermissionRegistry.globalPerms().contains(perm)) diff --git a/src/main/java/com/flemmli97/flan/config/Config.java b/src/main/java/com/flemmli97/flan/config/Config.java index 9e53cab..b7371de 100644 --- a/src/main/java/com/flemmli97/flan/config/Config.java +++ b/src/main/java/com/flemmli97/flan/config/Config.java @@ -33,6 +33,7 @@ public class Config { public String[] blacklistedWorlds = new String[0]; public boolean worldWhitelist; + public boolean allowMobSpawnToggle; public Item claimingItem = Items.GOLDEN_HOE; public Item inspectionItem = Items.STICK; @@ -42,7 +43,7 @@ public class Config { public boolean log; - public final Map> globalDefaultPerms = Maps.newHashMap(); + private final Map> globalDefaultPerms = Maps.newHashMap(); public Config(MinecraftServer server) { File configDir = FabricLoader.getInstance().getConfigDir().resolve("flan").toFile(); @@ -76,6 +77,7 @@ public class Config { for (int i = 0; i < arr.size(); i++) this.blacklistedWorlds[i] = arr.get(i).getAsString(); this.worldWhitelist = ConfigHandler.fromJson(obj, "worldWhitelist", this.worldWhitelist); + this.allowMobSpawnToggle = ConfigHandler.fromJson(obj, "allowMobSpawnToggle", false); if (obj.has("claimingItem")) this.claimingItem = Registry.ITEM.get(new Identifier((obj.get("claimingItem").getAsString()))); if (obj.has("inspectionItem")) @@ -118,6 +120,7 @@ public class Config { arr.add(this.blacklistedWorlds[i]); obj.add("blacklistedWorlds", arr); obj.addProperty("worldWhitelist", this.worldWhitelist); + obj.addProperty("allowMobSpawnToggle", this.allowMobSpawnToggle); obj.addProperty("claimingItem", Registry.ITEM.getId(this.claimingItem).toString()); obj.addProperty("inspectionItem", Registry.ITEM.getId(this.inspectionItem).toString()); obj.addProperty("claimDisplayTime", this.claimDisplayTime); @@ -140,7 +143,13 @@ public class Config { } public boolean globallyDefined(ServerWorld world, ClaimPermission perm) { - Map global = ConfigHandler.config.globalDefaultPerms.get(world.getRegistryKey().getValue().toString()); - return global != null && global.containsKey(perm); + return getGlobal(world, perm) != null; + } + + public Boolean getGlobal(ServerWorld world, ClaimPermission perm){ + if(perm == PermissionRegistry.MOBSPAWN && !this.allowMobSpawnToggle) + return Boolean.FALSE; + Map permMap = ConfigHandler.config.globalDefaultPerms.get(world.getRegistryKey().getValue().toString()); + return permMap == null ? null : permMap.getOrDefault(perm, null); } } diff --git a/src/main/java/com/flemmli97/flan/gui/ServerScreenHelper.java b/src/main/java/com/flemmli97/flan/gui/ServerScreenHelper.java index 9c7c272..bab910c 100644 --- a/src/main/java/com/flemmli97/flan/gui/ServerScreenHelper.java +++ b/src/main/java/com/flemmli97/flan/gui/ServerScreenHelper.java @@ -33,11 +33,11 @@ public class ServerScreenHelper { ListTag lore = new ListTag(); Text trans = new LiteralText(perm.desc).setStyle(Style.EMPTY.withFormatting(Formatting.YELLOW)); lore.add(StringTag.of(Text.Serializer.toJson(trans))); - Map global = ConfigHandler.config.globalDefaultPerms.get(claim.getWorld().getRegistryKey().getValue().toString()); - if (!claim.isAdminClaim() && global != null && global.containsKey(perm)) { + Boolean global = ConfigHandler.config.getGlobal(claim.getWorld(), perm); + if (!claim.isAdminClaim() && global != null) { Text text = new LiteralText("Non Editable.").setStyle(Style.EMPTY.withFormatting(Formatting.DARK_RED)); lore.add(StringTag.of(Text.Serializer.toJson(text))); - String permFlag = global.get(perm).toString(); + String permFlag = global.toString(); Text text2 = new LiteralText("Enabled: " + permFlag).setStyle(Style.EMPTY.withFormatting(permFlag.equals("true") ? Formatting.GREEN : Formatting.RED)); lore.add(StringTag.of(Text.Serializer.toJson(text2))); } else {