Begin work on implementing ranks

This commit is contained in:
2022-01-29 16:35:48 -06:00
parent 9043005d62
commit 86f3fd8d29
14 changed files with 118 additions and 27 deletions

View File

@ -13,6 +13,7 @@ import dev.plex.command.exception.PlayerNotFoundException;
import dev.plex.command.source.RequiredCommandSource;
import dev.plex.player.PlexPlayer;
import dev.plex.rank.enums.Rank;
import dev.plex.util.PlexLog;
import dev.plex.util.PlexUtils;
import java.util.Arrays;
import java.util.UUID;
@ -85,9 +86,27 @@ public abstract class PlexCommand extends Command
Player player = (Player)sender;
PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(player.getUniqueId());
if (!plexPlayer.getRankFromString().isAtLeast(getLevel()))
if (plugin.getRanksOrPermissions().equalsIgnoreCase("ranks"))
{
send(sender, tl("noPermissionRank", ChatColor.stripColor(getLevel().getLoginMSG())));
if (!plexPlayer.getRankFromString().isAtLeast(getLevel()))
{
send(sender, tl("noPermissionRank", ChatColor.stripColor(getLevel().getLoginMSG())));
return true;
}
}
else if (plugin.getRanksOrPermissions().equalsIgnoreCase("permissions"))
{
if (!player.hasPermission(perms.permission()))
{
send(sender, tl("noPermissionNode", perms.permission()));
return true;
}
}
else
{
PlexLog.error("Neither permissions or ranks were selected to be used in the configuration file!");
send(sender, "There is a server misconfiguration. Please alert a developer or the owner");
return true;
}
}
@ -146,6 +165,21 @@ public abstract class PlexCommand extends Command
audience.sendMessage(component);
}
protected void checkRank(Player player, Rank rank, String permission)
{
PlexPlayer plexPlayer = getPlexPlayer(player);
if (plugin.getRanksOrPermissions().equalsIgnoreCase("ranks"))
{
send(player, "test ranks");
}
else if (plugin.getRanksOrPermissions().equalsIgnoreCase("permissions"))
{
if (!player.hasPermission(permission))
{
send(player, "test permissions");
}
}
}
protected boolean isAdmin(PlexPlayer plexPlayer)
{
@ -159,13 +193,13 @@ public abstract class PlexCommand extends Command
return true;
}
PlexPlayer plexPlayer = getPlexPlayer(player);
return Plex.get().getRankManager().isAdmin(plexPlayer);
return plugin.getRankManager().isAdmin(plexPlayer);
}
protected boolean isAdmin(String name)
{
PlexPlayer plexPlayer = DataUtils.getPlayer(name);
return Plex.get().getRankManager().isAdmin(plexPlayer);
return plugin.getRankManager().isAdmin(plexPlayer);
}
protected boolean isSeniorAdmin(CommandSender sender)
@ -175,7 +209,7 @@ public abstract class PlexCommand extends Command
return true;
}
PlexPlayer plexPlayer = getPlexPlayer(player);
return Plex.get().getRankManager().isSeniorAdmin(plexPlayer);
return plugin.getRankManager().isSeniorAdmin(plexPlayer);
}
protected UUID getUUID(CommandSender sender)

View File

@ -0,0 +1,10 @@
package dev.plex.command.annotation;
import dev.plex.rank.enums.Rank;
public @interface CheckPermission
{
String permission() default "";
Rank rank() default Rank.IMPOSTOR;
}

View File

@ -4,6 +4,7 @@ import dev.plex.command.source.RequiredCommandSource;
import dev.plex.rank.enums.Rank;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import org.bukkit.permissions.Permission;
@Retention(RetentionPolicy.RUNTIME)
public @interface CommandPermissions
@ -11,4 +12,6 @@ public @interface CommandPermissions
Rank level() default Rank.IMPOSTOR;
RequiredCommandSource source() default RequiredCommandSource.ANY;
String permission() default "plex.donotgivethispermission"; // No idea what to put here
}

View File

@ -11,11 +11,10 @@ import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.ADMIN, source = RequiredCommandSource.IN_GAME)
@CommandPermissions(level = Rank.ADMIN, permission = "plex.adminworld", source = RequiredCommandSource.IN_GAME)
@CommandParameters(name = "adminworld", aliases = "aw", description = "Teleport to the adminworld")
public class AdminworldCMD extends PlexCommand
{
@Override
public Component execute(CommandSender sender, String[] args)
{

View File

@ -0,0 +1,28 @@
package dev.plex.command.impl;
import dev.plex.command.PlexCommand;
import dev.plex.command.annotation.CommandParameters;
import dev.plex.command.annotation.CommandPermissions;
import dev.plex.rank.enums.Rank;
import dev.plex.util.PlexUtils;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandParameters(name = "deopall", description = "Deop everyone on the server", aliases = "deopa")
@CommandPermissions(level = Rank.ADMIN)
public class DeopAllCMD extends PlexCommand
{
@Override
public Component execute(CommandSender sender, String[] args)
{
for (Player player : Bukkit.getOnlinePlayers())
{
player.setOp(false);
}
PlexUtils.broadcast(tl("deoppedAllPlayers", sender.getName()));
return null;
}
}

View File

@ -12,7 +12,7 @@ import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandParameters(name = "list", description = "Freeze a player on the server", usage = "/<command> <player>")
@CommandParameters(name = "list", description = "Show a list of all online players", usage = "/<command> <player>")
@CommandPermissions(level = Rank.OP)
public class ListCMD extends PlexCommand
{

View File

@ -14,7 +14,6 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.ADMIN)
public class OpAllCMD extends PlexCommand
{
@Override
public Component execute(CommandSender sender, String[] args)
{

View File

@ -13,11 +13,11 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.OP, source = RequiredCommandSource.IN_GAME)
@CommandParameters(name = "rank", description = "Displays your rank")
public class RankCMD extends PlexCommand {
public class RankCMD extends PlexCommand
{
@Override
public Component execute(CommandSender sender, String[] args) {
return tl("yourRank", getPlexPlayer((Player) sender).getRank());
public Component execute(CommandSender sender, String[] args)
{
return tl("yourRank", getPlexPlayer((Player)sender).getRank());
}
}