Files
EssentialsC/src/main/java/cn/infstar/essentialsC/commands/TpDenyCommand.java
T

75 lines
2.7 KiB
Java

package cn.infstar.essentialsC.commands;
import cn.infstar.essentialsC.teleport.TeleportRequestManager;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public final class TpDenyCommand extends BaseCommand implements TabCompleter {
public TpDenyCommand() {
super("essentialsc.command.tpdeny");
}
@Override
protected boolean execute(Player player, String[] args) {
if (args.length > 1) {
player.sendMessage(getLang().getPrefixedString("tpa.messages.usage-tpdeny"));
return true;
}
TeleportRequestManager manager = plugin.getTeleportRequestManager();
if (manager == null) {
player.sendMessage(getLang().getPrefixedString("messages.module-disabled"));
return true;
}
if (manager.isIgnoringRequests(player)) {
player.sendMessage(getLang().getPrefixedString("tpa.messages.ignoring-requests"));
return true;
}
Optional<TeleportRequestManager.TeleportRequest> request = manager.findIncoming(
player,
args.length == 0 ? null : args[0]
);
if (request.isEmpty()) {
player.sendMessage(getLang().getPrefixedString("tpa.messages.no-request"));
return true;
}
TeleportRequestManager.TeleportRequest denied = request.get();
TeleportRequestManager.TeleportResult result = manager.deny(player, denied);
if (result.status() == TeleportRequestManager.TeleportResult.Status.EXPIRED) {
player.sendMessage(getLang().getPrefixedString("tpa.messages.expired", manager.placeholders(denied)));
return true;
}
Map<String, String> placeholders = manager.placeholders(denied);
player.sendMessage(getLang().getPrefixedString("tpa.messages.denied-target", placeholders));
Player requester = Bukkit.getPlayer(denied.requesterId());
if (requester != null && requester.isOnline()) {
requester.sendMessage(getLang().getPrefixedString("tpa.messages.denied-sender", placeholders));
}
return true;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
if (args.length != 1 || !(sender instanceof Player player)) {
return List.of();
}
TeleportRequestManager manager = plugin.getTeleportRequestManager();
if (manager == null) {
return List.of();
}
return manager.getIncomingRequesterNames(player, args[0]);
}
}