diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java b/paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java index 9c5f939d..78085926 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ModifyPermissions.java @@ -66,8 +66,8 @@ public void execute(CommandSender sender, String groupName, String adding, Strin } GroupPermission gPerm = gm.getPermissionforGroup(g); - if (playerType == PlayerType.NOT_BLACKLISTED && !pType.getCanBeBlacklisted()) { - sender.sendMessage(ChatColor.RED + "You can not change this permission for non-blacklisted players."); + if (pType.getIsLocked(playerType)) { + sender.sendMessage(ChatColor.RED + "You can not change this permission for %s".formatted(PlayerType.getNiceRankName(playerType))); return; } diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java b/paper/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java index a3997941..5f3fd27c 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/gui/PermissionManageGUI.java @@ -152,7 +152,7 @@ private void showPermissionEditing(final PlayerType pType) { } } } - if (pType == PlayerType.NOT_BLACKLISTED && !perm.getCanBeBlacklisted()) { + if (perm.getIsLocked(pType)) { canEdit = false; ItemUtils.addLore( diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/permission/PermissionType.java b/paper/src/main/java/vg/civcraft/mc/namelayer/permission/PermissionType.java index aa1b0e05..203a6308 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/permission/PermissionType.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/permission/PermissionType.java @@ -28,7 +28,7 @@ public static void initialize() { int id = perm.getKey(); String name = perm.getValue(); maximumExistingId = Math.max(maximumExistingId, id); - internalRegisterPermission(id, name, new ArrayList<>(), null, true); + internalRegisterPermission(id, name, new ArrayList<>(), null, new HashMap<>()); } registerNameLayerPermissions(); } @@ -42,27 +42,27 @@ public static PermissionType getPermission(int id) { } public static PermissionType registerPermission(String name, List defaultPermLevels) { - return registerPermission(name, defaultPermLevels, null, true); + return registerPermission(name, defaultPermLevels, null, new HashMap<>()); } public static PermissionType registerPermission(String name, List defaultPermLevels, String description) { - return registerPermission(name, defaultPermLevels, description, true); + return registerPermission(name, defaultPermLevels, description, new HashMap<>()); } - public static PermissionType registerPermission(String name, List defaultPermLevels, String description, boolean canBeBlacklisted) { + public static PermissionType registerPermission(String name, List defaultPermLevels, String description, Map locked) { if (name == null ) { Bukkit.getLogger().severe("Could not register permission, name was null"); return null; } PermissionType existing = permissionByName.get(name); if (existing != null) { - existing.update(defaultPermLevels, description, canBeBlacklisted); + existing.update(defaultPermLevels, description, locked); return existing; } //not in db yet int id = maximumExistingId + 1; maximumExistingId = id; - PermissionType perm = internalRegisterPermission(id, name, defaultPermLevels, description, canBeBlacklisted); + PermissionType perm = internalRegisterPermission(id, name, defaultPermLevels, description, locked); NameLayerPlugin.getGroupManagerDao().registerPermission(perm); if (!defaultPermLevels.isEmpty()) { NameLayerPlugin.getGroupManagerDao().addNewDefaultPermission(defaultPermLevels, perm); @@ -70,8 +70,8 @@ public static PermissionType registerPermission(String name, List d return perm; } - private static PermissionType internalRegisterPermission(int id, String name, List defaultPermLevels, String description, boolean canBeBlackListed) { - PermissionType p = new PermissionType(name, id, defaultPermLevels, description, canBeBlackListed); + private static PermissionType internalRegisterPermission(int id, String name, List defaultPermLevels, String description, Map locked) { + PermissionType p = new PermissionType(name, id, defaultPermLevels, description, locked); permissionByName.put(name, p); permissionById.put(id, p); return p; @@ -109,7 +109,7 @@ private static void registerNameLayerPermissions() { //allows to add/remove owners registerPermission("OWNER", new ArrayList<>(owner), "Allows inviting new owners and removing existing owners"); //allows to modify the permissions for different permissions groups - registerPermission("PERMS", new ArrayList<>(owner), "Allows modifying permissions for this group"); + registerPermission("PERMS", new ArrayList<>(owner), "Allows modifying permissions for this group", Map.ofEntries(Map.entry("PERMS", PlayerType.OWNER))); //allows deleting the group registerPermission("DELETE", new ArrayList<>(owner), "Allows deleting this group"); //allows merging the group with another one @@ -127,14 +127,14 @@ private static void registerNameLayerPermissions() { private List defaultPermLevels; private int id; private String description; - private boolean canBeBlacklisted; + private Map locked; - private PermissionType(String name, int id, List defaultPermLevels, String description, boolean canBeBlacklisted) { + private PermissionType(String name, int id, List defaultPermLevels, String description, Map locked) { this.name = name; this.id = id; this.defaultPermLevels = defaultPermLevels; this.description = description; - this.canBeBlacklisted = canBeBlacklisted; + this.locked = locked; } public String getName() { @@ -155,13 +155,16 @@ public String getDescription() { - public void update(List defaultPermLevels, String description, boolean canBeBlacklisted) { + public void update(List defaultPermLevels, String description, Map locked) { this.defaultPermLevels = defaultPermLevels; this.description = description; - this.canBeBlacklisted = canBeBlacklisted; + this.locked = locked; } - public boolean getCanBeBlacklisted() { - return canBeBlacklisted; - } + public boolean getIsLocked(PlayerType playerType){ + if(!this.locked.containsKey(this.name)) + return false; + + return this.locked.get(this.name).equals(playerType); + } }