1
mirror of https://github.com/Shiewk/SModeration.git synced 2026-04-29 06:34:17 +02:00

(1.7.0) Add a config option that prevents players from running certain commands when they are muted

This commit is contained in:
Shy
2025-08-22 11:19:04 +02:00
parent 7e3139126c
commit c4953d2acb
6 changed files with 121 additions and 73 deletions
@@ -12,9 +12,13 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.world.WorldSaveEvent;
import java.util.List;
import static de.shiewk.smoderation.paper.SModerationPaper.CHAT_PREFIX;
import static net.kyori.adventure.text.Component.translatable;
public class PunishmentListener implements Listener {
@@ -45,6 +49,29 @@ public class PunishmentListener implements Listener {
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event){
Player player = event.getPlayer();
final Punishment mute = SModerationPaper.container.find(p ->
p.type == PunishmentType.MUTE
&& p.to.equals(player.getUniqueId())
&& p.isActive());
if (mute != null) { // Player is muted
List<String> forbiddenCommands = SModerationPaper.config().getStringList("muted-forbidden-commands");
final String message = event.getMessage();
if (forbiddenCommands.stream().anyMatch(str ->
message.toLowerCase().startsWith("/"+str.toLowerCase()+" ")
|| message.toLowerCase().startsWith(str.toLowerCase()+" ")
)){
Bukkit.getConsoleSender().sendMessage(player.getName() + " tried to run forbidden command while muted");
player.sendMessage(CHAT_PREFIX.append(translatable("smod.punishment.playerMessage.mute.chat")));
event.setCancelled(true);
}
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPunishmentIssue(PunishmentIssueEvent event){
final Punishment punishment = event.getPunishment();
@@ -61,8 +61,8 @@ public class SocialSpyListener implements Listener {
List<String> socialSpyCommands = SModerationPaper.config().getStringList("socialspy-commands");
final String message = event.getMessage();
if (socialSpyCommands.stream().anyMatch(str ->
message.startsWith("/"+str+" ")
|| message.startsWith(str+" ")
message.toLowerCase().startsWith("/"+str.toLowerCase()+" ")
|| message.toLowerCase().startsWith(str.toLowerCase()+" ")
)){
SocialSpyListener.command(event.getPlayer(), message);
}