From 313b3b4d53720072b4f29249304b22a896884f1b Mon Sep 17 00:00:00 2001 From: Sekwah Date: Sat, 6 May 2023 03:45:02 +0100 Subject: [PATCH] refactor: switch to permission builder --- .../advancedportals/core/CoreListeners.java | 7 ++- .../desti/CreateDestiSubCommand.java | 3 +- .../portal/CreatePortalSubCommand.java | 3 +- .../portal/EndGatewayBlockSubCommand.java | 3 +- .../portal/EndPortalBlockSubCommand.java | 3 +- .../portal/LangUpdateSubCommand.java | 3 +- .../portal/PortalBlockSubCommand.java | 3 +- .../subcommands/portal/ReloadSubCommand.java | 3 +- .../subcommands/portal/RemoveSubCommand.java | 3 +- .../portal/SelectorSubCommand.java | 3 +- .../core/permissions/PortalPermissions.java | 59 +++++++++++++++++++ 11 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 core/src/main/java/com/sekwah/advancedportals/core/permissions/PortalPermissions.java diff --git a/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java b/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java index 497875e..3b2389c 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; import com.sekwah.advancedportals.core.connector.containers.WorldContainer; import com.sekwah.advancedportals.core.data.BlockLocation; import com.sekwah.advancedportals.core.data.PlayerLocation; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.repository.ConfigRepository; import com.sekwah.advancedportals.core.services.PortalServices; import com.sekwah.advancedportals.core.services.PortalTempDataServices; @@ -78,7 +79,7 @@ public class CoreListeners { * @return if the block is allowed to be placed */ public boolean blockPlace(PlayerContainer player, BlockLocation blockPos, String blockMaterial, String itemInHandMaterial, String itemInHandName) { - if(itemInHandName != null && player != null && player.hasPermission("advancedportals.build")) { + if(itemInHandName != null && player != null && PortalPermissions.BUILD.hasPermission(player)) { WorldContainer world = player.getWorld(); if(itemInHandName.equals("\u00A75Portal Block Placer")) { world.setBlock(blockPos, "PORTAL"); @@ -114,13 +115,13 @@ public class CoreListeners { */ public boolean playerInteractWithBlock(PlayerContainer player, String materialName, String itemName, BlockLocation blockLoc, boolean leftClick) { - if(itemName != null && (player.isOp() || player.hasPermission("advancedportals.createportal")) && + if(itemName != null && (player.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(player)) && materialName.equalsIgnoreCase(this.configRepository.getSelectorMaterial()) && (!this.configRepository.getUseOnlySpecialAxe() || itemName.equals("\u00A7ePortal Region Selector"))) { this.portalTempDataServices.playerSelectorActivate(player, blockLoc, leftClick); return false; } - else if(itemName != null && leftClick && itemName.equals("\u00A75Portal Block Placer") && player.hasPermission("advancedportals.build")) { + else if(itemName != null && leftClick && itemName.equals("\u00A75Portal Block Placer") && PortalPermissions.BUILD.hasPermission(player)) { WorldContainer world = player.getWorld(); if(world.getBlockData(blockLoc) == 1) { world.setBlockData(blockLoc, (byte) 2); diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/desti/CreateDestiSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/desti/CreateDestiSubCommand.java index ea05136..6ec4d47 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/desti/CreateDestiSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/desti/CreateDestiSubCommand.java @@ -4,6 +4,7 @@ import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; import com.sekwah.advancedportals.core.data.DataTag; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.util.Lang; import com.sekwah.advancedportals.core.util.TagReader; @@ -47,7 +48,7 @@ public class CreateDestiSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/CreatePortalSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/CreatePortalSubCommand.java index df5add9..0f05bcf 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/CreatePortalSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/CreatePortalSubCommand.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; import com.sekwah.advancedportals.core.data.DataTag; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.portal.AdvancedPortal; import com.sekwah.advancedportals.core.services.PortalServices; import com.sekwah.advancedportals.core.util.Lang; @@ -47,7 +48,7 @@ public class CreatePortalSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndGatewayBlockSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndGatewayBlockSubCommand.java index 4da2bb1..dc6243b 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndGatewayBlockSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndGatewayBlockSubCommand.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.util.Lang; import java.util.List; @@ -31,7 +32,7 @@ public class EndGatewayBlockSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndPortalBlockSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndPortalBlockSubCommand.java index 879b1ca..6128d11 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndPortalBlockSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/EndPortalBlockSubCommand.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.util.Lang; import java.util.List; @@ -31,7 +32,7 @@ public class EndPortalBlockSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java index c4c8e74..6c31893 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java @@ -4,6 +4,7 @@ import com.google.inject.Inject; import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.repository.ConfigRepository; import com.sekwah.advancedportals.core.util.Lang; @@ -65,7 +66,7 @@ public class LangUpdateSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.langupdate"); + return sender.isOp() || PortalPermissions.LANG_UPDATE.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/PortalBlockSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/PortalBlockSubCommand.java index 6a5197d..6fc72da 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/PortalBlockSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/PortalBlockSubCommand.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.util.Lang; import java.util.List; @@ -33,7 +34,7 @@ public class PortalBlockSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java index 61a090f..99b4aee 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java @@ -4,6 +4,7 @@ import com.google.inject.Inject; import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.repository.ConfigRepository; import com.sekwah.advancedportals.core.services.DestinationServices; import com.sekwah.advancedportals.core.services.PortalServices; @@ -36,7 +37,7 @@ public class ReloadSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.reload"); + return sender.isOp() || PortalPermissions.RELOAD.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/RemoveSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/RemoveSubCommand.java index 5cade55..fd9773d 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/RemoveSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/RemoveSubCommand.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.portal.AdvancedPortal; import com.sekwah.advancedportals.core.services.PortalServices; import com.sekwah.advancedportals.core.util.Lang; @@ -50,7 +51,7 @@ public class RemoveSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/SelectorSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/SelectorSubCommand.java index ce0f01d..bd7d96e 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/SelectorSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/SelectorSubCommand.java @@ -5,6 +5,7 @@ import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; +import com.sekwah.advancedportals.core.permissions.PortalPermissions; import com.sekwah.advancedportals.core.repository.ConfigRepository; import com.sekwah.advancedportals.core.util.Lang; @@ -38,7 +39,7 @@ public class SelectorSubCommand implements SubCommand { @Override public boolean hasPermission(CommandSenderContainer sender) { - return sender.isOp() || sender.hasPermission("advancedportals.createportal"); + return sender.isOp() || PortalPermissions.CREATE_PORTAL.hasPermission(sender); } @Override diff --git a/core/src/main/java/com/sekwah/advancedportals/core/permissions/PortalPermissions.java b/core/src/main/java/com/sekwah/advancedportals/core/permissions/PortalPermissions.java new file mode 100644 index 0000000..d160024 --- /dev/null +++ b/core/src/main/java/com/sekwah/advancedportals/core/permissions/PortalPermissions.java @@ -0,0 +1,59 @@ +package com.sekwah.advancedportals.core.permissions; + +import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; +import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; + +import java.util.List; + +public class PortalPermissions { + + private static final PermissionBuilder PERMISSIONS = new PermissionBuilder("advancedportals"); + + public static final PermissionBuilder BUILD = PERMISSIONS.createChild("build"); + public static final PermissionBuilder CREATE_PORTAL = PERMISSIONS.createChild("createportal"); + public static final PermissionBuilder LANG_UPDATE = PERMISSIONS.createChild("langupdate"); + public static final PermissionBuilder RELOAD = PERMISSIONS.createChild("reload"); + + + /** + * this will not currently build the permissions for the files, but maybe at some point. I'tll just make it easier though. + */ + public static class PermissionBuilder { + private final String permissionTag; + + private final PermissionBuilder parent; + + private List[] children; + + PermissionBuilder(String permissionTag) { + this.permissionTag = permissionTag; + this.parent = null; + } + + PermissionBuilder(String permissionTag, PermissionBuilder parent) { + this.permissionTag = permissionTag; + this.parent = parent; + } + + PermissionBuilder createChild(String permissionTag) { + return new PermissionBuilder(permissionTag, this); + } + + @Override + public String toString() { + if(parent != null) { + return parent + "." + permissionTag; + } else { + return permissionTag; + } + } + + public boolean hasPermission(CommandSenderContainer player) { + return player.hasPermission(this.toString()); + } + + public boolean hasPermission(PlayerContainer player) { + return player.hasPermission(this.toString()); + } + } +}