From fd6002526d6f35d0ac961518fe564f93c5557b0a Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Sun, 9 Apr 2023 23:41:37 -0400 Subject: [PATCH] permission fixes... --- BetterRTPAddons/pom.xml | 4 +- .../BetterRTPAddons/AddonsCommand.java | 5 +- .../BetterRTPAddons/PermissionNodeAddon.java | 24 ++++++++ .../addons/interfaces/InterfaceCommand.java | 7 ++- .../magicStick/cmds/MagicStickCommand.java | 6 +- .../addons/parties/PartyData.java | 2 +- .../addons/parties/cmds/PartyCommand.java | 7 ++- .../addons/portals/cmds/PortalsCommand.java | 7 ++- .../addons/rtpmenu/RTPMenu_SelectWorld.java | 3 +- pom.xml | 2 +- .../BetterRTP/player/commands/RTPCommand.java | 4 +- .../player/commands/types/CmdInfo.java | 3 +- .../player/commands/types/CmdLocation.java | 3 +- .../player/commands/types/CmdWorld.java | 3 +- .../BetterRTP/player/rtp/RTPTeleport.java | 2 +- .../BetterRTP/references/PermissionCheck.java | 60 +++++++++++++++++++ .../BetterRTP/references/PermissionNode.java | 42 ++----------- .../customEvents/RTP_TeleportPostEvent.java | 9 ++- .../references/database/DatabaseHandler.java | 4 +- .../references/depends/DepPlaceholderAPI.java | 3 +- .../references/helpers/HelperRTP.java | 3 +- .../references/helpers/HelperRTP_Check.java | 3 +- .../placeholder/PlaceholderAnalyzer.java | 5 +- 23 files changed, 143 insertions(+), 68 deletions(-) create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PermissionNodeAddon.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionCheck.java diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index 059c843..1cf975e 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTPAddons jar - 1.8.5 + 1.8.6 1.8 @@ -109,7 +109,7 @@ me.SuperRonanCraft BetterRTP - 3.6.3 + 3.6.6 provided diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsCommand.java index aa65894..98afa1f 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsCommand.java @@ -3,6 +3,7 @@ package me.SuperRonanCraft.BetterRTPAddons; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommandsTabable; @@ -65,8 +66,8 @@ public class AddonsCommand implements RTPCommand, RTPCommandHelpable { } @Override - public boolean permission(CommandSender sendi) { - return true; + public PermissionNode permission() { + return PermissionNode.USE; } @Override diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PermissionNodeAddon.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PermissionNodeAddon.java new file mode 100644 index 0000000..c193da0 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PermissionNodeAddon.java @@ -0,0 +1,24 @@ +package me.SuperRonanCraft.BetterRTPAddons; + +import lombok.Getter; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; +import me.SuperRonanCraft.BetterRTP.references.PermissionNode; + +public enum PermissionNodeAddon implements PermissionCheck { + + PORTALS("addon.portals"), + MAGICSTICK("addon.magicstick"), + PARTY("addon.party"), + ; + + @Getter private final String node; + + PermissionNodeAddon(String node) { + this.node = PermissionCheck.getPrefix() + node; + } + + @Override public boolean isDev() { + return false; + } + +} \ No newline at end of file diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/InterfaceCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/InterfaceCommand.java index 98ea828..c03edab 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/InterfaceCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/InterfaceCommand.java @@ -3,6 +3,9 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; +import me.SuperRonanCraft.BetterRTP.references.PermissionNode; +import me.SuperRonanCraft.BetterRTPAddons.PermissionNodeAddon; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Create; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Loc1; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Loc2; @@ -33,8 +36,8 @@ public class InterfaceCommand implements RTPCommand, RTPCommandHelpable { } @Override - public boolean permission(CommandSender sendi) { - return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi); + public PermissionCheck permission() { + return PermissionNodeAddon.PORTALS; } @Override diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java index a9d6152..755c87d 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java @@ -3,6 +3,8 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; +import me.SuperRonanCraft.BetterRTPAddons.PermissionNodeAddon; import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; import org.bukkit.command.CommandSender; @@ -46,8 +48,8 @@ public class MagicStickCommand implements RTPCommand, RTPCommandHelpable { } @Override - public boolean permission(CommandSender sendi) { - return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.magicstick", sendi); + public PermissionCheck permission() { + return PermissionNodeAddon.MAGICSTICK; } @Override diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/PartyData.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/PartyData.java index 8642d06..d07898d 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/PartyData.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/PartyData.java @@ -94,7 +94,7 @@ public class PartyData { String.valueOf(loc.getBlockZ()), loc.getWorld().getName(), 1);*/ - BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, loc, 0, 0, e.getOldLocation(), e.getType()); + BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, loc, e.getWorldPlayer(), 0, e.getOldLocation(), e.getType()); }); //Set cooldowns if (!PermissionNode.BYPASS_COOLDOWN.check(p)) { diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand.java index a13073c..461dc2e 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand.java @@ -1,8 +1,9 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; -import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; +import me.SuperRonanCraft.BetterRTPAddons.PermissionNodeAddon; import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; import org.bukkit.command.CommandSender; @@ -55,8 +56,8 @@ public class PartyCommand implements RTPCommand, RTPCommandHelpable { } @Override - public boolean permission(CommandSender sendi) { - return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi); + public PermissionCheck permission() { + return PermissionNodeAddon.PARTY; } @Override diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java index 6f66579..9e2732e 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java @@ -1,8 +1,9 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; -import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; +import me.SuperRonanCraft.BetterRTPAddons.PermissionNodeAddon; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; import org.bukkit.command.CommandSender; @@ -54,8 +55,8 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable { } @Override - public boolean permission(CommandSender sendi) { - return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi); + public PermissionCheck permission() { + return PermissionNodeAddon.PORTALS; } @Override diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java index ddb17c1..1fe21e2 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.messages.Message; import me.SuperRonanCraft.BetterRTPAddons.util.Files; @@ -26,7 +27,7 @@ public class RTPMenu_SelectWorld { List bukkit_worlds = Bukkit.getWorlds(); List actual_worlds = new ArrayList<>(); for (World world : bukkit_worlds) { - if (pl.getWorlds().containsKey(world.getName()) && PermissionNode.getAWorld(p, world.getName())) + if (pl.getWorlds().containsKey(world.getName()) && PermissionCheck.getAWorld(p, world.getName())) actual_worlds.add(world); } if (actual_worlds.isEmpty() || (actual_worlds.size() <= 1 && !BetterRTP.getInstance().getSettings().isDebug())) { diff --git a/pom.xml b/pom.xml index 8607a46..7255aeb 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.6.5 + 3.6.6 1.8 diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java index 09249d9..192a810 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java @@ -1,5 +1,6 @@ package me.SuperRonanCraft.BetterRTP.player.commands; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; @@ -13,8 +14,7 @@ public interface RTPCommand { List tabComplete(CommandSender sendi, String[] args); - @NotNull - PermissionNode permission(); + @NotNull PermissionCheck permission(); String getName(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java index 6fb9b34..21632c3 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java @@ -6,6 +6,7 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; import me.SuperRonanCraft.BetterRTP.player.rtp.effects.RTPEffect_Particles; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.messages.Message; @@ -185,7 +186,7 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { String _true = "&aTrue", _false = "&bFalse"; info.add("&bRTP info for &7" + world.getName() + (player != null ? " &d(personalized)" : "")); info.add("&7- &eViewing as: &b" + (player != null ? player.getName() : "ADMIN")); - info.add("&7- &6Allowed: " + (player != null ? PermissionNode.getAWorld(player, world.getName()) ? _true : _false : "&cN/A")); + info.add("&7- &6Allowed: " + (player != null ? PermissionCheck.getAWorld(player, world.getName()) ? _true : _false : "&cN/A")); if (pl.getRTP().getDisabledWorlds().contains(world.getName()) && !pl.getRTP().overriden.containsKey(world.getName())) //World disabled info.add("&7- &eDisabled: " + _true); else { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java index dee9365..8c63c7f 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; @@ -91,7 +92,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable { for (Map.Entry location : BetterRTP.getInstance().getRTP().getRTPworldLocations().entrySet()) { boolean add = true; if (needPermission) //Do we need permission to go to this location? - add = PermissionNode.getLocation(sendi, location.getKey()); + add = PermissionCheck.getLocation(sendi, location.getKey()); if (add && needSameWorld) //Can be added and needs same world (if not same world, we don't care to check) add = world == null || location.getValue().getWorld().equals(world); if (add) //Location can be added to list diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java index 19a1386..6abcba2 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info; @@ -45,7 +46,7 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable { for (World w : Bukkit.getWorlds()) { String _wName = w.getName().replace(" ", "_"); if (w.getName().startsWith(args[1]) && !BetterRTP.getInstance().getRTP().getDisabledWorlds().contains(_wName) - && PermissionNode.getAWorld(sendi, _wName)) + && PermissionCheck.getAWorld(sendi, _wName)) list.add(_wName); } } else if (args.length >= 3) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java index 88d2f38..aa705fd 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java @@ -85,7 +85,7 @@ public class RTPTeleport { effects.getTitles().showTitle(RTPEffect_Titles.RTP_TITLE_TYPE.TELEPORT, p, loc, attempts, 0); if (effects.getTitles().sendMsg(RTPEffect_Titles.RTP_TITLE_TYPE.TELEPORT)) sendSuccessMsg(p, p.getName(), loc, wPlayer, true, attempts); - getPl().getServer().getPluginManager().callEvent(new RTP_TeleportPostEvent(p, loc, oldLoc, type)); + getPl().getServer().getPluginManager().callEvent(new RTP_TeleportPostEvent(p, loc, oldLoc, wPlayer, type)); } public boolean beforeTeleportInstant(CommandSender sendi, Player p) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionCheck.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionCheck.java new file mode 100644 index 0000000..47445e1 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionCheck.java @@ -0,0 +1,60 @@ +package me.SuperRonanCraft.BetterRTP.references; + +import lombok.Getter; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; + +public interface PermissionCheck { + + static String getPrefix() { + return "betterrtp."; + } + + default boolean check(CommandSender sendi) { + if (isDev()) + return sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts"); + return BetterRTP.getInstance().getPerms().checkPerm(getNode(), sendi); + } + + static boolean check(CommandSender sendi, String check) { + return BetterRTP.getInstance().getPerms().checkPerm(check, sendi); + } + + static boolean getAWorld(CommandSender sendi, String world) { + return getAWorldText(sendi, world).passed; + } + + static PermissionResult getAWorldText(CommandSender sendi, @NotNull String world) { + String perm = getPrefix() + "world.*"; + if (check(sendi, perm)) { + return new PermissionResult(perm, true); + } else { + perm = getPrefix() + "world." + world; + if (check(sendi, perm)) + return new PermissionResult(perm, true); + } + return new PermissionResult(perm, false); + } + + static boolean getLocation(CommandSender sendi, String location) { + return check(sendi, getPrefix() + "location." + location); + } + + static boolean getPermissionGroup(CommandSender sendi, String group) { + return check(sendi, getPrefix() + "group." + group); + } + + boolean isDev(); + + String getNode(); + + class PermissionResult { + @Getter private final boolean passed; + @Getter private final String string; + PermissionResult(String string, boolean passed) { + this.passed = passed; + this.string = string; + } + } +} \ No newline at end of file diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionNode.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionNode.java index b5db8ac..89479ed 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionNode.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionNode.java @@ -8,7 +8,7 @@ import org.bukkit.World; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; -public enum PermissionNode { +public enum PermissionNode implements PermissionCheck { ADMIN("admin"), USE("use"), @@ -31,45 +31,13 @@ public enum PermissionNode { ; @Getter private final String node; - private static final String prefix = "betterrtp."; PermissionNode(String node) { - this.node = prefix + node; + this.node = PermissionCheck.getPrefix() + node; } - public boolean check(CommandSender sendi) { - if (this == DEVELOPER) - return sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts"); - return BetterRTP.getInstance().getPerms().checkPerm(node, sendi); - } - - public static boolean check(CommandSender sendi, String check) { - return BetterRTP.getInstance().getPerms().checkPerm(check, sendi); - } - - public static boolean getAWorld(CommandSender sendi, String world) { - return getAWorldText(sendi, world).passed; - } - - public static PermissionResult getAWorldText(CommandSender sendi, @NotNull String world) { - String perm = prefix + "world.*"; - if (check(sendi, perm)) { - return new PermissionResult(perm, true); - } else { - perm = prefix + "world." + world; - if (check(sendi, perm)) - return new PermissionResult(perm, true); - } - return new PermissionResult(perm, false); - } - - - public static boolean getLocation(CommandSender sendi, String location) { - return check(sendi, prefix + "location." + location); - } - - public static boolean getPermissionGroup(CommandSender sendi, String group) { - return check(sendi, prefix + "group." + group); + @Override public boolean isDev() { + return this == DEVELOPER; } public static class PermissionResult { @@ -81,4 +49,4 @@ public enum PermissionNode { } } -} +} \ No newline at end of file diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java index 01427cb..3788aee 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java @@ -1,6 +1,7 @@ package me.SuperRonanCraft.BetterRTP.references.customEvents; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -10,12 +11,14 @@ public class RTP_TeleportPostEvent extends RTPEvent { Location loc; Location oldLoc; RTP_TYPE type; + WorldPlayer wPlayer; - public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc, RTP_TYPE type) { + public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc, WorldPlayer wPlayer, RTP_TYPE type) { this.p = p; this.loc = loc; this.oldLoc = oldLoc; this.type = type; + this.wPlayer = wPlayer; } public Player getPlayer() { @@ -33,4 +36,8 @@ public class RTP_TeleportPostEvent extends RTPEvent { public RTP_TYPE getType() { return type; } + + public WorldPlayer getWorldPlayer() { + return wPlayer; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseHandler.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseHandler.java index 3a79486..9ae0165 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseHandler.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseHandler.java @@ -10,14 +10,14 @@ public class DatabaseHandler { @Getter private final DatabasePlayers databasePlayers = new DatabasePlayers(); @Getter private final DatabaseCooldowns databaseCooldowns = new DatabaseCooldowns(); @Getter private final DatabaseQueue databaseQueue = new DatabaseQueue(); - //@Getter private final DatabaseChunkData databaseChunks = new DatabaseChunkData(); + @Getter private final DatabaseChunkData databaseChunks = new DatabaseChunkData(); public void load() { Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> { databasePlayers.load(); databaseCooldowns.load(); databaseQueue.load(); - //databaseChunks.load(); + databaseChunks.load(); }); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java index fb3832b..9946078 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.references.depends; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.*; import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; @@ -103,7 +104,7 @@ public class DepPlaceholderAPI extends PlaceholderExpansion { if (world == null) return "Invalid World"; world = HelperRTP.getActualWorld(player, world); //Permission - if (!PermissionNode.getAWorld(player, world.getName())) + if (!PermissionCheck.getAWorld(player, world.getName())) return BetterRTP.getInstance().getSettings().getPlaceholder_nopermission(); RTPSetupInformation setupInformation = new RTPSetupInformation(world, player, player, true); WorldPlayer pWorld = HelperRTP.getPlayerWorld(setupInformation); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java index 8051869..01314d9 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java @@ -6,6 +6,7 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_ERROR_REQUEST_REASON; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.WarningHandler; import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; @@ -174,7 +175,7 @@ public class HelperRTP { for (Map.Entry permissionGroup : BetterRTP.getInstance().getRTP().getPermissionGroups().entrySet()) { for (Map.Entry worldPermission : permissionGroup.getValue().getWorlds().entrySet()) { if (pWorld.getWorld().equals(worldPermission.getValue().getWorld())) { - if (PermissionNode.getPermissionGroup(pWorld.getPlayer(), permissionGroup.getKey())) { + if (PermissionCheck.getPermissionGroup(pWorld.getPlayer(), permissionGroup.getKey())) { if (group != null) { if (group.getPriority() < worldPermission.getValue().getPriority()) continue; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java index 270f78f..33d4da3 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.references.helpers; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_ERROR_REQUEST_REASON; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; @@ -17,7 +18,7 @@ public class HelperRTP_Check { return RTP_ERROR_REQUEST_REASON.IS_RTPING; } // Not forced and has 'betterrtp.world.' - if (sendi == player && !PermissionNode.getAWorld(sendi, pWorld.getWorld().getName())) { + if (sendi == player && !PermissionCheck.getAWorld(sendi, pWorld.getWorld().getName())) { return RTP_ERROR_REQUEST_REASON.NO_PERMISSION; } // Check disabled worlds diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java index d84982e..42649ab 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.references.messages.placeholder; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperDate; import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; @@ -52,7 +53,7 @@ public class PlaceholderAnalyzer { private static String perm(String str, CommandSender player, String world) { if (str.contains(Placeholders.PERMISSION.name)) - str = str.replace(Placeholders.PERMISSION.name, PermissionNode.getAWorldText(player, world).getString()); + str = str.replace(Placeholders.PERMISSION.name, PermissionCheck.getAWorldText(player, world).getString()); return str; } @@ -125,7 +126,7 @@ public class PlaceholderAnalyzer { return str; } - private static String permNode(String str, PermissionNode perm) { + private static String permNode(String str, PermissionCheck perm) { if (str.contains(Placeholders.PERMISSION.name)) str = str.replace(Placeholders.PERMISSION.name, perm.getNode()); return str;