package com.rota.ee3help.commands; import java.util.Map; import com.pahimar.ee3.api.exchange.EnergyValue; import com.pahimar.ee3.exchange.EnergyValueRegistry; import com.pahimar.ee3.exchange.WrappedStack; import com.pahimar.ee3.network.PacketHandler; import com.pahimar.ee3.network.message.MessageSetEnergyValue; import com.rota.ee3help.EE3Help; import com.rota.ee3help.Helper; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.registry.GameData; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.RegistryNamespaced; public class CommandAddItem extends CommandModifyBase { EnergyValueRegistry registryValues = EnergyValueRegistry.getInstance(); RegistryNamespaced registryNames = GameData.getItemRegistry(); private void addItem(String name, int damageValue, float value) { if(!registryNames.containsKey(name)) return; ItemStack iStack = new ItemStack((Item) registryNames.getObject(name)); Map<WrappedStack, EnergyValue> valuesPre = Helper.loadPre(); iStack.setItemDamage(damageValue); WrappedStack w = WrappedStack.wrap(iStack); EnergyValue e = new EnergyValue(value); if (w != null && e != null && Float.compare(e.getValue(), 0) > 0) { if(valuesPre.containsKey(w)) valuesPre.replace(w, e); else valuesPre.put(w, e); PacketHandler.INSTANCE.sendToAll(new MessageSetEnergyValue(w, e)); } EnergyValueRegistry.getInstance().setShouldRegenNextRestart(true); Helper.savePre(valuesPre); if(EE3Help.config.auto_oredict) { CommandAddOreRange.addOreRange(name, damageValue, value); } } @Override public String getCommandName() { return "add-item"; } @Override public String getCommandUsage(ICommandSender cs) { return "Use command with no arguments."; } @Override public void processCommand(ICommandSender cs, String[] args) { resetFlag(); try { String name; int start, end; float value; switch(args.length) { case 0: Helper.toChatErr(cs, "add-item <emcvalue>, Uses held item."); Helper.toChatErr(cs, "add-item <itemID/name> <emcvalue> (DMG=0|N/A)"); Helper.toChatErr(cs, "add-item <itemID/name> <damagevalue> <emcvalue>"); break; case 1: if(cs instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) cs; ItemStack iStack = player.getHeldItem(); value = Float.parseFloat(args[0]); if(iStack != null) { addItem(registryNames.getNameForObject(iStack.getItem()),iStack.getItemDamage(),value); Helper.toChat(cs, EnumChatFormatting.GREEN + "(+) ITEM: "+registryNames.getNameForObject(iStack.getItem())); } else Helper.toChatErr(cs, "(X) Invalid item."); } else FMLLog.getLogger().error("EE3H Command sender not instance of player, can't check held item."); break; case 2: name = Helper.getItemName(args[0]); value = Float.parseFloat(args[1]); if(name != null) { addItem(name,0,value); Helper.toChat(cs, EnumChatFormatting.GREEN + "(+) ITEM: "+name); } else Helper.toChatErr(cs, "(X) Invalid item."); break; case 3: name = Helper.getItemName(args[0]); start = end = Integer.parseInt(args[1]); value = Float.parseFloat(args[2]); if(name != null) { addItem(name,0,value); Helper.toChat(cs, EnumChatFormatting.GREEN + "(+) ITEM: "+name); } else Helper.toChatErr(cs, "(X) No such item."); break; default: Helper.toChatErr(cs, "Invalid number of arguments for operation."); Helper.toChatErr(cs, "add-item <emcvalue>, Uses held item."); Helper.toChatErr(cs, "add-item <itemID/name> <emcvalue> (DMG=0|N/A)"); Helper.toChatErr(cs, "add-item <itemID/name> <damagevalue> <emcvalue>"); } } catch (NumberFormatException e) { Helper.toChatErr(cs, "Non-number in numeric field."); } } }