From 76379300f9e0a4cb93f7d58e0e8aa3b88a71ed67 Mon Sep 17 00:00:00 2001 From: Longboyy <43973255+Longboyy@users.noreply.github.com> Date: Wed, 20 Jul 2022 13:20:37 +0100 Subject: [PATCH 1/2] Implemented event for group permission change --- .../events/GroupPermissionAdditionEvent.java | 66 ------------------- .../events/GroupPermissionChangeEvent.java | 2 + .../events/GroupPermissionRemovalEvent.java | 65 ------------------ 3 files changed, 2 insertions(+), 131 deletions(-) delete mode 100644 paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionAdditionEvent.java create mode 100644 paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java delete mode 100644 paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionRemovalEvent.java diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionAdditionEvent.java b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionAdditionEvent.java deleted file mode 100644 index 3bf298b3..00000000 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionAdditionEvent.java +++ /dev/null @@ -1,66 +0,0 @@ -package vg.civcraft.mc.namelayer.events; - -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; -import vg.civcraft.mc.namelayer.GroupManager.PlayerType; -import vg.civcraft.mc.namelayer.group.Group; -import vg.civcraft.mc.namelayer.permission.PermissionType; - -public class GroupPermissionAdditionEvent extends Event implements Cancellable{ - - private static final HandlerList handlers = new HandlerList(); - - private boolean isCancelled = false; - private Group group; - private PlayerType playerType; - private PermissionType permission; - - public GroupPermissionAdditionEvent(Group group, PlayerType playerType, PermissionType permission){ - this.group = group; - this.playerType = playerType; - this.permission = permission; - } - - /** - * @return Group for which permission was removed - */ - public Group getGroup(){ - return group; - } - - /** - * @return Player type from which the permission was taken - */ - public PlayerType getPlayerType() { - return playerType; - } - - /** - * @return Permission taken - */ - public PermissionType getPermission() { - return permission; - } - - @Override - public boolean isCancelled() { - return isCancelled; - } - - @Override - public void setCancelled(boolean value) { - isCancelled = value; - } - - @Override - public HandlerList getHandlers() { - return handlers; - } - - public static HandlerList getHandlerList() { - return handlers; - } - -} - diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java new file mode 100644 index 00000000..d94798cf --- /dev/null +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java @@ -0,0 +1,2 @@ +package vg.civcraft.mc.namelayer.events;public class GroupPermissionChangeEvent { +} diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionRemovalEvent.java b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionRemovalEvent.java deleted file mode 100644 index 83cbf319..00000000 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionRemovalEvent.java +++ /dev/null @@ -1,65 +0,0 @@ -package vg.civcraft.mc.namelayer.events; - -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; -import vg.civcraft.mc.namelayer.GroupManager.PlayerType; -import vg.civcraft.mc.namelayer.group.Group; -import vg.civcraft.mc.namelayer.permission.PermissionType; - -public class GroupPermissionRemovalEvent extends Event implements Cancellable{ - - private static final HandlerList handlers = new HandlerList(); - - private boolean isCancelled = false; - private Group group; - private PlayerType playerType; - private PermissionType permission; - - public GroupPermissionRemovalEvent(Group group, PlayerType playerType, PermissionType permission){ - this.group = group; - this.playerType = playerType; - this.permission = permission; - } - - /** - * @return Group for which permission was removed - */ - public Group getGroup(){ - return group; - } - - /** - * @return Player type from which the permission was taken - */ - public PlayerType getPlayerType() { - return playerType; - } - - /** - * @return Permission taken - */ - public PermissionType getPermission() { - return permission; - } - - @Override - public boolean isCancelled() { - return isCancelled; - } - - @Override - public void setCancelled(boolean value) { - isCancelled = value; - } - - @Override - public HandlerList getHandlers() { - return handlers; - } - - public static HandlerList getHandlerList() { - return handlers; - } - -} From 8d553be39c2e4cb5302cf8065152a6dbadef6ec3 Mon Sep 17 00:00:00 2001 From: Longboyy <43973255+Longboyy@users.noreply.github.com> Date: Wed, 20 Jul 2022 13:25:11 +0100 Subject: [PATCH 2/2] permission event --- build.gradle.kts | 2 +- .../command/commands/ModifyPermissions.java | 4 +- .../events/GroupPermissionChangeEvent.java | 90 ++++++++++++++++++- .../mc/namelayer/gui/AdminFunctionsGUI.java | 2 + .../mc/namelayer/gui/PermissionManageGUI.java | 4 +- .../namelayer/permission/GroupPermission.java | 47 ++++++++-- 6 files changed, 135 insertions(+), 14 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index efefdacd..eb25f121 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,7 +14,7 @@ gradle.buildFinished { allprojects { group = "net.civmc.namelayer" - version = "3.0.0-SNAPSHOT" + version = "3.0.1-SNAPSHOT" description = "NameLayer" } 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..ddff9b10 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 @@ -80,14 +80,14 @@ public void execute(CommandSender sender, String groupName, String adding, Strin sender.sendMessage(ChatColor.RED + "You can't explicitly add players to this group. Per default any non blacklisted person will" + "be included in this permission group"); } - gPerm.addPermission(playerType, pType); + gPerm.addPermission(playerType, pType, true, p); sender.sendMessage(ChatColor.GREEN + "The PermissionType: " + pType.getName() + " was successfully added to the PlayerType: " + playerType.name()); } } else if (info.equalsIgnoreCase("remove")){ if (gPerm.hasPermission(playerType, pType)){ - gPerm.removePermission(playerType, pType); + gPerm.removePermission(playerType, pType, true, p); sender.sendMessage(ChatColor.GREEN + "The PermissionType: " + pType.getName() + " was successfully removed from" + " the PlayerType: " + playerType.name()); } diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java index d94798cf..51394e55 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java @@ -1,2 +1,90 @@ -package vg.civcraft.mc.namelayer.events;public class GroupPermissionChangeEvent { +package vg.civcraft.mc.namelayer.events; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import vg.civcraft.mc.namelayer.GroupManager.PlayerType; +import vg.civcraft.mc.namelayer.group.Group; +import vg.civcraft.mc.namelayer.permission.PermissionType; + +public class GroupPermissionChangeEvent extends Event implements Cancellable { + + private static final HandlerList handlers = new HandlerList(); + + private boolean isCancelled = false; + + private Group group; + private PlayerType playerType; + private PermissionType permission; + private ChangeType changeType; + private Player player; + + public GroupPermissionChangeEvent(Group group, PlayerType playerType, PermissionType permission, ChangeType changeType, Player player){ + this.group = group; + this.playerType = playerType; + this.permission = permission; + this.changeType = changeType; + this.player = player; + } + + /** + * @return Group for which permission was removed + */ + public Group getGroup(){ + return group; + } + + /** + * @return Player type from which the permission was taken + */ + public PlayerType getPlayerType() { + return playerType; + } + + /** + * @return Permission changed + */ + public PermissionType getPermission() { + return permission; + } + + /** + * @return Type of change that occurred + */ + public ChangeType getChange(){ + return changeType; + } + + /** + * @return The player, if any, responsible for the change + */ + public Player getPlayer(){ + return player; + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public void setCancelled(boolean value) { + isCancelled = value; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public enum ChangeType { + ADD, + REMOVE + } + } diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java b/paper/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java index af9c66b3..46609991 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/gui/AdminFunctionsGUI.java @@ -246,6 +246,8 @@ public void clicked(Player p) { p.sendMessage(ChatColor.GREEN + "Group is now disciplined." + " Check back later to see if group is deleted."); } + + p.closeInventory(); } }, 11); confirmInv.setSlot(new Clickable(no) { 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..d7bbe28e 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 @@ -178,9 +178,9 @@ public void clicked(Player arg0) { + "for player type " + pType.toString() + " for " + g.getName() + " via the gui"); if (hasPerm) { - gp.removePermission(pType, perm); + gp.removePermission(pType, perm, true, arg0); } else { - gp.addPermission(pType, perm); + gp.addPermission(pType, perm, true, arg0); } } } else { diff --git a/paper/src/main/java/vg/civcraft/mc/namelayer/permission/GroupPermission.java b/paper/src/main/java/vg/civcraft/mc/namelayer/permission/GroupPermission.java index 6d9ee822..4776fd25 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/permission/GroupPermission.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/permission/GroupPermission.java @@ -4,9 +4,12 @@ import java.util.Collections; import java.util.List; import java.util.Map; + +import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager.PlayerType; import vg.civcraft.mc.namelayer.NameLayerPlugin; import vg.civcraft.mc.namelayer.database.GroupManagerDao; +import vg.civcraft.mc.namelayer.events.GroupPermissionChangeEvent; import vg.civcraft.mc.namelayer.group.Group; public class GroupPermission { @@ -73,15 +76,28 @@ public boolean addPermission(PlayerType pType, PermissionType permType) { } public boolean addPermission(PlayerType pType, PermissionType permType, boolean savetodb) { + return addPermission(pType, permType, savetodb, null); + } + + public boolean addPermission(PlayerType pType, PermissionType permType, boolean savetodb, Player changer){ List playerPerms = perms.get(pType); if (playerPerms == null || playerPerms.contains(permType)) { return false; } - playerPerms.add(permType); - if (savetodb) { - db.addPermission(group.getName(), pType.name(), Collections.singletonList(permType)); + GroupPermissionChangeEvent gpce = new GroupPermissionChangeEvent( + this.group, + pType, + permType, + GroupPermissionChangeEvent.ChangeType.ADD, + changer); + if(gpce.callEvent()) { + playerPerms.add(permType); + if (savetodb) { + db.addPermission(group.getName(), pType.name(), Collections.singletonList(permType)); + } + return true; } - return true; + return false; } /** @@ -95,15 +111,30 @@ public boolean removePermission(PlayerType pType, PermissionType permType){ } public boolean removePermission(PlayerType pType, PermissionType permType, boolean savetodb) { + return removePermission(pType, permType, savetodb, null); + } + + public boolean removePermission(PlayerType pType, PermissionType permType, boolean savetodb, Player changer) { List playerPerms = perms.get(pType); if (playerPerms == null || !playerPerms.contains(permType)) { return false; } - playerPerms.remove(permType); - if (savetodb) { - db.removePermissionAsync(group.getName(), pType, permType); + + GroupPermissionChangeEvent gpce = new GroupPermissionChangeEvent( + this.group, + pType, + permType, + GroupPermissionChangeEvent.ChangeType.REMOVE, + changer); + + if(gpce.callEvent()) { + playerPerms.remove(permType); + if (savetodb) { + db.removePermissionAsync(group.getName(), pType, permType); + } + return true; } - return true; + return false; } /**