91 lines
2.3 KiB
Java
91 lines
2.3 KiB
Java
package com.me.tft_02.soulbound.commands;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import com.me.tft_02.soulbound.Soulbound;
|
|
import com.me.tft_02.soulbound.config.Config;
|
|
import com.me.tft_02.soulbound.util.CommandUtils;
|
|
import com.me.tft_02.soulbound.util.ItemUtils;
|
|
|
|
public class BindCommand implements CommandExecutor {
|
|
|
|
@Override
|
|
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
|
if (CommandUtils.noConsoleUsage(sender)) {
|
|
return true;
|
|
}
|
|
|
|
if (!sender.hasPermission("soulbound.commands.bind")) {
|
|
return false;
|
|
}
|
|
|
|
boolean bindFullInventory = false;
|
|
|
|
Player player = (Player) sender;
|
|
Player target;
|
|
switch (args.length) {
|
|
case 1:
|
|
target = Soulbound.p.getServer().getPlayerExact(args[0]);
|
|
|
|
if (CommandUtils.isOffline(sender, target)) {
|
|
return true;
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
if (!args[1].equalsIgnoreCase("inventory")) {
|
|
sender.sendMessage(Soulbound.p.getlang("BIND_INVENTORY"));
|
|
return true;
|
|
}
|
|
|
|
bindFullInventory = true;
|
|
target = Soulbound.p.getServer().getPlayerExact(args[0]);
|
|
|
|
if (CommandUtils.isOffline(sender, target)) {
|
|
return true;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
target = player;
|
|
}
|
|
|
|
if (bindFullInventory) {
|
|
return handleBindFullInventory(player, target);
|
|
}
|
|
|
|
ItemStack itemInHand = player.getItemInHand();
|
|
|
|
if ((itemInHand.getType() == Material.AIR) || ItemUtils.isSoulbound(itemInHand)) {
|
|
sender.sendMessage(Soulbound.p.getlang("CAN_NOT_BIND"));
|
|
return false;
|
|
}
|
|
|
|
ItemUtils.soulbindItem(target, itemInHand);
|
|
|
|
if (ItemUtils.isSoulbound(itemInHand) && Config.getFeedbackEnabled()) {
|
|
sender.sendMessage(Soulbound.p.getlang("BINDED").replace("%target%", target.getName()));
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private boolean handleBindFullInventory(Player player, Player target) {
|
|
for (ItemStack itemStack : player.getInventory().getContents()) {
|
|
if (itemStack != null && itemStack.getType() != Material.AIR) {
|
|
ItemUtils.soulbindItem(target, itemStack);
|
|
}
|
|
}
|
|
|
|
if (Config.getFeedbackEnabled()) {
|
|
player.sendMessage(Soulbound.p.getlang("BIND_FULL_INEVNTORY")
|
|
.replace("%player%", player.getName()).replace("%target%", target.getName()));
|
|
}
|
|
return true;
|
|
}
|
|
}
|