permission check revamp

This commit is contained in:
SuperRonanCraft 2023-03-29 00:26:05 -04:00
parent 06453db90c
commit 9c56ec17ea
23 changed files with 104 additions and 54 deletions

View File

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

View File

@ -37,7 +37,7 @@ public class Commands {
if (args != null && args.length > 0) {
for (RTPCommand cmd : commands) {
if (cmd.getName().equalsIgnoreCase(args[0])) {
if (cmd.permission(sendi)) {
if (cmd.permission().check(sendi)) {
RTP_CommandEvent event = new RTP_CommandEvent(sendi, cmd);
//Command Event
Bukkit.getServer().getPluginManager().callEvent(event);
@ -67,13 +67,13 @@ public class Commands {
if (args.length == 1) {
for (RTPCommand cmd : commands) {
if (cmd.getName().toLowerCase().startsWith(args[0].toLowerCase()))
if (cmd.permission(sendi))
if (cmd.permission().check(sendi))
list.add(cmd.getName().toLowerCase());
}
} else if (args.length > 1) {
for (RTPCommand cmd : commands) {
if (cmd.getName().equalsIgnoreCase(args[0]))
if (cmd.permission(sendi)) {
if (cmd.permission().check(sendi)) {
List<String> _cmdlist = cmd.tabComplete(sendi, args);
if (_cmdlist != null)
list.addAll(_cmdlist);

View File

@ -1,6 +1,9 @@
package me.SuperRonanCraft.BetterRTP.player.commands;
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
@ -10,7 +13,8 @@ public interface RTPCommand {
List<String> tabComplete(CommandSender sendi, String[] args);
boolean permission(CommandSender sendi);
@NotNull
PermissionNode permission();
String getName();

View File

@ -10,6 +10,7 @@ import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesUsage;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@ -35,8 +36,8 @@ public class CmdBiome implements RTPCommand, RTPCommandHelpable {
return list;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.BIOME.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.BIOME;
}
public void usage(CommandSender sendi, String label) {

View File

@ -1,8 +1,10 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.RandomLocation;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@ -20,8 +22,9 @@ public class CmdDeveloper implements RTPCommand {
return null;
}
public boolean permission(CommandSender sendi) {
return sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts");
@NotNull public PermissionNode permission() {
return PermissionNode.DEVELOPER;
//sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts");
}
public void usage(CommandSender sendi, String label) {

View File

@ -17,6 +17,7 @@ import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@ -272,9 +273,9 @@ public class CmdEdit implements RTPCommand, RTPCommandHelpable { //Edit a worlds
return list;
}
@Override
public boolean permission(CommandSender sendi) {
return PermissionNode.EDIT.check(sendi);
@NotNull @Override
public PermissionNode permission() {
return PermissionNode.EDIT;
}
private void usage(CommandSender sendi, String label, RTP_CMD_EDIT type) {

View File

@ -3,9 +3,11 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types;
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.Message_RTP;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collections;
@ -22,7 +24,7 @@ public class CmdHelp implements RTPCommand, RTPCommandHelpable {
list.add(MessagesHelp.PREFIX.get());
list.add(MessagesHelp.MAIN.get());
for (RTPCommand cmd : BetterRTP.getInstance().getCmd().commands)
if (cmd.permission(sendi))
if (cmd.permission().check(sendi))
if (cmd instanceof RTPCommandHelpable) {
String help = ((RTPCommandHelpable) cmd).getHelp();
list.add(help);
@ -35,8 +37,8 @@ public class CmdHelp implements RTPCommand, RTPCommandHelpable {
}
public boolean permission(CommandSender sendi) {
return true;
@NotNull public PermissionNode permission() {
return PermissionNode.USE;
}
@Override

View File

@ -26,6 +26,7 @@ import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.NotNull;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@ -286,7 +287,7 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable {
return info;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.INFO.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.INFO;
}
}

View File

@ -15,6 +15,7 @@ import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
@ -74,8 +75,8 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
return list;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.LOCATION.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.LOCATION;
}
public void usage(CommandSender sendi, String label) {

View File

@ -12,6 +12,7 @@ import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@ -63,8 +64,8 @@ public class CmdLogger implements RTPCommand {
return null;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.ADMIN.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.ADMIN;
}
public void usage(CommandSender sendi, String label) {

View File

@ -17,6 +17,7 @@ import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@ -62,14 +63,14 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable {
if (w.getName().startsWith(args[2]) && !BetterRTP.getInstance().getRTP().getDisabledWorlds().contains(w.getName()))
list.add(w.getName());
} else if (args.length > 3) {
if (RTPCommandType.BIOME.getCmd().permission(sendi))
if (RTPCommandType.BIOME.getCmd().permission().check(sendi))
HelperRTP_Info.addBiomes(list, args);
}
return list;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.RTP_OTHER.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.RTP_OTHER;
}
public void usage(CommandSender sendi, String label) {

View File

@ -22,6 +22,7 @@ import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@ -121,7 +122,7 @@ public class CmdQueue implements RTPCommand {
return info;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.ADMIN.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.ADMIN;
}
}

View File

@ -6,6 +6,7 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@ -23,8 +24,8 @@ public class CmdReload implements RTPCommand, RTPCommandHelpable {
return null;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.RELOAD.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.RELOAD;
}
@Override

View File

@ -9,6 +9,7 @@ import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@ -29,8 +30,8 @@ public class CmdSettings implements RTPCommand, RTPCommandHelpable {
return null;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.SETTINGS.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.SETTINGS;
}
@Override

View File

@ -2,11 +2,13 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@ -30,9 +32,9 @@ public class CmdTeleport implements RTPCommand {
return null;
}
@Override
public boolean permission(CommandSender sendi) {
return true;
@NotNull @Override
public PermissionNode permission() {
return PermissionNode.USE;
}
@Override

View File

@ -8,6 +8,7 @@ import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@ -32,9 +33,9 @@ public class CmdTest implements RTPCommand, RTPCommandHelpable {
return null;
}
@Override
public boolean permission(CommandSender sendi) {
return PermissionNode.ADMIN.check(sendi);
@NotNull @Override
public PermissionNode permission() {
return PermissionNode.ADMIN;
}
@Override

View File

@ -1,13 +1,13 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
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.Message;
import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@ -25,8 +25,8 @@ public class CmdVersion implements RTPCommand, RTPCommandHelpable {
return null;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.VERSION.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.VERSION;
}
@Override

View File

@ -13,6 +13,7 @@ import me.SuperRonanCraft.BetterRTP.references.messages.MessagesUsage;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.kingdoms.commands.general.misc.CommandTeleport;
import java.util.ArrayList;
@ -48,14 +49,14 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable {
list.add(_wName);
}
} else if (args.length >= 3) {
if (RTPCommandType.BIOME.getCmd().permission(sendi))
if (RTPCommandType.BIOME.getCmd().permission().check(sendi))
HelperRTP_Info.addBiomes(list, args);
}
return list;
}
public boolean permission(CommandSender sendi) {
return PermissionNode.WORLD.check(sendi);
@NotNull public PermissionNode permission() {
return PermissionNode.WORLD;
}
public void usage(CommandSender sendi, String label) {

View File

@ -5,7 +5,7 @@ import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore;
public enum RTP_ERROR_REQUEST_REASON {
IS_RTPING(MessagesCore.ALREADY),
NO_PERMISSION(MessagesCore.NOPERMISSION),
NO_PERMISSION(MessagesCore.NOPERMISSION_WORLD),
WORLD_DISABLED(MessagesCore.DISABLED_WORLD),
COOLDOWN(MessagesCore.COOLDOWN),
PRICE_ECONOMY(MessagesCore.FAILED_PRICE),

View File

@ -1,9 +1,12 @@
package me.SuperRonanCraft.BetterRTP.references;
import com.griefdefender.api.permission.PermissionResult;
import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
public enum PermissionNode {
@ -24,6 +27,7 @@ public enum PermissionNode {
VERSION("version"),
EDIT("edit"),
LOCATION("location"),
DEVELOPER("DEVELOPER_PERM"),
;
private final String node;
@ -34,6 +38,8 @@ public enum PermissionNode {
}
public boolean check(CommandSender sendi) {
if (this == DEVELOPER)
return sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts");
return BetterRTP.getInstance().getPerms().checkPerm(node, sendi);
}
@ -42,15 +48,19 @@ public enum PermissionNode {
}
public static boolean getAWorld(CommandSender sendi, String world) {
if (check(sendi, prefix + "world.*"))
return true;
else if (world == null) {
for (World w : Bukkit.getWorlds())
if (check(sendi, prefix + "world." + w.getName()))
return true;
} else
return check(sendi, prefix + "world." + world);
return false;
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);
}
@ -62,4 +72,13 @@ public enum PermissionNode {
return check(sendi, prefix + "group." + group);
}
public static 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

@ -1,6 +1,7 @@
package me.SuperRonanCraft.BetterRTP.references.messages.placeholder;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperDate;
import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
@ -37,9 +38,16 @@ public class PlaceholderAnalyzer {
private static String worldPlayer(WorldPlayer pWorld, String str) {
str = ints(str, pWorld.getPrice());
str = world(str, pWorld.getWorld());
str = perm(str, pWorld.getPlayer(), pWorld.getWorld().getName());
return player(str, pWorld.getPlayer());
}
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());
return str;
}
private static String string(String str, String info) {
if (str.contains(Placeholders.COMMAND.name))
str = str.replace(Placeholders.COMMAND.name, info);

View File

@ -11,6 +11,7 @@ public enum Placeholders {
LOCATION_Z("z"),
//World
WORLD("world"),
PERMISSION("permission"),
//ints
ATTEMPTS("attempts"),
PRICE("price"),

View File

@ -17,7 +17,7 @@ Messages:
Reload: '&eConfig reloaded successfully!'
NoPermission:
Basic: '&cSorry! &7You don''t have permission to use this command!'
World: '&cSorry! &7You are not allowed rtp in the %world% world!'
World: '&cSorry! &7You are not allowed rtp in the %world% world! &8Permission: %permission%'
DisabledWorld: '&cDisabled World %world%! &7Could not RTP!'
Cooldown: '&cSorry! &7You can''t rtp for another &c%time%&7!'
Locked: '&cSorry! &7You''ve used up all your RTP''s!'