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.registry.GameData;
import net.minecraft.command.ICommandSender;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.RegistryNamespaced;
public class CommandAddItemRange extends CommandModifyBase
{
EnergyValueRegistry registryValues = EnergyValueRegistry.getInstance();
RegistryNamespaced registryNames = GameData.getItemRegistry();
private void addItemRange(String name, int start, int end, float value)
{
if(!registryNames.containsKey(name))
return;
ItemStack iStack = new ItemStack((Item) registryNames.getObject(name));
Map<WrappedStack, EnergyValue> valuesPre = Helper.loadPre();
for(int i = start; i <= end; i++)
{
iStack.setItemDamage(i);
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.addOreRangeForRange(name, start, end, value);
}
}
@Override
public String getCommandName()
{
return "add-item-range";
}
@Override
public String getCommandUsage(ICommandSender cs)
{
return "add-item-range <itemID/name> <dmgstart> <dmgend> <emcvalue>";
}
@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, getCommandUsage(cs));
break;
case 4:
name = Helper.getItemName(args[0]);
start = Integer.parseInt(args[1]);
end = Integer.parseInt(args[2]);
value = Float.parseFloat(args[3]);
if(name != null)
{
addItemRange(name,start,end,value);
Helper.toChat(cs, EnumChatFormatting.GREEN + "(+) ITEM RANGE: "+name);
}
else
Helper.toChatErr(cs, "(X) Invalid item.");
break;
default:
Helper.toChatErr(cs, "Invalid number of arguments for operation.");
Helper.toChatErr(cs, getCommandUsage(cs));
}
}
catch (NumberFormatException e)
{
Helper.toChatErr(cs, "Non-number in numeric field.");
}
}
}