permission fixes...

This commit is contained in:
SuperRonanCraft 2023-04-09 23:41:37 -04:00
parent 32bc0d6e36
commit fd6002526d
23 changed files with 143 additions and 68 deletions

View File

@ -7,7 +7,7 @@
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTPAddons</artifactId>
<packaging>jar</packaging>
<version>1.8.5</version>
<version>1.8.6</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
@ -109,7 +109,7 @@
<dependency>
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<version>3.6.3</version>
<version>3.6.6</version>
<scope>provided</scope>
</dependency>
<!-- ProtocolLib -->

View File

@ -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

View File

@ -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;
}
}

View File

@ -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

View File

@ -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

View File

@ -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)) {

View File

@ -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

View File

@ -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

View File

@ -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<World> bukkit_worlds = Bukkit.getWorlds();
List<World> 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())) {

View File

@ -7,7 +7,7 @@
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<packaging>jar</packaging>
<version>3.6.5</version>
<version>3.6.6</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>

View File

@ -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<String> tabComplete(CommandSender sendi, String[] args);
@NotNull
PermissionNode permission();
@NotNull PermissionCheck permission();
String getName();

View File

@ -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 {

View File

@ -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<String, RTPWorld> 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

View File

@ -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) {

View File

@ -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) {

View File

@ -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;
}
}
}

View File

@ -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 {
}
}
}
}

View File

@ -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;
}
}

View File

@ -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();
});
}

View File

@ -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);

View File

@ -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<String, PermissionGroup> permissionGroup : BetterRTP.getInstance().getRTP().getPermissionGroups().entrySet()) {
for (Map.Entry<String, WorldPermissionGroup> 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;

View File

@ -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.<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

View File

@ -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;