mirror of
https://github.com/Shiewk/SModeration.git
synced 2026-04-28 05:54:16 +02:00
Unmute and unban commands
This commit is contained in:
@@ -54,5 +54,15 @@ public final class SModeration extends JavaPlugin {
|
||||
assert logs != null;
|
||||
logs.setExecutor(new ModLogsCommand());
|
||||
logs.setTabCompleter(new ModLogsCommand());
|
||||
|
||||
final PluginCommand unmute = getCommand("unmute");
|
||||
assert unmute != null;
|
||||
unmute.setExecutor(new UnmuteCommand());
|
||||
unmute.setTabCompleter(new UnmuteCommand());
|
||||
|
||||
final PluginCommand unban = getCommand("unban");
|
||||
assert unban != null;
|
||||
unban.setExecutor(new UnbanCommand());
|
||||
unban.setTabCompleter(new UnbanCommand());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import de.shiewk.smoderation.punishments.PunishmentType;
|
||||
import de.shiewk.smoderation.util.PlayerUtil;
|
||||
import de.shiewk.smoderation.util.TimeUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@@ -37,7 +38,7 @@ public class ModLogsCommand implements CommandExecutor, TabCompleter {
|
||||
uuid = PlayerUtil.offlinePlayerUUIDByName(playername);
|
||||
}
|
||||
if (uuid == null){
|
||||
sender.sendMessage(Component.text("This player was not found. Try running /%s with an UUID instead.".formatted(label)));
|
||||
sender.sendMessage(Component.text("This player was not found. Try running /%s with an UUID instead.".formatted(label)).color(NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
name = PlayerUtil.offlinePlayerName(uuid);
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package de.shiewk.smoderation.command;
|
||||
|
||||
import de.shiewk.smoderation.SModeration;
|
||||
import de.shiewk.smoderation.punishments.Punishment;
|
||||
import de.shiewk.smoderation.punishments.PunishmentType;
|
||||
import de.shiewk.smoderation.util.PlayerUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.command.*;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class UnbanCommand implements CommandExecutor, TabCompleter {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
if (args.length < 1){
|
||||
return false;
|
||||
} else {
|
||||
|
||||
UUID senderUUID;
|
||||
if (sender instanceof ConsoleCommandSender){
|
||||
senderUUID = PlayerUtil.UUID_CONSOLE;
|
||||
} else if (sender instanceof Player pl){
|
||||
senderUUID = pl.getUniqueId();
|
||||
} else if (sender instanceof BlockCommandSender){
|
||||
sender.sendMessage(Component.text("Blocks can't execute this command.").color(NamedTextColor.RED));
|
||||
return true;
|
||||
} else {
|
||||
sender.sendMessage(Component.text("Your command sender type is unknown (%s).".formatted(sender.getClass().getName())).color(NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
|
||||
String nameArg = args[0];
|
||||
UUID uuid;
|
||||
try {
|
||||
uuid = UUID.fromString(nameArg);
|
||||
} catch (IllegalArgumentException ignored){
|
||||
uuid = PlayerUtil.offlinePlayerUUIDByName(nameArg);
|
||||
}
|
||||
if (uuid == null){
|
||||
sender.sendMessage(Component.text("This player was not found. Try running /%s with an UUID instead.".formatted(label)).color(NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
UUID finalUuid = uuid;
|
||||
final Punishment punishment = SModeration.container.find(p -> p.to.equals(finalUuid) && p.isActive() && p.type == PunishmentType.BAN);
|
||||
if (punishment != null) {
|
||||
punishment.cancel(senderUUID);
|
||||
punishment.broadcastCancellation(SModeration.container);
|
||||
} else {
|
||||
sender.sendMessage(Component.text("This player is not banned.").color(NamedTextColor.RED));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package de.shiewk.smoderation.command;
|
||||
|
||||
import de.shiewk.smoderation.SModeration;
|
||||
import de.shiewk.smoderation.punishments.Punishment;
|
||||
import de.shiewk.smoderation.punishments.PunishmentType;
|
||||
import de.shiewk.smoderation.util.PlayerUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.command.*;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class UnmuteCommand implements CommandExecutor, TabCompleter {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
if (args.length < 1){
|
||||
return false;
|
||||
} else {
|
||||
|
||||
UUID senderUUID;
|
||||
if (sender instanceof ConsoleCommandSender){
|
||||
senderUUID = PlayerUtil.UUID_CONSOLE;
|
||||
} else if (sender instanceof Player pl){
|
||||
senderUUID = pl.getUniqueId();
|
||||
} else if (sender instanceof BlockCommandSender){
|
||||
sender.sendMessage(Component.text("Blocks can't execute this command.").color(NamedTextColor.RED));
|
||||
return true;
|
||||
} else {
|
||||
sender.sendMessage(Component.text("Your command sender type is unknown (%s).".formatted(sender.getClass().getName())).color(NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
|
||||
String nameArg = args[0];
|
||||
UUID uuid;
|
||||
try {
|
||||
uuid = UUID.fromString(nameArg);
|
||||
} catch (IllegalArgumentException ignored){
|
||||
uuid = PlayerUtil.offlinePlayerUUIDByName(nameArg);
|
||||
}
|
||||
if (uuid == null){
|
||||
sender.sendMessage(Component.text("This player was not found. Try running /%s with an UUID instead.".formatted(label)).color(NamedTextColor.RED));
|
||||
return true;
|
||||
}
|
||||
UUID finalUuid = uuid;
|
||||
final Punishment punishment = SModeration.container.find(p -> p.to.equals(finalUuid) && p.isActive() && p.type == PunishmentType.MUTE);
|
||||
if (punishment != null) {
|
||||
punishment.cancel(senderUUID);
|
||||
punishment.broadcastCancellation(SModeration.container);
|
||||
} else {
|
||||
sender.sendMessage(Component.text("This player is not muted.").color(NamedTextColor.RED));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,20 @@ commands:
|
||||
- smoderation
|
||||
permission: smod.menu
|
||||
description: Shows the SModeration menu.
|
||||
unmute:
|
||||
usage: "§cUsage: /unmute <player|uuid>"
|
||||
aliases:
|
||||
- sunmute
|
||||
permission: smod.unmute
|
||||
description: Unmutes a muted player.
|
||||
unban:
|
||||
usage: "§cUsage: /unban <player|uuid>"
|
||||
aliases:
|
||||
- sunban
|
||||
- pardon
|
||||
- spardon
|
||||
permission: smod.unban
|
||||
description: Unbans a banned player.
|
||||
permissions:
|
||||
smod.mute:
|
||||
default: op
|
||||
|
||||
Reference in New Issue
Block a user