mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2024-12-22 04:37:42 +01:00
/mi take
This commit is contained in:
parent
16a0a1ae14
commit
3b57c527b5
@ -31,6 +31,7 @@ public class MMOItemsCommandTreeRoot extends CommandTreeRoot {
|
||||
addChild(new EditCommandTreeNode(this));
|
||||
addChild(new CopyCommandTreeNode(this));
|
||||
addChild(new GiveCommandTreeNode(this));
|
||||
addChild(new TakeCommandTreeNode(this));
|
||||
|
||||
addChild(new GenerateCommandTreeNode(this));
|
||||
// addChild(new HelpCommandTreeNode(this));
|
||||
|
@ -0,0 +1,67 @@
|
||||
package net.Indyuce.mmoitems.command.mmoitems;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import io.lumine.mythic.lib.command.api.CommandTreeNode;
|
||||
import io.lumine.mythic.lib.command.api.Parameter;
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.api.Type;
|
||||
import net.Indyuce.mmoitems.command.MMOItemsCommandTreeRoot;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class TakeCommandTreeNode extends CommandTreeNode {
|
||||
private static final Random random = new Random();
|
||||
|
||||
public TakeCommandTreeNode(CommandTreeNode parent) {
|
||||
super(parent, "take");
|
||||
|
||||
addParameter(MMOItemsCommandTreeRoot.TYPE);
|
||||
addParameter(MMOItemsCommandTreeRoot.ID_2);
|
||||
addParameter(Parameter.PLAYER);
|
||||
addParameter(Parameter.AMOUNT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandSender sender, String[] args) {
|
||||
if (args.length != 5)
|
||||
return CommandResult.THROW_USAGE;
|
||||
|
||||
try {
|
||||
|
||||
// Target item & player
|
||||
final Type type = MMOItems.plugin.getTypes().getOrThrow(args[1].toUpperCase().replace("-", "_"));
|
||||
final String id = args[2].toUpperCase().replace("-", "_");
|
||||
final Player target = Bukkit.getPlayer(args[3]);
|
||||
Validate.notNull(target, "Could not find player called '" + args[3] + "'.");
|
||||
|
||||
int amountLeft = Integer.parseInt(args[4]);
|
||||
for (int i = 0; i < target.getInventory().getSize() && amountLeft > 0; i++) {
|
||||
final ItemStack item = target.getInventory().getItem(i);
|
||||
if (item == null || item.getType() == Material.AIR)
|
||||
continue;
|
||||
|
||||
final NBTItem nbtItem = NBTItem.get(item);
|
||||
final String currentType = nbtItem.getType();
|
||||
if (type.getId().equals(currentType) && nbtItem.getString("MMOITEMS_ITEM_ID").equals(id)) {
|
||||
final int removedAmount = Math.min(amountLeft, item.getAmount());
|
||||
amountLeft -= removedAmount;
|
||||
item.setAmount(item.getAmount() - removedAmount);
|
||||
target.getInventory().setItem(i, item);
|
||||
}
|
||||
}
|
||||
|
||||
return CommandResult.SUCCESS;
|
||||
|
||||
} catch (IllegalArgumentException exception) {
|
||||
sender.sendMessage(MMOItems.plugin.getPrefix() + ChatColor.RED + exception.getMessage());
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user