mOre FEATURES!! (+fixes)

This commit is contained in:
9378062 2022-04-08 10:17:39 -04:00
parent 1c4f43187d
commit 5f7a89d7cd
2 changed files with 24 additions and 5 deletions

View File

@ -4,9 +4,13 @@ import dev.plex.Plex;
import dev.plex.rank.enums.Rank; import dev.plex.rank.enums.Rank;
import dev.plex.util.PlexUtils; import dev.plex.util.PlexUtils;
import lombok.Getter; import lombok.Getter;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.command.PluginCommandYamlParser;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -73,15 +77,30 @@ public class CommandBlockerManager
} }
else if (rawType.equals("m")) else if (rawType.equals("m"))
{ {
String blockedArgs = regexOrMatch.substring(regexOrMatch.indexOf(' ') + 1); int ind = regexOrMatch.indexOf(' ');
PluginCommand pluginCommand = Plex.get().getServer().getPluginCommand(regexOrMatch.substring(0, regexOrMatch.indexOf(' '))); if (ind == -1 && regexOrMatch.endsWith(":"))
{
//block all commands from this plugin for the specified rank
Plugin plugin = Arrays.stream(Plex.get().getServer().getPluginManager().getPlugins()).findAny().orElse(null);
if (plugin != null)
{
List<Command> commandList = PluginCommandYamlParser.parse(plugin);
for (Command command : commandList)
{
blockedCommands.add(new MatchCommand(command.getName(), rank, message));
}
}
}
String blockedArgs = ind == -1 ? "" : regexOrMatch.substring(ind + 1);
if (!blockedArgs.isEmpty()) blockedArgs = " " + blockedArgs; // necessary in case no args
PluginCommand pluginCommand = Plex.get().getServer().getPluginCommand(ind == -1 ? regexOrMatch : regexOrMatch.substring(0, ind));
if (pluginCommand != null) if (pluginCommand != null)
{ {
blockedCommands.add(new MatchCommand(pluginCommand.getName() + " " + blockedArgs, rank, message)); blockedCommands.add(new MatchCommand(pluginCommand.getName() + blockedArgs, rank, message));
List<String> aliases = pluginCommand.getAliases(); List<String> aliases = pluginCommand.getAliases();
for (String alias : aliases) for (String alias : aliases)
{ {
blockedCommands.add(new MatchCommand(alias + " " + blockedArgs, rank, message)); blockedCommands.add(new MatchCommand(alias + blockedArgs, rank, message));
} }
} }
} }

View File

@ -36,7 +36,7 @@ public class CommandListener extends PlexListener
return; return;
} }
Player player = event.getPlayer(); Player player = event.getPlayer();
String message = event.getMessage().substring(1); String message = event.getMessage().substring(1).stripLeading(); // stripLeading() is VITAL for workaround blocking (/ minecraft:summon)
for (BaseCommand blockedCommand : plugin.getCommandBlockerManager().getBlockedCommands()) { for (BaseCommand blockedCommand : plugin.getCommandBlockerManager().getBlockedCommands()) {
if (DataUtils.getPlayer(player.getUniqueId()).getRankFromString().ordinal() > blockedCommand.getRank().ordinal()) if (DataUtils.getPlayer(player.getUniqueId()).getRankFromString().ordinal() > blockedCommand.getRank().ordinal())
{ {