Renamed the helper package to util, and work on better recipe inspection and result collation.

This commit is contained in:
pahimar 2013-05-20 00:19:26 -04:00
parent d6367c90fd
commit ad4fb23535
41 changed files with 200 additions and 80 deletions

View file

@ -20,16 +20,15 @@ import com.pahimar.ee3.core.handlers.LocalizationHandler;
import com.pahimar.ee3.core.handlers.PlayerDestroyItemHandler;
import com.pahimar.ee3.core.handlers.VersionCheckTickHandler;
import com.pahimar.ee3.core.handlers.WorldTransmutationHandler;
import com.pahimar.ee3.core.helper.LogHelper;
import com.pahimar.ee3.core.helper.VersionHelper;
import com.pahimar.ee3.core.proxy.CommonProxy;
import com.pahimar.ee3.core.util.LogHelper;
import com.pahimar.ee3.core.util.VersionHelper;
import com.pahimar.ee3.creativetab.CreativeTabEE3;
import com.pahimar.ee3.item.ModItems;
import com.pahimar.ee3.item.crafting.RecipesAlchemicalBagDyes;
import com.pahimar.ee3.lib.Reference;
import com.pahimar.ee3.lib.Strings;
import com.pahimar.ee3.network.PacketHandler;
import com.pahimar.ee3.recipe.RecipesTransmutationStone;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.FingerprintWarning;
@ -150,9 +149,6 @@ public class EquivalentExchange3 {
// Initialize custom rendering and pre-load textures (Client only)
proxy.initRenderingAndTextures();
// Load the Transmutation Stone recipes
RecipesTransmutationStone.init();
// Add in the ability to dye Alchemical Bags
CraftingManager.getInstance().getRecipeList().add(new RecipesAlchemicalBagDyes());

View file

@ -5,7 +5,7 @@ import java.util.logging.Level;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;
import com.pahimar.ee3.core.helper.LogHelper;
import com.pahimar.ee3.core.util.LogHelper;
import com.pahimar.ee3.lib.Sounds;
/**

View file

@ -7,7 +7,7 @@ import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.inventory.ContainerAlchemicalBag;
import com.pahimar.ee3.lib.Strings;
import com.pahimar.ee3.lib.Textures;

View file

@ -8,7 +8,7 @@ import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.inventory.ContainerPortableCrafting;
import com.pahimar.ee3.lib.Strings;
import com.pahimar.ee3.lib.Textures;

View file

@ -6,7 +6,7 @@ import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Strings;
import com.pahimar.ee3.lib.Textures;

View file

@ -5,7 +5,7 @@ import net.minecraft.command.WrongUsageException;
import com.pahimar.ee3.configuration.ConfigurationHandler;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.LocalizationHelper;
import com.pahimar.ee3.core.util.LocalizationHelper;
import com.pahimar.ee3.lib.Colours;
import com.pahimar.ee3.lib.Commands;
import com.pahimar.ee3.lib.Strings;

View file

@ -5,7 +5,7 @@ import net.minecraft.command.WrongUsageException;
import com.pahimar.ee3.configuration.ConfigurationHandler;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.LocalizationHelper;
import com.pahimar.ee3.core.util.LocalizationHelper;
import com.pahimar.ee3.lib.Colours;
import com.pahimar.ee3.lib.Commands;
import com.pahimar.ee3.lib.Strings;

View file

@ -5,7 +5,7 @@ import net.minecraft.command.WrongUsageException;
import com.pahimar.ee3.configuration.ConfigurationHandler;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.LocalizationHelper;
import com.pahimar.ee3.core.util.LocalizationHelper;
import com.pahimar.ee3.lib.Colours;
import com.pahimar.ee3.lib.Commands;

View file

@ -3,7 +3,7 @@ package com.pahimar.ee3.command;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import com.pahimar.ee3.core.helper.VersionHelper;
import com.pahimar.ee3.core.util.VersionHelper;
import com.pahimar.ee3.lib.Commands;
/**

View file

@ -5,8 +5,8 @@ import java.util.logging.Level;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import com.pahimar.ee3.core.helper.LogHelper;
import com.pahimar.ee3.core.helper.RecipeHelper;
import com.pahimar.ee3.core.util.LogHelper;
import com.pahimar.ee3.core.util.RecipeHelper;
import com.pahimar.ee3.recipe.RecipesTransmutationStone;
import cpw.mods.fml.common.Loader;

View file

@ -5,7 +5,7 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Strings;
import cpw.mods.fml.common.ICraftingHandler;

View file

@ -11,7 +11,7 @@ import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.TransmutationHelper;
import com.pahimar.ee3.core.util.TransmutationHelper;
import com.pahimar.ee3.item.IChargeable;
import com.pahimar.ee3.item.ITransmutationStone;
import com.pahimar.ee3.lib.Textures;

View file

@ -6,7 +6,7 @@ import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import com.pahimar.ee3.core.helper.ItemHelper;
import com.pahimar.ee3.core.util.ItemHelper;
/**
* Equivalent-Exchange-3

View file

@ -5,8 +5,8 @@ import java.util.logging.Level;
import net.minecraft.item.ItemStack;
import com.pahimar.ee3.core.helper.GeneralHelper;
import com.pahimar.ee3.core.helper.LogHelper;
import com.pahimar.ee3.core.util.GeneralHelper;
import com.pahimar.ee3.core.util.LogHelper;
/**
* Equivalent-Exchange-3

View file

@ -6,7 +6,7 @@ import net.minecraftforge.event.entity.item.ItemTossEvent;
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
import net.minecraftforge.event.entity.player.PlayerDropsEvent;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Strings;
/**

View file

@ -6,7 +6,7 @@ import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import com.pahimar.ee3.core.helper.KeyBindingHelper;
import com.pahimar.ee3.core.util.KeyBindingHelper;
import com.pahimar.ee3.item.IKeyBound;
import com.pahimar.ee3.lib.Reference;
import com.pahimar.ee3.network.PacketTypeHandler;

View file

@ -1,6 +1,6 @@
package com.pahimar.ee3.core.handlers;
import com.pahimar.ee3.core.helper.LocalizationHelper;
import com.pahimar.ee3.core.util.LocalizationHelper;
import com.pahimar.ee3.lib.Localizations;
import cpw.mods.fml.common.registry.LanguageRegistry;

View file

@ -14,7 +14,7 @@ import org.lwjgl.opengl.GL12;
import com.pahimar.ee3.client.renderer.RenderUtils;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.TransmutationHelper;
import com.pahimar.ee3.core.util.TransmutationHelper;
import com.pahimar.ee3.item.ITransmutationStone;
import com.pahimar.ee3.lib.Reference;

View file

@ -6,7 +6,7 @@ import net.minecraftforge.common.Configuration;
import com.pahimar.ee3.configuration.ConfigurationHandler;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.VersionHelper;
import com.pahimar.ee3.core.util.VersionHelper;
import com.pahimar.ee3.lib.Reference;
import com.pahimar.ee3.lib.Strings;

View file

@ -9,7 +9,7 @@ import net.minecraftforge.event.Event.Result;
import net.minecraftforge.event.ForgeSubscribe;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.TransmutationHelper;
import com.pahimar.ee3.core.util.TransmutationHelper;
import com.pahimar.ee3.event.ActionEvent;
import com.pahimar.ee3.event.ActionEvent.ActionResult;
import com.pahimar.ee3.event.ActionRequestEvent;

View file

@ -21,9 +21,9 @@ import com.pahimar.ee3.client.renderer.tileentity.TileEntityGlassBellRenderer;
import com.pahimar.ee3.core.handlers.DrawBlockHighlightHandler;
import com.pahimar.ee3.core.handlers.KeyBindingHandler;
import com.pahimar.ee3.core.handlers.TransmutationTargetOverlayHandler;
import com.pahimar.ee3.core.helper.ItemHelper;
import com.pahimar.ee3.core.helper.KeyBindingHelper;
import com.pahimar.ee3.core.helper.TransmutationHelper;
import com.pahimar.ee3.core.util.ItemHelper;
import com.pahimar.ee3.core.util.KeyBindingHelper;
import com.pahimar.ee3.core.util.TransmutationHelper;
import com.pahimar.ee3.item.IChargeable;
import com.pahimar.ee3.lib.ActionTypes;
import com.pahimar.ee3.lib.BlockIds;

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.util.ArrayList;

View file

@ -1,8 +1,10 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -35,6 +37,47 @@ public class ItemHelper {
return false;
}
public static ArrayList collateStacks(List unCollatedStacks) {
ArrayList collatedStacks = new ArrayList();
for (int i = 0; i < unCollatedStacks.size(); i++) {
if (collatedStacks.size() == 0) {
collatedStacks.add(unCollatedStacks.get(i));
}
else {
boolean found = false;
for (int j = 0; j < collatedStacks.size(); j++) {
if ((unCollatedStacks.get(i) instanceof ItemStack) && (collatedStacks.get(j) instanceof ItemStack)) {
ItemStack unCollatedStack = (ItemStack) unCollatedStacks.get(i);
ItemStack collatedStack = (ItemStack) collatedStacks.get(j);
if (compare(unCollatedStack, collatedStack)) {
((ItemStack) collatedStacks.get(j)).stackSize += 1;
found = true;
}
}
else if ((unCollatedStacks.get(i) instanceof OreDictionaryStack) && (collatedStacks.get(j) instanceof OreDictionaryStack)) {
OreDictionaryStack unCollatedStack = (OreDictionaryStack) unCollatedStacks.get(i);
OreDictionaryStack collatedStack = (OreDictionaryStack) collatedStacks.get(j);
if (OreDictionaryStack.compareStacks(unCollatedStack, collatedStack)) {
((OreDictionaryStack) collatedStacks.get(j)).stackSize += 1;
found = true;
}
}
}
if (!found) {
collatedStacks.add(unCollatedStacks.get(i));
}
}
}
return collatedStacks;
}
public static boolean hasColor(ItemStack itemStack) {

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.util.ArrayList;

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import cpw.mods.fml.common.registry.LanguageRegistry;

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.util.logging.Level;
import java.util.logging.Logger;

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

View file

@ -0,0 +1,71 @@
package com.pahimar.ee3.core.util;
import java.util.ArrayList;
import java.util.Comparator;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
public class OreDictionaryStack implements Comparator<OreDictionaryStack> {
private String oreDictionaryName;
public int stackSize;
public OreDictionaryStack() {
stackSize = 0;
oreDictionaryName = null;
}
public OreDictionaryStack(String oreDictionaryName) {
this.oreDictionaryName = oreDictionaryName;
stackSize = 1;
}
public OreDictionaryStack(int oreID) {
this(OreDictionary.getOreName(oreID));
}
public OreDictionaryStack(ItemStack itemStack) {
this(OreDictionary.getOreID(itemStack));
}
public ArrayList<ItemStack> getOres() {
return OreDictionary.getOres(oreDictionaryName);
}
public int getOreID() {
return OreDictionary.getOreID(oreDictionaryName);
}
public String toString() {
return "" + stackSize + "xoreDictionary." + oreDictionaryName;
}
@Override
public int compare(OreDictionaryStack oreStack1, OreDictionaryStack oreStack2) {
if ((oreStack1 != null) && (oreStack2 != null)) {
if (oreStack1.oreDictionaryName.equals(oreStack2.oreDictionaryName)) {
return 0;
}
}
return -1;
}
public static boolean compareStacks(OreDictionaryStack oreStack1, OreDictionaryStack oreStack2) {
return oreStack1.compareToStack(oreStack2);
}
public boolean compareToStack(OreDictionaryStack oreStack) {
return (compare(this, oreStack) == 0);
}
}

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import net.minecraft.item.ItemStack;

View file

@ -1,7 +1,6 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
@ -11,6 +10,7 @@ import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import cpw.mods.fml.common.registry.GameRegistry;
@ -27,70 +27,80 @@ import cpw.mods.fml.common.registry.GameRegistry;
public class RecipeHelper {
/**
* Returns a list of ItemStacks that represent the itemstacks that make up the given IRecipe
* Returns a list of elements that constitute the input in a crafting recipe
*
* @param recipe The IRecipe being examined
* @return List of ItemStacks that constitute the inputs of the recipe, null if unable to access the inputs of the given IRecipe
* @param recipe
* The IRecipe being examined
* @return
* List of elements that constitute the input of the given IRecipe. Could be an ItemStack or an Arraylist
*/
public static ArrayList<ItemStack> getRecipeInputs(IRecipe recipe) {
ArrayList<ItemStack> recipeInputs = null;
public static ArrayList getRecipeInputs(IRecipe recipe) {
if (recipe instanceof ShapedRecipes) {
ShapedRecipes shapedRecipe = (ShapedRecipes) recipe;
recipeInputs = new ArrayList<ItemStack>();
ArrayList<ItemStack> recipeInputs = new ArrayList<ItemStack>();
for (int i = 0; i < shapedRecipe.recipeItems.length; i++) {
if (shapedRecipe.recipeItems[i] != null) {
recipeInputs.add(shapedRecipe.recipeItems[i]);
ItemStack shapedRecipeStack = shapedRecipe.recipeItems[i];
shapedRecipeStack.stackSize = 1;
recipeInputs.add(shapedRecipeStack);
}
}
return recipeInputs;
return ItemHelper.collateStacks(recipeInputs);
}
else if (recipe instanceof ShapelessRecipes) {
ShapelessRecipes shapelessRecipe = (ShapelessRecipes) recipe;
recipeInputs = new ArrayList<ItemStack>(shapelessRecipe.recipeItems);
return recipeInputs;
return ItemHelper.collateStacks(new ArrayList(shapelessRecipe.recipeItems));
}
else if (recipe instanceof ShapedOreRecipe) {
ShapedOreRecipe shapedOreRecipe = (ShapedOreRecipe) recipe;
recipeInputs = new ArrayList<ItemStack>();
ArrayList recipeInputs = new ArrayList();
for (int i = 0; i < shapedOreRecipe.getInput().length; i++) {
if (shapedOreRecipe.getInput()[i] instanceof ArrayList) {
ArrayList<ItemStack> shapedOreRecipeInputs = (ArrayList<ItemStack>) shapedOreRecipe.getInput()[i];
ArrayList shapedOreRecipeList = (ArrayList) shapedOreRecipe.getInput()[i];
for (ItemStack itemStack : shapedOreRecipeInputs) {
recipeInputs.add(itemStack);
if (shapedOreRecipeList.size() > 0) {
recipeInputs.add(new OreDictionaryStack((ItemStack)shapedOreRecipeList.get(0)));
}
}
else {
if (shapedOreRecipe.getInput()[i] != null) {
recipeInputs.add(shapedOreRecipe.getInput()[i]);
}
}
}
return recipeInputs;
return ItemHelper.collateStacks(recipeInputs);
}
// TODO: Ore Dict recipes should populate some sort of equivalency portion of the dynEMC system
// TODO: Recipe Inputs should populate into separate lists, so that the emc of the lists can be determined and minimized
else if (recipe instanceof ShapelessOreRecipe) {
ShapelessOreRecipe shapelessOreRecipe = (ShapelessOreRecipe) recipe;
recipeInputs = new ArrayList<ItemStack>();
ArrayList recipeInputs = new ArrayList();
for (Object recipeInput : shapelessOreRecipe.getInput()) {
if (recipeInput instanceof ArrayList) {
ArrayList<ItemStack> shapelessOreRecipeInputs = (ArrayList<ItemStack>) recipeInput;
for (Object o : shapelessOreRecipe.getInput()) {
if (o instanceof ArrayList) {
ArrayList shapelessOreRecipeList = (ArrayList) o;
for (ItemStack itemStack : shapelessOreRecipeInputs) {
recipeInputs.add(itemStack);
if (shapelessOreRecipeList.size() > 0) {
recipeInputs.add(new OreDictionaryStack((ItemStack) shapelessOreRecipeList.get(0)));
}
}
else {
if (o != null) {
recipeInputs.add(o);
}
}
}
return ((ShapelessOreRecipe) recipe).getInput();
return ItemHelper.collateStacks(recipeInputs);
}
return null;

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.util.ArrayList;

View file

@ -1,4 +1,4 @@
package com.pahimar.ee3.core.helper;
package com.pahimar.ee3.core.util;
import java.io.InputStream;
import java.net.URL;

View file

@ -6,7 +6,7 @@ import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Strings;
/**

View file

@ -6,7 +6,7 @@ import net.minecraft.inventory.ContainerWorkbench;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Strings;
/**

View file

@ -5,7 +5,7 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Strings;
/**

View file

@ -8,8 +8,8 @@ import net.minecraft.util.Icon;
import net.minecraft.world.World;
import com.pahimar.ee3.EquivalentExchange3;
import com.pahimar.ee3.core.helper.ItemHelper;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.util.ItemHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.lib.Colours;
import com.pahimar.ee3.lib.GuiIds;
import com.pahimar.ee3.lib.Reference;

View file

@ -7,8 +7,8 @@ import net.minecraft.world.World;
import com.pahimar.ee3.EquivalentExchange3;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.helper.TransmutationHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.core.util.TransmutationHelper;
import com.pahimar.ee3.lib.GuiIds;
import com.pahimar.ee3.lib.Strings;

View file

@ -7,8 +7,8 @@ import net.minecraft.world.World;
import com.pahimar.ee3.EquivalentExchange3;
import com.pahimar.ee3.configuration.ConfigurationSettings;
import com.pahimar.ee3.core.helper.NBTHelper;
import com.pahimar.ee3.core.helper.TransmutationHelper;
import com.pahimar.ee3.core.util.NBTHelper;
import com.pahimar.ee3.core.util.TransmutationHelper;
import com.pahimar.ee3.lib.GuiIds;
import com.pahimar.ee3.lib.Sounds;
import com.pahimar.ee3.lib.Strings;

View file

@ -13,8 +13,8 @@ import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraftforge.oredict.OreDictionary;
import com.pahimar.ee3.core.handlers.EquivalencyHandler;
import com.pahimar.ee3.core.helper.GeneralHelper;
import com.pahimar.ee3.core.helper.RecipeHelper;
import com.pahimar.ee3.core.util.GeneralHelper;
import com.pahimar.ee3.core.util.RecipeHelper;
import com.pahimar.ee3.item.ModItems;
import com.pahimar.ee3.lib.Reference;

View file

@ -6,7 +6,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.packet.Packet;
import com.pahimar.ee3.core.helper.ItemHelper;
import com.pahimar.ee3.core.util.ItemHelper;
import com.pahimar.ee3.lib.Strings;
import com.pahimar.ee3.network.PacketTypeHandler;
import com.pahimar.ee3.network.packet.PacketTileWithItemUpdate;

View file

@ -6,7 +6,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.packet.Packet;
import com.pahimar.ee3.core.helper.ItemHelper;
import com.pahimar.ee3.core.util.ItemHelper;
import com.pahimar.ee3.lib.Strings;
import com.pahimar.ee3.network.PacketTypeHandler;
import com.pahimar.ee3.network.packet.PacketTileWithItemUpdate;