package de.iani.treasurechest.commands;
import de.iani.cubesideutils.bukkit.commands.SubCommand;
import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException;
import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException;
import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException;
import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException;
import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException;
import de.iani.cubesideutils.commands.ArgsParser;
import de.iani.playerUUIDCache.CachedPlayer;
import de.iani.treasurechest.ListedItemsData;
import de.iani.treasurechest.Permissions;
import de.iani.treasurechest.PlayerTreasureChestContent;
import de.iani.treasurechest.PlayerTreasureChestContent.LoadState;
import de.iani.treasurechest.TreasureChest;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class RemoveCommand extends SubCommand {
private TreasureChest plugin;
public RemoveCommand(TreasureChest plugin) {
this.plugin = plugin;
}
@Override
public String getRequiredPermission() {
return Permissions.REMOVE;
}
@Override
public boolean requiresPlayer() {
return false;
}
@Override
public String getUsage() {
return "<player> <id>";
}
@Override
public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException {
if (args.remaining() != 2) {
plugin.sendMessage(sender, commandString + getUsage(), true);
return true;
}
CachedPlayer target = plugin.getPlayerUUIDCache().getPlayerFromNameOrUUID(args.getNext(), true);
if (target == null) {
plugin.sendMessage(sender, "Unknown player!", true);
return true;
}
int nr = args.getNext(-1);
ListedItemsData lid;
if (sender instanceof Player player) {
lid = plugin.getData().getListedItems(player.getUniqueId());
} else {
lid = plugin.getData().getListedItems(null);
}
if (lid == null || !lid.getOwner().equals(target.getUniqueId())) {
plugin.sendMessage(sender, "Nicht der gelistete Spieler", true);
return true;
}
Integer key = lid.getItemDatabaseKey(nr);
if (key == null) {
plugin.sendMessage(sender, "Ungültige ID", true);
return true;
}
try {
if (plugin.getDatabase().deleteItem(target.getUniqueId(), key)) {
PlayerTreasureChestContent content = plugin.getData().getChestContent(target.getUniqueId());
if (content != null && content.getLoadState() == LoadState.LOADED) {
content.removeItem(key);
}
} else {
plugin.sendMessage(sender, "Ungültige ID", true);
return true;
}
} catch (SQLException e) {
plugin.sendMessage(sender, ChatColor.DARK_RED + "Datenbankfehler");
plugin.getLogger().log(Level.SEVERE, "Could not delete item " + key + " for " + target.getName() + ": " + e.getMessage(), e);
return true;
}
plugin.sendMessage(sender, "Der Preis wurde entfernt!");
return true;
}
@Override
public Collection<String> onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) {
if (args.remaining() == 1) {
return null;
}
return List.of();
}
}