From a4e37c7938d62cbb99cd5d2db440a68d6f1db3cc Mon Sep 17 00:00:00 2001 From: Flemmli97 Date: Thu, 27 Aug 2020 01:17:09 +0200 Subject: [PATCH] changed admin claim to a bool cause it did more harm than good before --- .../java/com/flemmli97/flan/claim/Claim.java | 26 +++++++++++-------- .../flemmli97/flan/claim/ClaimStorage.java | 2 +- .../flemmli97/flan/commands/CommandClaim.java | 11 ++++---- .../com/flemmli97/flan/config/LangConfig.java | 2 +- .../flan/player/PlayerClaimData.java | 2 +- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/flemmli97/flan/claim/Claim.java b/src/main/java/com/flemmli97/flan/claim/Claim.java index 367ee75..61ab324 100644 --- a/src/main/java/com/flemmli97/flan/claim/Claim.java +++ b/src/main/java/com/flemmli97/flan/claim/Claim.java @@ -30,6 +30,7 @@ public class Claim { private int minX, minZ, maxX, maxZ, minY; private UUID owner; + private boolean adminClaim; private UUID claimID; private final EnumMap globalPerm = Maps.newEnumMap(EnumPermission.class); @@ -112,12 +113,16 @@ public class Claim { this.setDirty(); } - public void setAdminClaim() { - this.owner = null; - this.subClaims.forEach(claim->claim.owner = null); + public void toggleAdminClaim(boolean flag) { + this.adminClaim = flag; + this.subClaims.forEach(claim->claim.adminClaim = flag); this.setDirty(); } + public boolean isAdminClaim(){ + return this.adminClaim; + } + public int getPlane() { return (this.maxX - this.minX) * (this.maxZ - this.minZ); } @@ -170,7 +175,7 @@ public class Claim { if (player.getUuid().equals(this.owner)) return true; PlayerClaimData data = PlayerClaimData.get(player); - if ((this.owner==null && player.hasPermissionLevel(2)) || data.isAdminIgnoreClaim()) + if ((this.adminClaim && player.hasPermissionLevel(2)) || data.isAdminIgnoreClaim()) return true; for (Claim claim : this.subClaims) { if (claim.insideClaim(pos)) { @@ -279,7 +284,7 @@ public class Claim { } public boolean setPlayerGroup(UUID player, String group, boolean force) { - if (this.owner != null && this.owner.equals(player)) + if (this.owner.equals(player)) return false; if (group == null) { this.playersGroups.remove(player); @@ -392,8 +397,8 @@ public class Claim { this.minZ = pos.get(2).getAsInt(); this.maxZ = pos.get(3).getAsInt(); this.minY = pos.get(4).getAsInt(); - if(!obj.has("AdminClaim")) - this.owner = uuid; + this.owner = uuid; + this.adminClaim = obj.has("AdminClaim")?obj.get("AdminClaim").getAsBoolean():false; this.claimID = UUID.fromString(obj.get("ID").getAsString()); this.globalPerm.clear(); this.permissions.clear(); @@ -434,8 +439,7 @@ public class Claim { pos.add(this.minY); obj.add("PosxXzZY", pos); obj.addProperty("ID", this.claimID.toString()); - if(this.owner==null) - obj.addProperty("AdminClaim", true); + obj.addProperty("AdminClaim", this.adminClaim); if (this.parent != null) obj.addProperty("Parent", this.parent.toString()); if (!this.globalPerm.isEmpty()) { @@ -506,8 +510,8 @@ public class Claim { boolean perms = this.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos()); List l = Lists.newArrayList(); l.add(PermHelper.simpleColoredText("=============================================", Formatting.GREEN)); - GameProfile prof = this.owner != null ? player.getServer().getUserCache().getByUuid(this.owner) : null; - String ownerName = this.owner == null ? "Admin" : prof != null ? prof.getName() : ""; + GameProfile prof = player.getServer().getUserCache().getByUuid(this.owner); + String ownerName = this.adminClaim ? "Admin" : prof != null ? prof.getName() : ""; if(this.parent==null) l.add(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimBasicInfo, ownerName, this.minX, this.minZ, this.maxX, this.maxZ, this.subClaims.size()), Formatting.GOLD)); else diff --git a/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java b/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java index 2075537..c91d968 100644 --- a/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java +++ b/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java @@ -180,7 +180,7 @@ public class ClaimStorage { } public Collection getAdminClaims(){ - return ImmutableSet.copyOf(this.claimUUIDMap.values().stream().filter(claim->claim.getOwner()==null).iterator()); + return ImmutableSet.copyOf(this.claimUUIDMap.values().stream().filter(claim->claim.isAdminClaim()).iterator()); } public static int[] getChunkPos(Claim claim) { diff --git a/src/main/java/com/flemmli97/flan/commands/CommandClaim.java b/src/main/java/com/flemmli97/flan/commands/CommandClaim.java index 17824c8..2bb0884 100644 --- a/src/main/java/com/flemmli97/flan/commands/CommandClaim.java +++ b/src/main/java/com/flemmli97/flan/commands/CommandClaim.java @@ -9,12 +9,13 @@ import com.flemmli97.flan.gui.ClaimMenuScreenHandler; import com.flemmli97.flan.player.EnumDisplayType; import com.flemmli97.flan.player.EnumEditMode; import com.flemmli97.flan.player.PlayerClaimData; -import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.mojang.authlib.GameProfile; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.arguments.BoolArgumentType; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; @@ -55,7 +56,7 @@ public class CommandClaim { CommandManager.literal("switchMode").executes(CommandClaim::switchClaimMode), CommandManager.literal("adminMode").requires(src -> src.hasPermissionLevel(2)).executes(CommandClaim::switchAdminMode), CommandManager.literal("readGriefPrevention").requires(src -> src.hasPermissionLevel(2)).executes(CommandClaim::readGriefPreventionData), - CommandManager.literal("setAdminClaim").requires(src -> src.hasPermissionLevel(2)).executes(CommandClaim::setAdminClaim), + CommandManager.literal("setAdminClaim").requires(src -> src.hasPermissionLevel(2)).then(CommandManager.argument("toggle", BoolArgumentType.bool()).executes(CommandClaim::toggleAdminClaim)), CommandManager.literal("listAdminClaims").requires(src -> src.hasPermissionLevel(2)).executes(CommandClaim::listAdminClaims), CommandManager.literal("adminDelete").requires(src -> src.hasPermissionLevel(2)).executes(CommandClaim::adminDelete) .then(CommandManager.literal("all").then(CommandManager.argument("players", GameProfileArgumentType.gameProfile()) @@ -294,7 +295,7 @@ public class CommandClaim { return Command.SINGLE_SUCCESS; } - private static int setAdminClaim(CommandContext context) { + private static int toggleAdminClaim(CommandContext context) { ServerCommandSource src = context.getSource(); ClaimStorage storage = ClaimStorage.get(src.getWorld()); Claim claim = storage.getClaimAt(new BlockPos(src.getPosition())); @@ -302,8 +303,8 @@ public class CommandClaim { src.sendFeedback(PermHelper.simpleColoredText(ConfigHandler.lang.noClaim, Formatting.RED), false); return 0; } - claim.setAdminClaim(); - src.sendFeedback(PermHelper.simpleColoredText(ConfigHandler.lang.setAdminClaim, Formatting.GOLD), true); + claim.toggleAdminClaim(BoolArgumentType.getBool(context, "toggle")); + src.sendFeedback(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.setAdminClaim, claim.isAdminClaim()), Formatting.GOLD), true); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/flemmli97/flan/config/LangConfig.java b/src/main/java/com/flemmli97/flan/config/LangConfig.java index faa3fef..c1a42ba 100644 --- a/src/main/java/com/flemmli97/flan/config/LangConfig.java +++ b/src/main/java/com/flemmli97/flan/config/LangConfig.java @@ -55,7 +55,7 @@ public class LangConfig { public String adminMode = "Adminmode (Ignore Claims) set to: %s"; public String adminDeleteAll = "Deleted all claims for following players: %s"; - public String setAdminClaim = "Claim changed to an Adminclaim"; + public String setAdminClaim = "Adminclaim of this claim now: %s"; public String readGriefpreventionData = "Reading data from GriefPrevention"; public String readGriefpreventionDataSuccess = "Successfully read data"; public String readGriefpreventionDataFail = "Failed reading data for following claim files (Check the logs!): %s"; diff --git a/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java b/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java index 908961f..0cb1c42 100644 --- a/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java +++ b/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java @@ -262,7 +262,7 @@ public class PlayerClaimData { for (ServerWorld world : this.player.getServer().getWorlds()) { Collection claims = ClaimStorage.get(world).allClaimsFromPlayer(this.player.getUuid()); if (claims != null) - usedClaimsBlocks += claims.stream().filter(claim->claim.getOwner()!=null).mapToInt(Claim::getPlane).sum(); + usedClaimsBlocks += claims.stream().filter(claim->!claim.isAdminClaim()).mapToInt(Claim::getPlane).sum(); } return usedClaimsBlocks; }