mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-23 01:27:37 +00:00
fix /tag
fix /notes fix /rank switch /admin to a datautils check instead of using ashcon api
This commit is contained in:
parent
81d3cc8dde
commit
8dfaaf7a8c
12
src/main/java/dev/plex/cache/DataUtils.java
vendored
12
src/main/java/dev/plex/cache/DataUtils.java
vendored
@ -29,6 +29,18 @@ public class DataUtils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean hasPlayedBefore(String username)
|
||||||
|
{
|
||||||
|
if (Plex.get().getStorageType() == StorageType.MONGODB)
|
||||||
|
{
|
||||||
|
return Plex.get().getMongoPlayerData().exists(username);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Plex.get().getSqlPlayerData().exists(username);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a player from cache or from the database
|
* Gets a player from cache or from the database
|
||||||
*
|
*
|
||||||
|
@ -43,6 +43,14 @@ public class MongoPlayerData
|
|||||||
return query.first() != null;
|
return query.first() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean exists(String username)
|
||||||
|
{
|
||||||
|
Query<PlexPlayer> query = datastore.find(PlexPlayer.class)
|
||||||
|
.filter(Filters.regex("name").caseInsensitive().pattern(username));
|
||||||
|
|
||||||
|
return query.first() != null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the player from cache or from mongo's database
|
* Gets the player from cache or from mongo's database
|
||||||
*
|
*
|
||||||
|
@ -42,6 +42,22 @@ public class SQLPlayerData
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean exists(String username)
|
||||||
|
{
|
||||||
|
try (Connection con = Plex.get().getSqlConnection().getCon())
|
||||||
|
{
|
||||||
|
PreparedStatement statement = con.prepareStatement("SELECT * FROM `players` WHERE name=?");
|
||||||
|
statement.setString(1, username);
|
||||||
|
ResultSet set = statement.executeQuery();
|
||||||
|
return set.next();
|
||||||
|
}
|
||||||
|
catch (SQLException throwables)
|
||||||
|
{
|
||||||
|
throwables.printStackTrace();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the player from cache or from the SQL database
|
* Gets the player from cache or from the SQL database
|
||||||
*
|
*
|
||||||
|
@ -47,6 +47,7 @@ public class SQLNotes
|
|||||||
catch (SQLException e)
|
catch (SQLException e)
|
||||||
{
|
{
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
return notes;
|
||||||
}
|
}
|
||||||
return notes;
|
return notes;
|
||||||
});
|
});
|
||||||
|
@ -50,6 +50,7 @@ public class SQLPunishment
|
|||||||
catch (SQLException e)
|
catch (SQLException e)
|
||||||
{
|
{
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
return punishments;
|
||||||
}
|
}
|
||||||
return punishments;
|
return punishments;
|
||||||
});
|
});
|
||||||
|
@ -2,13 +2,14 @@ package dev.plex.command.blocking;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class BlockedCommand
|
public class BlockedCommand
|
||||||
{
|
{
|
||||||
private String message;
|
private Component message;
|
||||||
private String requiredLevel;
|
private String requiredLevel;
|
||||||
private String regex;
|
private String regex;
|
||||||
private String command;
|
private String command;
|
||||||
|
@ -54,18 +54,18 @@ public class AdminCMD extends PlexCommand
|
|||||||
throw new ConsoleOnlyException();
|
throw new ConsoleOnlyException();
|
||||||
}
|
}
|
||||||
|
|
||||||
UUID targetUUID = PlexUtils.getFromName(args[1]);
|
/*UUID targetUUID = PlexUtils.getFromName(args[1]);
|
||||||
|
|
||||||
if (targetUUID != null)
|
if (targetUUID != null)
|
||||||
{
|
{
|
||||||
PlexLog.debug("Admin Adding UUID: " + targetUUID);
|
PlexLog.debug("Admin Adding UUID: " + targetUUID);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
if (targetUUID == null || !DataUtils.hasPlayedBefore(targetUUID))
|
if (!DataUtils.hasPlayedBefore(args[1]))
|
||||||
{
|
{
|
||||||
throw new PlayerNotFoundException();
|
throw new PlayerNotFoundException();
|
||||||
}
|
}
|
||||||
PlexPlayer plexPlayer = DataUtils.getPlayer(targetUUID);
|
PlexPlayer plexPlayer = DataUtils.getPlayer(args[1]);
|
||||||
|
|
||||||
if (isAdmin(plexPlayer))
|
if (isAdmin(plexPlayer))
|
||||||
{
|
{
|
||||||
@ -87,13 +87,13 @@ public class AdminCMD extends PlexCommand
|
|||||||
throw new ConsoleOnlyException();
|
throw new ConsoleOnlyException();
|
||||||
}
|
}
|
||||||
|
|
||||||
UUID targetUUID = PlexUtils.getFromName(args[1]);
|
// UUID targetUUID = PlexUtils.getFromName(args[1]);
|
||||||
|
|
||||||
if (targetUUID == null || !DataUtils.hasPlayedBefore(targetUUID))
|
if (!DataUtils.hasPlayedBefore(args[1]))
|
||||||
{
|
{
|
||||||
throw new PlayerNotFoundException();
|
throw new PlayerNotFoundException();
|
||||||
}
|
}
|
||||||
PlexPlayer plexPlayer = DataUtils.getPlayer(targetUUID);
|
PlexPlayer plexPlayer = DataUtils.getPlayer(args[1]);
|
||||||
|
|
||||||
if (!isAdmin(plexPlayer))
|
if (!isAdmin(plexPlayer))
|
||||||
{
|
{
|
||||||
@ -116,9 +116,9 @@ public class AdminCMD extends PlexCommand
|
|||||||
throw new ConsoleOnlyException();
|
throw new ConsoleOnlyException();
|
||||||
}
|
}
|
||||||
|
|
||||||
UUID targetUUID = PlexUtils.getFromName(args[1]);
|
// UUID targetUUID = PlexUtils.getFromName(args[1]);
|
||||||
|
|
||||||
if (targetUUID == null || !DataUtils.hasPlayedBefore(targetUUID))
|
if (!DataUtils.hasPlayedBefore(args[1]))
|
||||||
{
|
{
|
||||||
throw new PlayerNotFoundException();
|
throw new PlayerNotFoundException();
|
||||||
}
|
}
|
||||||
@ -135,7 +135,7 @@ public class AdminCMD extends PlexCommand
|
|||||||
return messageComponent("rankMustBeHigherThanAdmin");
|
return messageComponent("rankMustBeHigherThanAdmin");
|
||||||
}
|
}
|
||||||
|
|
||||||
PlexPlayer plexPlayer = DataUtils.getPlayer(targetUUID);
|
PlexPlayer plexPlayer = DataUtils.getPlayer(args[1]);
|
||||||
|
|
||||||
if (!isAdmin(plexPlayer))
|
if (!isAdmin(plexPlayer))
|
||||||
{
|
{
|
||||||
|
@ -94,6 +94,10 @@ public class NotesCMD extends PlexCommand
|
|||||||
}
|
}
|
||||||
case "remove":
|
case "remove":
|
||||||
{
|
{
|
||||||
|
if (args.length < 3)
|
||||||
|
{
|
||||||
|
return usage();
|
||||||
|
}
|
||||||
int id;
|
int id;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -107,18 +111,20 @@ public class NotesCMD extends PlexCommand
|
|||||||
{
|
{
|
||||||
plugin.getSqlNotes().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
plugin.getSqlNotes().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||||
{
|
{
|
||||||
|
boolean deleted = false;
|
||||||
for (Note note : notes)
|
for (Note note : notes)
|
||||||
{
|
{
|
||||||
if (note.getId() == id)
|
if (note.getId() == id)
|
||||||
{
|
{
|
||||||
plugin.getSqlNotes().deleteNote(id, plexPlayer.getUuid()).whenComplete((notes1, ex1) ->
|
plugin.getSqlNotes().deleteNote(id, plexPlayer.getUuid()).whenComplete((notes1, ex1) ->
|
||||||
send(sender, Component.text("Removed note with ID: " + id).color(NamedTextColor.GREEN)));
|
send(sender, Component.text("Removed note with ID: " + id).color(NamedTextColor.GREEN)));
|
||||||
|
deleted = true;
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
if (!deleted)
|
||||||
{
|
{
|
||||||
send(sender, mmString("<red>A note with this ID could not be found"));
|
send(sender, mmString("<red>A note with this ID could not be found"));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
plexPlayer.getNotes().removeIf(note -> note.getId() == id);
|
plexPlayer.getNotes().removeIf(note -> note.getId() == id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -130,6 +136,7 @@ public class NotesCMD extends PlexCommand
|
|||||||
}
|
}
|
||||||
return mmString("<red>A note with this ID could not be found");
|
return mmString("<red>A note with this ID could not be found");
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
case "clear":
|
case "clear":
|
||||||
{
|
{
|
||||||
@ -167,7 +174,7 @@ public class NotesCMD extends PlexCommand
|
|||||||
for (Note note : notes)
|
for (Note note : notes)
|
||||||
{
|
{
|
||||||
Component noteLine = Component.text(note.getId() + " - Written by: " + DataUtils.getPlayer(note.getWrittenBy()).getName() + " on " + DATE_FORMAT.format(note.getTimestamp())).color(NamedTextColor.YELLOW).decoration(TextDecoration.ITALIC, false);
|
Component noteLine = Component.text(note.getId() + " - Written by: " + DataUtils.getPlayer(note.getWrittenBy()).getName() + " on " + DATE_FORMAT.format(note.getTimestamp())).color(NamedTextColor.YELLOW).decoration(TextDecoration.ITALIC, false);
|
||||||
noteLine = noteLine.append(Component.text(note.getNote())).color(NamedTextColor.GOLD).decoration(TextDecoration.ITALIC, true);
|
noteLine = noteLine.append(Component.space()).append(Component.text(note.getNote())).color(NamedTextColor.YELLOW).decoration(TextDecoration.ITALIC, true);
|
||||||
noteList.set(noteList.get().append(Component.newline()));
|
noteList.set(noteList.get().append(Component.newline()));
|
||||||
noteList.set(noteList.get().append(noteLine));
|
noteList.set(noteList.get().append(noteLine));
|
||||||
}
|
}
|
||||||
|
@ -33,14 +33,14 @@ public class RankCMD extends PlexCommand
|
|||||||
if (!(playerSender == null))
|
if (!(playerSender == null))
|
||||||
{
|
{
|
||||||
Rank rank = getPlexPlayer(playerSender).getRankFromString();
|
Rank rank = getPlexPlayer(playerSender).getRankFromString();
|
||||||
return messageComponent("yourRank", rank.getReadable());
|
return messageComponent("yourRank", rank.isAtLeast(Rank.ADMIN) && !getPlexPlayer(playerSender).isAdminActive() ? (playerSender.isOp() ? Rank.OP.getReadable() : Rank.NONOP.getReadable()) : rank.getReadable());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Player player = getNonNullPlayer(args[0]);
|
Player player = getNonNullPlayer(args[0]);
|
||||||
Rank rank = getPlexPlayer(player).getRankFromString();
|
Rank rank = getPlexPlayer(player).getRankFromString();
|
||||||
return messageComponent("otherRank", player.getName(), rank.getReadable());
|
return messageComponent("otherRank", player.getName(), rank.isAtLeast(Rank.ADMIN) && !getPlexPlayer(player).isAdminActive() ? (player.isOp() ? Rank.OP.getReadable() : Rank.NONOP.getReadable()) : rank.getReadable());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ public class TagCMD extends PlexCommand
|
|||||||
PlexPlayer plexTarget = DataUtils.getPlayer(target.getUniqueId());
|
PlexPlayer plexTarget = DataUtils.getPlayer(target.getUniqueId());
|
||||||
plexTarget.setPrefix("");
|
plexTarget.setPrefix("");
|
||||||
DataUtils.update(plexTarget);
|
DataUtils.update(plexTarget);
|
||||||
messageComponent("otherPrefixCleared");
|
return messageComponent("otherPrefixCleared", target.getName());
|
||||||
}
|
}
|
||||||
return usage();
|
return usage();
|
||||||
}
|
}
|
||||||
|
@ -45,22 +45,16 @@ public class CommandListener extends PlexListener
|
|||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
PlexPlayer plexPlayer = DataUtils.getPlayer(player.getUniqueId());
|
PlexPlayer plexPlayer = DataUtils.getPlayer(player.getUniqueId());
|
||||||
String commandName = StringUtils.normalizeSpace(event.getMessage()).split(" ")[0].replace("/", "");
|
String commandName = StringUtils.normalizeSpace(event.getMessage()).split(" ")[0].replaceFirst("/", "");
|
||||||
String arguments = StringUtils.normalizeSpace(StringUtils.normalizeSpace(event.getMessage()).replace(event.getMessage().split(" ")[0], ""));
|
String arguments = StringUtils.normalizeSpace(StringUtils.normalizeSpace(event.getMessage()).replace(event.getMessage().split(" ")[0], ""));
|
||||||
PlexLog.debug("Checking Command: {0} with args {1}", commandName, arguments);
|
PlexLog.debug("Checking Command: {0} with args {1}", commandName, arguments);
|
||||||
AtomicReference<BlockedCommand> cmdRef = new AtomicReference<>();
|
AtomicReference<BlockedCommand> cmdRef = new AtomicReference<>();
|
||||||
PlexLog.debug("Blocked Commands List: " + CommandBlockerService.getBLOCKED_COMMANDS().size());
|
PlexLog.debug("Blocked Commands List: " + CommandBlockerService.getBLOCKED_COMMANDS().size());
|
||||||
CommandBlockerService.getBLOCKED_COMMANDS().stream().filter(blockedCommand -> blockedCommand.getCommand() != null).forEach(blockedCommand ->
|
CommandBlockerService.getBLOCKED_COMMANDS().stream().filter(blockedCommand -> blockedCommand.getCommand() != null).forEach(blockedCommand ->
|
||||||
{
|
{
|
||||||
/*if (event.getMessage().replace("/", "").toLowerCase(Locale.ROOT).startsWith(blockedCommand.getCommand().toLowerCase(Locale.ROOT)))
|
|
||||||
{
|
|
||||||
PlexLog.debug("Used blocked command exactly matched");
|
|
||||||
cmdRef.set(blockedCommand);
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
boolean matches = true;
|
boolean matches = true;
|
||||||
String[] args = blockedCommand.getCommand().split(" ");
|
String[] args = blockedCommand.getCommand().split(" ");
|
||||||
String[] cmdArgs = event.getMessage().replace("/", "").split(" ");
|
String[] cmdArgs = event.getMessage().replaceFirst("/", "").split(" ");
|
||||||
for (int i = 0; i < args.length; i++)
|
for (int i = 0; i < args.length; i++)
|
||||||
{
|
{
|
||||||
if (i+1 > cmdArgs.length)
|
if (i+1 > cmdArgs.length)
|
||||||
@ -99,10 +93,10 @@ public class CommandListener extends PlexListener
|
|||||||
if (blockedCommand.getRegex() != null)
|
if (blockedCommand.getRegex() != null)
|
||||||
{
|
{
|
||||||
Pattern pattern = Pattern.compile(blockedCommand.getRegex(), Pattern.CASE_INSENSITIVE);
|
Pattern pattern = Pattern.compile(blockedCommand.getRegex(), Pattern.CASE_INSENSITIVE);
|
||||||
Matcher matcher = pattern.matcher(event.getMessage().replace("/", ""));
|
Matcher matcher = pattern.matcher(event.getMessage().replaceFirst("/", ""));
|
||||||
if (matcher.find())
|
if (matcher.find())
|
||||||
{
|
{
|
||||||
PlexLog.debug("Found blocked regexed command");
|
PlexLog.debug("Player attempted to use a blocked regex");
|
||||||
cmdRef.set(blockedCommand);
|
cmdRef.set(blockedCommand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -115,15 +109,23 @@ public class CommandListener extends PlexListener
|
|||||||
{
|
{
|
||||||
case "e" -> {
|
case "e" -> {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("commandBlocked"));
|
event.getPlayer().sendMessage(cmd.getMessage());
|
||||||
}
|
}
|
||||||
case "a" -> {
|
case "a" -> {
|
||||||
|
if (plexPlayer.isAdminActive() && plexPlayer.getRankFromString().isAtLeast(Rank.ADMIN))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("commandBlocked"));
|
event.getPlayer().sendMessage(cmd.getMessage());
|
||||||
}
|
}
|
||||||
case "s" -> {
|
case "s" -> {
|
||||||
|
if (plexPlayer.isAdminActive() && plexPlayer.getRankFromString().isAtLeast(Rank.SENIOR_ADMIN))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("commandBlocked"));
|
event.getPlayer().sendMessage(cmd.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,10 +159,14 @@ public class PunishmentManager extends PlexBase
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
PlexLog.debug("Checking active bans mysql");
|
||||||
CompletableFuture<List<Punishment>> future = new CompletableFuture<>();
|
CompletableFuture<List<Punishment>> future = new CompletableFuture<>();
|
||||||
Plex.get().getSqlPunishment().getPunishments().whenComplete((punishments, throwable) ->
|
Plex.get().getSqlPunishment().getPunishments().whenComplete((punishments, throwable) ->
|
||||||
{
|
{
|
||||||
future.complete(punishments.stream().filter(Punishment::isActive).filter(punishment -> punishment.getType() == PunishmentType.BAN).toList());
|
PlexLog.debug("Received Punishments");
|
||||||
|
List<Punishment> punishmentList = punishments.stream().filter(Punishment::isActive).filter(punishment -> punishment.getType() == PunishmentType.BAN).toList();
|
||||||
|
PlexLog.debug("Completing with {0} punishments", punishmentList.size());
|
||||||
|
future.complete(punishmentList);
|
||||||
});
|
});
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
|
|||||||
import dev.plex.command.blocking.BlockedCommand;
|
import dev.plex.command.blocking.BlockedCommand;
|
||||||
import dev.plex.services.AbstractService;
|
import dev.plex.services.AbstractService;
|
||||||
import dev.plex.util.PlexLog;
|
import dev.plex.util.PlexLog;
|
||||||
|
import dev.plex.util.PlexUtils;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -38,7 +39,7 @@ public class CommandBlockerService extends AbstractService
|
|||||||
{
|
{
|
||||||
command.setRequiredLevel(args[1]);
|
command.setRequiredLevel(args[1]);
|
||||||
command.setRegex(args[2]);
|
command.setRegex(args[2]);
|
||||||
command.setMessage(s.substring(lastDelim + 1));
|
command.setMessage(s.substring(lastDelim + 1).equalsIgnoreCase("_") ? PlexUtils.messageComponent("commandBlocked") : PlexUtils.mmDeserialize(s.substring(lastDelim + 1)));
|
||||||
/*PlexLog.debug("=Found regex blocked=");
|
/*PlexLog.debug("=Found regex blocked=");
|
||||||
PlexLog.debug(" Regex: " + command.getRegex());
|
PlexLog.debug(" Regex: " + command.getRegex());
|
||||||
PlexLog.debug(" Message: " + command.getMessage());
|
PlexLog.debug(" Message: " + command.getMessage());
|
||||||
@ -47,7 +48,7 @@ public class CommandBlockerService extends AbstractService
|
|||||||
{
|
{
|
||||||
command.setRequiredLevel(args[1]);
|
command.setRequiredLevel(args[1]);
|
||||||
command.setCommand(args[2]);
|
command.setCommand(args[2]);
|
||||||
command.setMessage(s.substring(lastDelim + 1));
|
command.setMessage(s.substring(lastDelim + 1).equalsIgnoreCase("_") ? PlexUtils.messageComponent("commandBlocked") : PlexUtils.mmDeserialize(s.substring(lastDelim + 1)));
|
||||||
Command cmd = plugin.getServer().getCommandMap().getCommand(command.getCommand().split(" ")[0]);
|
Command cmd = plugin.getServer().getCommandMap().getCommand(command.getCommand().split(" ")[0]);
|
||||||
if (cmd == null)
|
if (cmd == null)
|
||||||
{
|
{
|
||||||
@ -63,10 +64,6 @@ public class CommandBlockerService extends AbstractService
|
|||||||
PlexLog.debug(" Aliases: " + Arrays.toString(command.getCommandAliases().toArray(new String[0])));
|
PlexLog.debug(" Aliases: " + Arrays.toString(command.getCommandAliases().toArray(new String[0])));
|
||||||
PlexLog.debug("====================");*/
|
PlexLog.debug("====================");*/
|
||||||
}
|
}
|
||||||
if (command.getMessage().equalsIgnoreCase("_"))
|
|
||||||
{
|
|
||||||
command.setMessage("This command is blocked.");
|
|
||||||
}
|
|
||||||
BLOCKED_COMMANDS.add(command);
|
BLOCKED_COMMANDS.add(command);
|
||||||
});
|
});
|
||||||
PlexLog.log("Command Blocker has loaded {0} entries!", BLOCKED_COMMANDS.size());
|
PlexLog.log("Command Blocker has loaded {0} entries!", BLOCKED_COMMANDS.size());
|
||||||
|
Loading…
Reference in New Issue
Block a user