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/GroupPermissionAdditionEvent.java b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java similarity index 62% rename from paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionAdditionEvent.java rename to paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java index 3bf298b3..51394e55 100644 --- a/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionAdditionEvent.java +++ b/paper/src/main/java/vg/civcraft/mc/namelayer/events/GroupPermissionChangeEvent.java @@ -1,5 +1,6 @@ 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; @@ -7,42 +8,61 @@ import vg.civcraft.mc.namelayer.group.Group; import vg.civcraft.mc.namelayer.permission.PermissionType; -public class GroupPermissionAdditionEvent extends Event implements Cancellable{ - +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; - - public GroupPermissionAdditionEvent(Group group, PlayerType playerType, 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 taken + * @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; @@ -57,10 +77,14 @@ public void setCancelled(boolean value) { public HandlerList getHandlers() { return handlers; } - + public static HandlerList getHandlerList() { - return handlers; + return handlers; } -} + public enum ChangeType { + ADD, + REMOVE + } +} 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; - } - -} 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; } /**