Skip to content
This repository was archived by the owner on Feb 17, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand All @@ -42,36 +42,36 @@ public static PermissionType getPermission(int id) {
}

public static PermissionType registerPermission(String name, List<PlayerType> defaultPermLevels) {
return registerPermission(name, defaultPermLevels, null, true);
return registerPermission(name, defaultPermLevels, null, new HashMap<>());
}

public static PermissionType registerPermission(String name, List <PlayerType> defaultPermLevels, String description) {
return registerPermission(name, defaultPermLevels, description, true);
return registerPermission(name, defaultPermLevels, description, new HashMap<>());
}

public static PermissionType registerPermission(String name, List <PlayerType> defaultPermLevels, String description, boolean canBeBlacklisted) {
public static PermissionType registerPermission(String name, List <PlayerType> defaultPermLevels, String description, Map<String, PlayerType> 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);
}
return perm;
}

private static PermissionType internalRegisterPermission(int id, String name, List <PlayerType> defaultPermLevels, String description, boolean canBeBlackListed) {
PermissionType p = new PermissionType(name, id, defaultPermLevels, description, canBeBlackListed);
private static PermissionType internalRegisterPermission(int id, String name, List <PlayerType> defaultPermLevels, String description, Map<String, PlayerType> locked) {
PermissionType p = new PermissionType(name, id, defaultPermLevels, description, locked);
permissionByName.put(name, p);
permissionById.put(id, p);
return p;
Expand Down Expand Up @@ -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
Expand All @@ -127,14 +127,14 @@ private static void registerNameLayerPermissions() {
private List <PlayerType> defaultPermLevels;
private int id;
private String description;
private boolean canBeBlacklisted;
private Map<String, PlayerType> locked;

private PermissionType(String name, int id, List <PlayerType> defaultPermLevels, String description, boolean canBeBlacklisted) {
private PermissionType(String name, int id, List <PlayerType> defaultPermLevels, String description, Map<String, PlayerType> locked) {
this.name = name;
this.id = id;
this.defaultPermLevels = defaultPermLevels;
this.description = description;
this.canBeBlacklisted = canBeBlacklisted;
this.locked = locked;
}

public String getName() {
Expand All @@ -155,13 +155,16 @@ public String getDescription() {



public void update(List <PlayerType> defaultPermLevels, String description, boolean canBeBlacklisted) {
public void update(List <PlayerType> defaultPermLevels, String description, Map<String, PlayerType> 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);
}
}