Add built-in mute system with /lmute and /lunmute commands
- Added MuteManager for handling mutes with persistence (mutes.json) - Added /lmute <nick> <time> [-s] [reason] command - Added /lunmute <nick> [-s] command - Time formats: 1d, 2h, 30m, 60s, 0 for permanent - -s flag for silent mute/unmute (no broadcast) - Mute check integrated into ChatListener - Removed LibertyBans API dependency (using built-in system)
This commit is contained in:
parent
d44c5f811f
commit
c6175d9d61
7 changed files with 524 additions and 85 deletions
102
src/main/java/com/loki/lochat/commands/UnmuteCommand.java
Normal file
102
src/main/java/com/loki/lochat/commands/UnmuteCommand.java
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
package com.loki.lochat.commands;
|
||||
|
||||
import com.loki.lochat.LoChat;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Команда /lunmute nick [-s]
|
||||
*/
|
||||
public class UnmuteCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
private final LoChat plugin;
|
||||
|
||||
public UnmuteCommand(LoChat plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String label, @NotNull String[] args) {
|
||||
if (!sender.hasPermission("lochat.unmute")) {
|
||||
sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage("§cИспользование: /lunmute <ник> [-s]");
|
||||
return true;
|
||||
}
|
||||
|
||||
String targetName = args[0];
|
||||
boolean silent = args.length > 1 && args[1].equalsIgnoreCase("-s");
|
||||
|
||||
// Ищем игрока
|
||||
Player target = Bukkit.getPlayer(targetName);
|
||||
if (target == null) {
|
||||
// Пробуем найти оффлайн игрока
|
||||
@SuppressWarnings("deprecation")
|
||||
var offlinePlayer = Bukkit.getOfflinePlayer(targetName);
|
||||
if (!offlinePlayer.hasPlayedBefore() && !offlinePlayer.isOnline()) {
|
||||
sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found"));
|
||||
return true;
|
||||
}
|
||||
|
||||
// Размучиваем оффлайн игрока
|
||||
if (plugin.getMuteManager().unmute(offlinePlayer.getUniqueId())) {
|
||||
sender.sendMessage("§aИгрок §e" + targetName + " §aразмучен");
|
||||
|
||||
if (!silent) {
|
||||
Bukkit.broadcast(plugin.getMessageConfig().getComponent("mute.unmuted",
|
||||
"{player}", targetName));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§cИгрок не замучен!");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Размучиваем онлайн игрока
|
||||
if (plugin.getMuteManager().unmute(target.getUniqueId())) {
|
||||
sender.sendMessage("§aИгрок §e" + target.getName() + " §aразмучен");
|
||||
target.sendMessage("§aВы были размучены!");
|
||||
|
||||
if (!silent) {
|
||||
Bukkit.broadcast(plugin.getMessageConfig().getComponent("mute.unmuted",
|
||||
"{player}", target.getName()));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§cИгрок не замучен!");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String alias, @NotNull String[] args) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
|
||||
if (args.length == 1) {
|
||||
String prefix = args[0].toLowerCase();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
if (player.getName().toLowerCase().startsWith(prefix)) {
|
||||
completions.add(player.getName());
|
||||
}
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
completions.add("-s");
|
||||
}
|
||||
|
||||
return completions;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue