/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.royaldev.royalcommands.rcommands; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.royaldev.royalcommands.MessageColor; import org.royaldev.royalcommands.RoyalCommands; import java.util.HashMap; @ReflectCommand public class CmdIngot2Block extends BaseCommand { public CmdIngot2Block(final RoyalCommands instance, final String name) { super(instance, name, true); } public void i2b(Player p, ItemStack hand, Material ingot, Material block) { i2b(p, hand, ingot, block, hand.getDurability()); } public void i2b(Player p, ItemStack hand, Material ingot, Material block, short data) { int remainder = hand.getAmount() % 9; int amount = hand.getAmount() - remainder; int blocks = amount / 9; if (blocks > 0) { final ItemStack blocka = new ItemStack(block, blocks); final ItemStack ingots = new ItemStack(ingot, amount, data); p.getInventory().removeItem(ingots); final HashMap<Integer, ItemStack> left = p.getInventory().addItem(blocka); if (!left.isEmpty()) for (ItemStack s : left.values()) p.getWorld().dropItemNaturally(p.getLocation(), s); } p.sendMessage(MessageColor.POSITIVE + "Made " + MessageColor.NEUTRAL + blocks + " block(s) " + MessageColor.POSITIVE + "and had " + MessageColor.NEUTRAL + remainder + " material(s) " + MessageColor.POSITIVE + "left over."); } @Override public boolean runCommand(final CommandSender cs, final Command cmd, final String label, final String[] args) { if (!(cs instanceof Player)) { cs.sendMessage(MessageColor.NEGATIVE + "This command is only available to players!"); return true; } Player p = (Player) cs; ItemStack hand = p.getItemInHand(); if (hand == null || hand.getType() == Material.AIR) { cs.sendMessage(MessageColor.NEGATIVE + "Your hand is empty!"); return true; } switch (hand.getType()) { case IRON_INGOT: i2b(p, hand, Material.IRON_INGOT, Material.IRON_BLOCK); break; case GOLD_INGOT: i2b(p, hand, Material.GOLD_INGOT, Material.GOLD_BLOCK); break; case DIAMOND: i2b(p, hand, Material.DIAMOND, Material.DIAMOND_BLOCK); break; case GOLD_NUGGET: i2b(p, hand, Material.GOLD_NUGGET, Material.GOLD_INGOT); break; case EMERALD: i2b(p, hand, Material.EMERALD, Material.EMERALD_BLOCK); break; case COAL: i2b(p, hand, Material.COAL, Material.COAL_BLOCK); break; case QUARTZ: i2b(p, hand, Material.QUARTZ, Material.QUARTZ_BLOCK); break; case REDSTONE: i2b(p, hand, Material.REDSTONE, Material.REDSTONE_BLOCK); break; case INK_SACK: if (hand.getDurability() == 4) { i2b(p, hand, Material.INK_SACK, Material.LAPIS_BLOCK, (short) 4); break; } case WHEAT: i2b(p, hand, Material.WHEAT, Material.HAY_BLOCK); break; default: cs.sendMessage(MessageColor.NEGATIVE + "That cannot be made into blocks!"); } return true; } }