diff --git a/src/main/java/de/shiewk/smoderation/paper/SModerationPaper.java b/src/main/java/de/shiewk/smoderation/paper/SModerationPaper.java index 3d783ff..1c8ee50 100644 --- a/src/main/java/de/shiewk/smoderation/paper/SModerationPaper.java +++ b/src/main/java/de/shiewk/smoderation/paper/SModerationPaper.java @@ -46,6 +46,8 @@ public final class SModerationPaper extends JavaPlugin { @Override public void onEnable() { + CONFIG.reload(); + getPluginManager().registerEvents(new PunishmentListener(), this); getPluginManager().registerEvents(new CustomInventoryListener(), this); getPluginManager().registerEvents(new InvSeeListener(), this); diff --git a/src/main/java/de/shiewk/smoderation/paper/command/BanCommand.java b/src/main/java/de/shiewk/smoderation/paper/command/BanCommand.java index 97ccd13..1aba3a0 100644 --- a/src/main/java/de/shiewk/smoderation/paper/command/BanCommand.java +++ b/src/main/java/de/shiewk/smoderation/paper/command/BanCommand.java @@ -39,6 +39,9 @@ public final class BanCommand implements CommandProvider { } private int banWithoutReason(CommandContext context) throws CommandSyntaxException { + if (SModerationPaper.CONFIG.shouldForceReason()){ + CommandUtil.error("Please provide a reason."); + } UUID sender = CommandUtil.getSenderUUID(context.getSource()); UUID target = context.getArgument("player", UUID.class); long duration = context.getArgument("duration", Long.class); diff --git a/src/main/java/de/shiewk/smoderation/paper/command/KickCommand.java b/src/main/java/de/shiewk/smoderation/paper/command/KickCommand.java index e9c6306..e7e0f52 100644 --- a/src/main/java/de/shiewk/smoderation/paper/command/KickCommand.java +++ b/src/main/java/de/shiewk/smoderation/paper/command/KickCommand.java @@ -43,6 +43,9 @@ public final class KickCommand implements CommandProvider { } private int kickWithoutReason(CommandContext context) throws CommandSyntaxException { + if (SModerationPaper.CONFIG.shouldForceReason()){ + CommandUtil.error("Please provide a reason."); + } UUID sender = CommandUtil.getSenderUUID(context.getSource()); Player target = CommandUtil.getPlayerSingle(context, "player"); executeKick(sender, target, Punishment.DEFAULT_REASON); diff --git a/src/main/java/de/shiewk/smoderation/paper/command/MuteCommand.java b/src/main/java/de/shiewk/smoderation/paper/command/MuteCommand.java index 55e2fec..7405b5a 100644 --- a/src/main/java/de/shiewk/smoderation/paper/command/MuteCommand.java +++ b/src/main/java/de/shiewk/smoderation/paper/command/MuteCommand.java @@ -39,6 +39,9 @@ public final class MuteCommand implements CommandProvider { } private int muteWithoutReason(CommandContext context) throws CommandSyntaxException { + if (SModerationPaper.CONFIG.shouldForceReason()){ + CommandUtil.error("Please provide a reason."); + } UUID sender = CommandUtil.getSenderUUID(context.getSource()); UUID target = context.getArgument("player", UUID.class); long duration = context.getArgument("duration", Long.class); diff --git a/src/main/java/de/shiewk/smoderation/paper/config/SModerationConfig.java b/src/main/java/de/shiewk/smoderation/paper/config/SModerationConfig.java index 74278e4..21b4160 100644 --- a/src/main/java/de/shiewk/smoderation/paper/config/SModerationConfig.java +++ b/src/main/java/de/shiewk/smoderation/paper/config/SModerationConfig.java @@ -15,16 +15,46 @@ public class SModerationConfig { this.plugin = plugin; } - public List getSocialSpyCommands(List default_){ - final String path = "socialspy-commands"; + private List socialSpyCommands = List.of( + "w", + "tell", + "msg", + "teammsg", + "tm", + "minecraft:w", + "minecraft:tell", + "minecraft:msg", + "minecraft:teammsg", + "minecraft:tm" + ); + private boolean forceReason = false; + + public void reload(){ + socialSpyCommands = loadOrSetStringList("socialspy-commands", socialSpyCommands); + forceReason = loadOrSetBoolean("force-reason", forceReason); + } + + private List loadOrSetStringList(String path, List defaultValue) { if (!config.contains(path)){ - config.set(path, default_); + config.set(path, defaultValue); plugin.saveConfig(); } return config.getStringList(path); } - public FileConfiguration getConfig() { - return config; + private boolean loadOrSetBoolean(String path, boolean defaultValue) { + if (!config.contains(path)){ + config.set(path, defaultValue); + plugin.saveConfig(); + } + return config.getBoolean(path); + } + + public List getSocialSpyCommands(){ + return socialSpyCommands; + } + + public boolean shouldForceReason(){ + return forceReason; } } diff --git a/src/main/java/de/shiewk/smoderation/paper/listener/SocialSpyListener.java b/src/main/java/de/shiewk/smoderation/paper/listener/SocialSpyListener.java index 0e5004a..57e9218 100644 --- a/src/main/java/de/shiewk/smoderation/paper/listener/SocialSpyListener.java +++ b/src/main/java/de/shiewk/smoderation/paper/listener/SocialSpyListener.java @@ -22,19 +22,6 @@ import static net.kyori.adventure.text.Component.text; public class SocialSpyListener implements Listener { - private static final List defaultCommands = List.of( - "w", - "tell", - "msg", - "teammsg", - "tm", - "minecraft:w", - "minecraft:tell", - "minecraft:msg", - "minecraft:teammsg", - "minecraft:tm" - ); - private static final NamespacedKey SAVE_KEY = new NamespacedKey("smoderation", "socialspy"); private static final ObjectArrayList targets = new ObjectArrayList<>(); @@ -72,9 +59,9 @@ public class SocialSpyListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) public void onPlayerSendCommand(PlayerCommandPreprocessEvent event){ - List ssCommands = SModerationPaper.CONFIG.getSocialSpyCommands(defaultCommands); + List socialSpyCommands = SModerationPaper.CONFIG.getSocialSpyCommands(); final String message = event.getMessage(); - if (ssCommands.stream().anyMatch(str -> + if (socialSpyCommands.stream().anyMatch(str -> message.startsWith("/"+str+" ") || message.startsWith(str+" ") )){