From f48f9093abd11c12b40650c3bfdcba94e40c02fa Mon Sep 17 00:00:00 2001 From: Pahimar Date: Fri, 4 Jul 2014 15:18:10 -0400 Subject: [PATCH] Fix some netsync stuff with the Calcinator, as well as the read/write NBT stuff. Also reformat some of the code --- .../client/gui/inventory/GuiCalcinator.java | 15 +- .../com/pahimar/ee3/exchange/EnergyValue.java | 164 ++++--- .../com/pahimar/ee3/exchange/OreStack.java | 26 +- .../com/pahimar/ee3/handler/GuiHandler.java | 39 +- .../ee3/inventory/ContainerCalcinator.java | 168 ++++--- .../pahimar/ee3/inventory/SlotCalcinator.java | 20 +- .../ee3/item/crafting/RecipeAludel.java | 87 ++-- .../com/pahimar/ee3/recipe/RecipesAludel.java | 64 ++- .../com/pahimar/ee3/reference/GuiIds.java | 3 +- .../tileentity/TileEntityAlchemicalChest.java | 180 +++++--- .../ee3/tileentity/TileEntityAludel.java | 122 +++-- .../ee3/tileentity/TileEntityCalcinator.java | 421 ++++++++++++------ .../pahimar/ee3/tileentity/TileEntityEE.java | 20 +- .../ee3/tileentity/TileEntityGlassBell.java | 121 +++-- .../pahimar/ee3/util/CalcinationHelper.java | 36 +- .../java/com/pahimar/ee3/util/ItemHelper.java | 7 +- .../java/com/pahimar/ee3/util/NBTHelper.java | 67 ++- .../com/pahimar/ee3/util/RecipeHelper.java | 8 +- 18 files changed, 960 insertions(+), 608 deletions(-) diff --git a/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiCalcinator.java b/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiCalcinator.java index 5560f7c0..294b6671 100644 --- a/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiCalcinator.java +++ b/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiCalcinator.java @@ -12,24 +12,28 @@ import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) -public class GuiCalcinator extends GuiContainer { +public class GuiCalcinator extends GuiContainer +{ private TileEntityCalcinator tileEntityCalcinator; - public GuiCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator) { + public GuiCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator) + { super(new ContainerCalcinator(inventoryPlayer, tileEntityCalcinator)); ySize = 176; this.tileEntityCalcinator = tileEntityCalcinator; } @Override - protected void drawGuiContainerForegroundLayer(int x, int y) { + protected void drawGuiContainerForegroundLayer(int x, int y) + { String containerName = StatCollector.translateToLocal(tileEntityCalcinator.getInventoryName()); fontRendererObj.drawString(containerName, xSize / 2 - fontRendererObj.getStringWidth(containerName) / 2, 6, 4210752); fontRendererObj.drawString(StatCollector.translateToLocal(Names.Containers.VANILLA_INVENTORY), 8, ySize - 96 + 2, 4210752); } @Override - protected void drawGuiContainerBackgroundLayer(float opacity, int x, int y) { + protected void drawGuiContainerBackgroundLayer(float opacity, int x, int y) + { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(Textures.GUI_CALCINATOR); @@ -39,7 +43,8 @@ public class GuiCalcinator extends GuiContainer { this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize); int scaleAdjustment; - if (this.tileEntityCalcinator.getState() == 1) { + if (this.tileEntityCalcinator.getState() == 1) + { scaleAdjustment = this.tileEntityCalcinator.getBurnTimeRemainingScaled(12); this.drawTexturedModalRect(xStart + 57, yStart + 36 + 23 - scaleAdjustment, 176, 12 - scaleAdjustment, 14, scaleAdjustment + 2); } diff --git a/src/main/java/com/pahimar/ee3/exchange/EnergyValue.java b/src/main/java/com/pahimar/ee3/exchange/EnergyValue.java index b2d4c3db..c44552ba 100644 --- a/src/main/java/com/pahimar/ee3/exchange/EnergyValue.java +++ b/src/main/java/com/pahimar/ee3/exchange/EnergyValue.java @@ -23,31 +23,6 @@ public class EnergyValue implements Comparable, JsonDeserializer, JsonDeserializer componentList) + public EnergyValue(int value) { - this((float) value, componentList); + this((float) value); + } + + public EnergyValue(float value) + { + this(value, EnergyType.DEFAULT); + } + + public EnergyValue(float value, EnergyType energyType) + { + this(value, Arrays.asList(new EnergyComponent(energyType))); } public EnergyValue(float value, List componentList) @@ -108,34 +93,6 @@ public class EnergyValue implements Comparable, JsonDeserializer collateComponents(List uncollatedComponents) { Integer[] componentCount = new Integer[EnergyType.TYPES.length]; @@ -168,25 +125,59 @@ public class EnergyValue implements Comparable, JsonDeserializer componentList) + { + this((float) value, componentList); + } + + /** + * Deserializes an EnergyValue object from the given serialized json String + * + * @param jsonEnergyValue Json encoded String representing a EnergyValue object + * @return The EnergyValue that was encoded as json, or null if a valid EnergyValue could not be decoded from given + * String + */ + @SuppressWarnings("unused") + public static EnergyValue createFromJson(String jsonEnergyValue) + { + try { - throw new ArrayIndexOutOfBoundsException(); + return gsonSerializer.fromJson(jsonEnergyValue, EnergyValue.class); } + catch (JsonSyntaxException exception) + { + LogHelper.error(exception.getMessage()); + } + catch (JsonParseException exception) + { + LogHelper.error(exception.getMessage()); + } + + return null; + } + + @Override + public int hashCode() + { + int hashCode = 1; + + hashCode = 37 * hashCode + Float.floatToIntBits(getValue()); + for (float subValue : components) + { + hashCode = 37 * hashCode + Float.floatToIntBits(subValue); + } + + return hashCode; } public float getValue() @@ -228,20 +219,6 @@ public class EnergyValue implements Comparable, JsonDeserializer, JsonDeserializer } }; + public OreStack(String oreName) + { + this(oreName, 1); + } + public OreStack(String oreName, int stackSize) { this.oreName = oreName; this.stackSize = stackSize; } - public OreStack(String oreName) - { - this(oreName, 1); - } - public OreStack(ItemStack itemStack) { if (itemStack != null && OreDictionary.getOreIDs(itemStack).length > 0) @@ -94,9 +94,7 @@ public class OreStack implements Comparable /** * Deserializes a OreStack object from the given serialized json String * - * @param jsonOreStack - * Json encoded String representing a OreStack object - * + * @param jsonOreStack Json encoded String representing a OreStack object * @return The OreStack that was encoded as json, or null if a valid OreStack could not be decoded from given String */ @SuppressWarnings("unused") @@ -146,18 +144,18 @@ public class OreStack implements Comparable return comparator.compare(oreStack1, oreStack2); } - @Override - public String toString() - { - return String.format("%sxoreStack.%s", stackSize, oreName); - } - @Override public boolean equals(Object object) { return object instanceof OreStack && (comparator.compare(this, (OreStack) object) == Compare.EQUALS); } + @Override + public String toString() + { + return String.format("%sxoreStack.%s", stackSize, oreName); + } + @Override public int compareTo(OreStack oreStack) { diff --git a/src/main/java/com/pahimar/ee3/handler/GuiHandler.java b/src/main/java/com/pahimar/ee3/handler/GuiHandler.java index 32cc9ca9..f44df1c6 100644 --- a/src/main/java/com/pahimar/ee3/handler/GuiHandler.java +++ b/src/main/java/com/pahimar/ee3/handler/GuiHandler.java @@ -13,18 +13,27 @@ import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -public class GuiHandler implements IGuiHandler { +public class GuiHandler implements IGuiHandler +{ @Override - public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { - if (id == GuiIds.ALCHEMICAL_CHEST) { + public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) + { + if (id == GuiIds.ALCHEMICAL_CHEST) + { TileEntityAlchemicalChest tileEntityAlchemicalChest = (TileEntityAlchemicalChest) world.getTileEntity(x, y, z); return new ContainerAlchemicalChest(player.inventory, tileEntityAlchemicalChest); - } else if (id == GuiIds.GLASS_BELL) { + } + else if (id == GuiIds.GLASS_BELL) + { TileEntityGlassBell tileEntityGlassBell = (TileEntityGlassBell) world.getTileEntity(x, y, z); return new ContainerGlassBell(player.inventory, tileEntityGlassBell); - } else if (id == GuiIds.ALCHEMICAL_BAG) { + } + else if (id == GuiIds.ALCHEMICAL_BAG) + { return new ContainerAlchemicalBag(player, new InventoryAlchemicalBag(player.getHeldItem())); - } else if (id == GuiIds.CALCINATOR) { + } + else if (id == GuiIds.CALCINATOR) + { TileEntityCalcinator tileEntityCalcinator = (TileEntityCalcinator) world.getTileEntity(x, y, z); return new ContainerCalcinator(player.inventory, tileEntityCalcinator); } @@ -33,16 +42,24 @@ public class GuiHandler implements IGuiHandler { } @Override - public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { - if (id == GuiIds.ALCHEMICAL_CHEST) { + public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) + { + if (id == GuiIds.ALCHEMICAL_CHEST) + { TileEntityAlchemicalChest tileEntityAlchemicalChest = (TileEntityAlchemicalChest) world.getTileEntity(x, y, z); return new GuiAlchemicalChest(player.inventory, tileEntityAlchemicalChest); - } else if (id == GuiIds.GLASS_BELL) { + } + else if (id == GuiIds.GLASS_BELL) + { TileEntityGlassBell tileEntityGlassBell = (TileEntityGlassBell) world.getTileEntity(x, y, z); return new GuiGlassBell(player.inventory, tileEntityGlassBell); - } else if (id == GuiIds.ALCHEMICAL_BAG) { + } + else if (id == GuiIds.ALCHEMICAL_BAG) + { return new GuiAlchemicalBag(player, new InventoryAlchemicalBag(player.getHeldItem())); - } else if (id == GuiIds.CALCINATOR) { + } + else if (id == GuiIds.CALCINATOR) + { TileEntityCalcinator tileEntityCalcinator = (TileEntityCalcinator) world.getTileEntity(x, y, z); return new GuiCalcinator(player.inventory, tileEntityCalcinator); } diff --git a/src/main/java/com/pahimar/ee3/inventory/ContainerCalcinator.java b/src/main/java/com/pahimar/ee3/inventory/ContainerCalcinator.java index 5e4d6f7a..65436b9d 100644 --- a/src/main/java/com/pahimar/ee3/inventory/ContainerCalcinator.java +++ b/src/main/java/com/pahimar/ee3/inventory/ContainerCalcinator.java @@ -11,13 +11,15 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityFurnace; -public class ContainerCalcinator extends Container { +public class ContainerCalcinator extends Container +{ private TileEntityCalcinator tileEntityCalcinator; private int lastCookTime; // How much longer the Calcinator will burn private int lastBurnTime; // The fuel value for the currently burning fuel private int lastItemCookTime; // How long the current item has been "cooking" - public ContainerCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator) { + public ContainerCalcinator(InventoryPlayer inventoryPlayer, TileEntityCalcinator tileEntityCalcinator) + { this.tileEntityCalcinator = tileEntityCalcinator; // Add the fuel slot to the container @@ -31,75 +33,24 @@ public class ContainerCalcinator extends Container { this.addSlotToContainer(new SlotCalcinator(tileEntityCalcinator, TileEntityCalcinator.OUTPUT_RIGHT_INVENTORY_INDEX, 136, 35)); // Add the player's inventory slots to the container - for (int inventoryRowIndex = 0; inventoryRowIndex < 3; ++inventoryRowIndex) { - for (int inventoryColumnIndex = 0; inventoryColumnIndex < 9; ++inventoryColumnIndex) { + for (int inventoryRowIndex = 0; inventoryRowIndex < 3; ++inventoryRowIndex) + { + for (int inventoryColumnIndex = 0; inventoryColumnIndex < 9; ++inventoryColumnIndex) + { this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 94 + inventoryRowIndex * 18)); } } // Add the player's action bar slots to the container - for (int actionBarSlotIndex = 0; actionBarSlotIndex < 9; ++actionBarSlotIndex) { + for (int actionBarSlotIndex = 0; actionBarSlotIndex < 9; ++actionBarSlotIndex) + { this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 152)); } } @Override - public boolean canInteractWith(EntityPlayer player) { - return true; - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex) { - ItemStack itemStack = null; - Slot slot = (Slot) inventorySlots.get(slotIndex); - - if (slot != null && slot.getHasStack()) { - - ItemStack slotItemStack = slot.getStack(); - itemStack = slotItemStack.copy(); - - /** - * If we are shift-clicking an item out of the Aludel's container, - * attempt to put it in the first available slot in the player's - * inventory - */ - if (slotIndex < TileEntityCalcinator.INVENTORY_SIZE) { - if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INVENTORY_SIZE, inventorySlots.size(), false)) { - return null; - } - } else { - /** - * If the stack being shift-clicked into the Aludel's container - * is a fuel, first try to put it in the fuel slot. If it cannot - * be merged into the fuel slot, try to put it in the input - * slot. - */ - if (TileEntityFurnace.isItemFuel(slotItemStack)) { - if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.FUEL_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false)) { - return null; - } - } - - /** - * Finally, attempt to put stack into the input slot - */ - else if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INPUT_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false)) { - return null; - } - } - - if (slotItemStack.stackSize == 0) { - slot.putStack(null); - } else { - slot.onSlotChanged(); - } - } - - return itemStack; - } - - @Override - public void addCraftingToCrafters(ICrafting iCrafting) { + public void addCraftingToCrafters(ICrafting iCrafting) + { super.addCraftingToCrafters(iCrafting); iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityCalcinator.deviceCookTime); iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityCalcinator.fuelBurnTime); @@ -107,21 +58,26 @@ public class ContainerCalcinator extends Container { } @Override - public void detectAndSendChanges() { + public void detectAndSendChanges() + { super.detectAndSendChanges(); - for (Object crafter : this.crafters) { + for (Object crafter : this.crafters) + { ICrafting icrafting = (ICrafting) crafter; - if (this.lastCookTime != this.tileEntityCalcinator.deviceCookTime) { + if (this.lastCookTime != this.tileEntityCalcinator.deviceCookTime) + { icrafting.sendProgressBarUpdate(this, 0, this.tileEntityCalcinator.deviceCookTime); } - if (this.lastBurnTime != this.tileEntityCalcinator.fuelBurnTime) { + if (this.lastBurnTime != this.tileEntityCalcinator.fuelBurnTime) + { icrafting.sendProgressBarUpdate(this, 1, this.tileEntityCalcinator.fuelBurnTime); } - if (this.lastItemCookTime != this.tileEntityCalcinator.itemCookTime) { + if (this.lastItemCookTime != this.tileEntityCalcinator.itemCookTime) + { icrafting.sendProgressBarUpdate(this, 2, this.tileEntityCalcinator.itemCookTime); } } @@ -131,18 +87,90 @@ public class ContainerCalcinator extends Container { this.lastItemCookTime = this.tileEntityCalcinator.itemCookTime; } + @Override + public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex) + { + ItemStack itemStack = null; + Slot slot = (Slot) inventorySlots.get(slotIndex); + + if (slot != null && slot.getHasStack()) + { + + ItemStack slotItemStack = slot.getStack(); + itemStack = slotItemStack.copy(); + + /** + * If we are shift-clicking an item out of the Aludel's container, + * attempt to put it in the first available slot in the player's + * inventory + */ + if (slotIndex < TileEntityCalcinator.INVENTORY_SIZE) + { + if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INVENTORY_SIZE, inventorySlots.size(), false)) + { + return null; + } + } + else + { + /** + * If the stack being shift-clicked into the Aludel's container + * is a fuel, first try to put it in the fuel slot. If it cannot + * be merged into the fuel slot, try to put it in the input + * slot. + */ + if (TileEntityFurnace.isItemFuel(slotItemStack)) + { + if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.FUEL_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false)) + { + return null; + } + } + + /** + * Finally, attempt to put stack into the input slot + */ + else if (!this.mergeItemStack(slotItemStack, TileEntityCalcinator.INPUT_INVENTORY_INDEX, TileEntityCalcinator.OUTPUT_LEFT_INVENTORY_INDEX, false)) + { + return null; + } + } + + if (slotItemStack.stackSize == 0) + { + slot.putStack(null); + } + else + { + slot.onSlotChanged(); + } + } + + return itemStack; + } + @SideOnly(Side.CLIENT) - public void updateProgressBar(int valueType, int updatedValue) { - if (valueType == 0) { + public void updateProgressBar(int valueType, int updatedValue) + { + if (valueType == 0) + { this.tileEntityCalcinator.deviceCookTime = updatedValue; } - if (valueType == 1) { + if (valueType == 1) + { this.tileEntityCalcinator.fuelBurnTime = updatedValue; } - if (valueType == 2) { + if (valueType == 2) + { this.tileEntityCalcinator.itemCookTime = updatedValue; } } + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return true; + } } diff --git a/src/main/java/com/pahimar/ee3/inventory/SlotCalcinator.java b/src/main/java/com/pahimar/ee3/inventory/SlotCalcinator.java index 6d963cf5..a7dcaca7 100644 --- a/src/main/java/com/pahimar/ee3/inventory/SlotCalcinator.java +++ b/src/main/java/com/pahimar/ee3/inventory/SlotCalcinator.java @@ -6,19 +6,23 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class SlotCalcinator extends Slot { - public SlotCalcinator(IInventory inventory, int x, int y, int z) { +public class SlotCalcinator extends Slot +{ + public SlotCalcinator(IInventory inventory, int x, int y, int z) + { super(inventory, x, y, z); } @Override - public boolean isItemValid(ItemStack par1ItemStack) { - return false; - } - - @Override - public void onPickupFromSlot(EntityPlayer entityPlayer, ItemStack itemStack) { + public void onPickupFromSlot(EntityPlayer entityPlayer, ItemStack itemStack) + { super.onPickupFromSlot(entityPlayer, itemStack); FMLCommonHandler.instance().firePlayerCraftingEvent(entityPlayer, itemStack, inventory); } + + @Override + public boolean isItemValid(ItemStack par1ItemStack) + { + return false; + } } diff --git a/src/main/java/com/pahimar/ee3/item/crafting/RecipeAludel.java b/src/main/java/com/pahimar/ee3/item/crafting/RecipeAludel.java index d3444536..a02690ba 100644 --- a/src/main/java/com/pahimar/ee3/item/crafting/RecipeAludel.java +++ b/src/main/java/com/pahimar/ee3/item/crafting/RecipeAludel.java @@ -9,34 +9,61 @@ import net.minecraftforge.oredict.OreDictionary; import java.util.ArrayList; import java.util.List; -public class RecipeAludel { +public class RecipeAludel +{ private ItemStack recipeOutput; private WrappedStack inputStack; private ItemStack dustStack; - public RecipeAludel(ItemStack recipeOutput, ItemStack inputStack, ItemStack dustStack) { + public RecipeAludel(ItemStack recipeOutput, ItemStack inputStack, ItemStack dustStack) + { this.recipeOutput = recipeOutput.copy(); this.inputStack = new WrappedStack(inputStack); this.dustStack = dustStack.copy(); } - public RecipeAludel(ItemStack recipeOutput, OreStack inputStack, ItemStack dustStack) { + public RecipeAludel(ItemStack recipeOutput, OreStack inputStack, ItemStack dustStack) + { this.recipeOutput = recipeOutput.copy(); this.inputStack = new WrappedStack(inputStack); this.dustStack = dustStack.copy(); } - private static boolean compareStacks(WrappedStack wrappedStack1, WrappedStack wrappedStack2) { - if (wrappedStack1 != null && wrappedStack1.getWrappedStack() != null && wrappedStack2 != null && wrappedStack2.getWrappedStack() != null) { - if (wrappedStack1.getWrappedStack() instanceof ItemStack && wrappedStack2.getWrappedStack() instanceof ItemStack) { + public boolean matches(ItemStack inputStack, ItemStack dustStack) + { + if (OreDictionary.getOreID(inputStack) != -1) + { + if (matches(new WrappedStack(new OreStack(inputStack)), dustStack)) + { + return matches(new WrappedStack(new OreStack(inputStack)), dustStack); + } + } + + return matches(new WrappedStack(inputStack), dustStack); + } + + public boolean matches(WrappedStack inputStack, ItemStack dustStack) + { + return compareStacks(this.inputStack, inputStack) && compareItemStacks(this.dustStack, dustStack); + } + + private static boolean compareStacks(WrappedStack wrappedStack1, WrappedStack wrappedStack2) + { + if (wrappedStack1 != null && wrappedStack1.getWrappedStack() != null && wrappedStack2 != null && wrappedStack2.getWrappedStack() != null) + { + if (wrappedStack1.getWrappedStack() instanceof ItemStack && wrappedStack2.getWrappedStack() instanceof ItemStack) + { ItemStack itemStack1 = (ItemStack) wrappedStack1.getWrappedStack(); itemStack1.stackSize = wrappedStack1.getStackSize(); ItemStack itemStack2 = (ItemStack) wrappedStack2.getWrappedStack(); itemStack2.stackSize = wrappedStack2.getStackSize(); return compareItemStacks(itemStack1, itemStack2); - } else if (wrappedStack1.getWrappedStack() instanceof OreStack && wrappedStack2.getWrappedStack() instanceof OreStack) { - if (((OreStack) wrappedStack1.getWrappedStack()).oreName.equalsIgnoreCase(((OreStack) wrappedStack2.getWrappedStack()).oreName)) { + } + else if (wrappedStack1.getWrappedStack() instanceof OreStack && wrappedStack2.getWrappedStack() instanceof OreStack) + { + if (((OreStack) wrappedStack1.getWrappedStack()).oreName.equalsIgnoreCase(((OreStack) wrappedStack2.getWrappedStack()).oreName)) + { return wrappedStack2.getStackSize() >= wrappedStack1.getStackSize(); } } @@ -45,37 +72,23 @@ public class RecipeAludel { return false; } - private static boolean compareItemStacks(ItemStack itemStack1, ItemStack itemStack2) { + private static boolean compareItemStacks(ItemStack itemStack1, ItemStack itemStack2) + { return ItemHelper.equals(itemStack1, itemStack2); } - public boolean matches(RecipeAludel recipeAludel) { - return compareItemStacks(this.recipeOutput, recipeAludel.recipeOutput) && matches(recipeAludel.inputStack, recipeAludel.dustStack); - } - - public boolean matches(ItemStack inputStack, ItemStack dustStack) { - if (OreDictionary.getOreID(inputStack) != -1) { - if (matches(new WrappedStack(new OreStack(inputStack)), dustStack)) { - return matches(new WrappedStack(new OreStack(inputStack)), dustStack); - } - } - - return matches(new WrappedStack(inputStack), dustStack); - } - - public boolean matches(WrappedStack inputStack, ItemStack dustStack) { - return compareStacks(this.inputStack, inputStack) && compareItemStacks(this.dustStack, dustStack); - } - - public ItemStack getRecipeOutput() { + public ItemStack getRecipeOutput() + { return this.recipeOutput; } - public WrappedStack[] getRecipeInputs() { + public WrappedStack[] getRecipeInputs() + { return new WrappedStack[]{inputStack, new WrappedStack(dustStack)}; } - public List getRecipeInputsAsWrappedStacks() { + public List getRecipeInputsAsWrappedStacks() + { List recipeInputs = new ArrayList(); recipeInputs.add(new WrappedStack(inputStack)); recipeInputs.add(new WrappedStack(dustStack)); @@ -83,16 +96,24 @@ public class RecipeAludel { } @Override - public boolean equals(Object object) { - if (object instanceof RecipeAludel) { + public boolean equals(Object object) + { + if (object instanceof RecipeAludel) + { return matches((RecipeAludel) object); } return false; } + public boolean matches(RecipeAludel recipeAludel) + { + return compareItemStacks(this.recipeOutput, recipeAludel.recipeOutput) && matches(recipeAludel.inputStack, recipeAludel.dustStack); + } + @Override - public String toString() { + public String toString() + { return String.format("Output: %s, Input: %s, Dust: %s", recipeOutput, inputStack, dustStack); } } diff --git a/src/main/java/com/pahimar/ee3/recipe/RecipesAludel.java b/src/main/java/com/pahimar/ee3/recipe/RecipesAludel.java index 3d354c02..d00eceba 100644 --- a/src/main/java/com/pahimar/ee3/recipe/RecipesAludel.java +++ b/src/main/java/com/pahimar/ee3/recipe/RecipesAludel.java @@ -13,17 +13,21 @@ import net.minecraftforge.oredict.OreDictionary; import java.util.ArrayList; import java.util.List; -public class RecipesAludel { +public class RecipesAludel +{ private static RecipesAludel aludelRegistry = null; private List aludelRecipes; - private RecipesAludel() { + private RecipesAludel() + { aludelRecipes = new ArrayList(); } - public static RecipesAludel getInstance() { - if (aludelRegistry == null) { + public static RecipesAludel getInstance() + { + if (aludelRegistry == null) + { aludelRegistry = new RecipesAludel(); aludelRegistry.init(); } @@ -31,7 +35,8 @@ public class RecipesAludel { return aludelRegistry; } - private void init() { + private void init() + { // Ash + Verdant = Azure aludelRegistry.addRecipe(new ItemStack(ModItems.alchemicalDust, 1, 2), new ItemStack(ModItems.alchemicalDust, 1, 0), new ItemStack(ModItems.alchemicalDust, 32, 1)); @@ -64,25 +69,34 @@ public class RecipesAludel { aludelRegistry.addRecipe(new ItemStack(ModItems.stoneMinium), new ItemStack(ModItems.stoneInert), new ItemStack(ModItems.alchemicalDust, 8, 3)); } - public void addRecipe(ItemStack recipeOutput, ItemStack recipeInputStack, ItemStack recipeInputDust) { + public void addRecipe(ItemStack recipeOutput, ItemStack recipeInputStack, ItemStack recipeInputDust) + { addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust)); } - public void addRecipe(ItemStack recipeOutput, OreStack recipeInputStack, ItemStack recipeInputDust) { - addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust)); - } - - public void addRecipe(RecipeAludel recipeAludel) { - if (!aludelRecipes.contains(recipeAludel)) { + public void addRecipe(RecipeAludel recipeAludel) + { + if (!aludelRecipes.contains(recipeAludel)) + { aludelRecipes.add(recipeAludel); - } else { + } + else + { LogHelper.debug(String.format("Attempted to add RecipeAludel '%s' but already exists in the recipe list", recipeAludel)); } } - public ItemStack getResult(ItemStack recipeInputStack, ItemStack recipeInputDust) { - for (RecipeAludel recipeAludel : aludelRecipes) { - if (recipeAludel.matches(recipeInputStack, recipeInputDust)) { + public void addRecipe(ItemStack recipeOutput, OreStack recipeInputStack, ItemStack recipeInputDust) + { + addRecipe(new RecipeAludel(recipeOutput, recipeInputStack, recipeInputDust)); + } + + public ItemStack getResult(ItemStack recipeInputStack, ItemStack recipeInputDust) + { + for (RecipeAludel recipeAludel : aludelRecipes) + { + if (recipeAludel.matches(recipeInputStack, recipeInputDust)) + { return recipeAludel.getRecipeOutput(); } } @@ -90,9 +104,12 @@ public class RecipesAludel { return null; } - public RecipeAludel getRecipe(ItemStack recipeInputStack, ItemStack recipeInputDust) { - for (RecipeAludel recipeAludel : aludelRecipes) { - if (recipeAludel.matches(recipeInputStack, recipeInputDust)) { + public RecipeAludel getRecipe(ItemStack recipeInputStack, ItemStack recipeInputDust) + { + for (RecipeAludel recipeAludel : aludelRecipes) + { + if (recipeAludel.matches(recipeInputStack, recipeInputDust)) + { return recipeAludel; } } @@ -100,12 +117,15 @@ public class RecipesAludel { return null; } - public List getRecipes() { + public List getRecipes() + { return aludelRecipes; } - public void debugDumpMap() { - for (RecipeAludel recipeAludel : aludelRecipes) { + public void debugDumpMap() + { + for (RecipeAludel recipeAludel : aludelRecipes) + { LogHelper.debug(String.format("Output: %s, Input Stack: %s, Dust Stack: %s", recipeAludel.getRecipeOutput(), recipeAludel.getRecipeInputs()[0], recipeAludel.getRecipeInputs()[1])); } } diff --git a/src/main/java/com/pahimar/ee3/reference/GuiIds.java b/src/main/java/com/pahimar/ee3/reference/GuiIds.java index 1ecce27a..0919b525 100644 --- a/src/main/java/com/pahimar/ee3/reference/GuiIds.java +++ b/src/main/java/com/pahimar/ee3/reference/GuiIds.java @@ -1,6 +1,7 @@ package com.pahimar.ee3.reference; -public final class GuiIds { +public final class GuiIds +{ public static final int PORTABLE_CRAFTING = 0; public static final int CALCINATOR = 1; public static final int ALUDEL = 2; diff --git a/src/main/java/com/pahimar/ee3/tileentity/TileEntityAlchemicalChest.java b/src/main/java/com/pahimar/ee3/tileentity/TileEntityAlchemicalChest.java index d95d9b5d..fd989427 100644 --- a/src/main/java/com/pahimar/ee3/tileentity/TileEntityAlchemicalChest.java +++ b/src/main/java/com/pahimar/ee3/tileentity/TileEntityAlchemicalChest.java @@ -10,7 +10,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -public class TileEntityAlchemicalChest extends TileEntityEE implements IInventory { +public class TileEntityAlchemicalChest extends TileEntityEE implements IInventory +{ /** * The current angle of the chest lid (between 0 and 1) */ @@ -36,38 +37,71 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor */ private ItemStack[] inventory; - public TileEntityAlchemicalChest(int metaData) { + public TileEntityAlchemicalChest(int metaData) + { super(); this.state = (byte) metaData; - if (metaData == 0) { + if (metaData == 0) + { inventory = new ItemStack[ContainerAlchemicalChest.SMALL_INVENTORY_SIZE]; - } else if (metaData == 1) { + } + else if (metaData == 1) + { inventory = new ItemStack[ContainerAlchemicalChest.MEDIUM_INVENTORY_SIZE]; - } else if (metaData == 2) { + } + else if (metaData == 2) + { inventory = new ItemStack[ContainerAlchemicalChest.LARGE_INVENTORY_SIZE]; } } @Override - public int getSizeInventory() { + public void readFromNBT(NBTTagCompound nbtTagCompound) + { + super.readFromNBT(nbtTagCompound); + + // Read in the ItemStacks in the inventory from NBT + NBTTagList tagList = nbtTagCompound.getTagList("Items", 10); + inventory = new ItemStack[this.getSizeInventory()]; + for (int i = 0; i < tagList.tagCount(); ++i) + { + NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); + byte slotIndex = tagCompound.getByte("Slot"); + if (slotIndex >= 0 && slotIndex < inventory.length) + { + inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound); + } + } + } + + @Override + public int getSizeInventory() + { return inventory.length; } @Override - public ItemStack getStackInSlot(int slotIndex) { + public ItemStack getStackInSlot(int slotIndex) + { return inventory[slotIndex]; } @Override - public ItemStack decrStackSize(int slotIndex, int decrementAmount) { + public ItemStack decrStackSize(int slotIndex, int decrementAmount) + { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { - if (itemStack.stackSize <= decrementAmount) { + if (itemStack != null) + { + if (itemStack.stackSize <= decrementAmount) + { setInventorySlotContents(slotIndex, null); - } else { + } + else + { itemStack = itemStack.splitStack(decrementAmount); - if (itemStack.stackSize == 0) { + if (itemStack.stackSize == 0) + { setInventorySlotContents(slotIndex, null); } } @@ -77,21 +111,27 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor } @Override - public ItemStack getStackInSlotOnClosing(int slotIndex) { - if (inventory[slotIndex] != null) { + public ItemStack getStackInSlotOnClosing(int slotIndex) + { + if (inventory[slotIndex] != null) + { ItemStack itemStack = inventory[slotIndex]; inventory[slotIndex] = null; return itemStack; - } else { + } + else + { return null; } } @Override - public void setInventorySlotContents(int slotIndex, ItemStack itemStack) { + public void setInventorySlotContents(int slotIndex, ItemStack itemStack) + { inventory[slotIndex] = itemStack; - if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()) { + if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()) + { itemStack.stackSize = this.getInventoryStackLimit(); } @@ -100,17 +140,20 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor } @Override - public String getInventoryName() { + public String getInventoryName() + { return this.hasCustomName() ? this.getCustomName() : Names.Containers.ALCHEMICAL_CHEST; } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomInventoryName() + { return this.hasCustomName(); } @Override - public int getInventoryStackLimit() { + public int getInventoryStackLimit() + { return 64; } @@ -120,64 +163,42 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor * @param entityplayer The player we are checking to see if they can use this chest */ @Override - public boolean isUseableByPlayer(EntityPlayer entityplayer) { - return true; - } - - /** - * Called when a client event is received with the event number and argument, see World.sendClientEvent - */ - @Override - public boolean receiveClientEvent(int eventID, int numUsingPlayers) { - if (eventID == 1) { - this.numUsingPlayers = numUsingPlayers; - return true; - } else { - return super.receiveClientEvent(eventID, numUsingPlayers); - } - } - - @Override - public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) { + public boolean isUseableByPlayer(EntityPlayer entityplayer) + { return true; } @Override - public void openInventory() { + public void openInventory() + { ++numUsingPlayers; worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers); } @Override - public void closeInventory() { + public void closeInventory() + { --numUsingPlayers; worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers); } @Override - public void readFromNBT(NBTTagCompound nbtTagCompound) { - super.readFromNBT(nbtTagCompound); - - // Read in the ItemStacks in the inventory from NBT - NBTTagList tagList = nbtTagCompound.getTagList("Items", 10); - inventory = new ItemStack[this.getSizeInventory()]; - for (int i = 0; i < tagList.tagCount(); ++i) { - NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); - byte slotIndex = tagCompound.getByte("Slot"); - if (slotIndex >= 0 && slotIndex < inventory.length) { - inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound); - } - } + public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) + { + return true; } @Override - public void writeToNBT(NBTTagCompound nbtTagCompound) { + public void writeToNBT(NBTTagCompound nbtTagCompound) + { super.writeToNBT(nbtTagCompound); // Write the ItemStacks in the inventory to NBT NBTTagList tagList = new NBTTagList(); - for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) { - if (inventory[currentIndex] != null) { + for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) + { + if (inventory[currentIndex] != null) + { NBTTagCompound tagCompound = new NBTTagCompound(); tagCompound.setByte("Slot", (byte) currentIndex); inventory[currentIndex].writeToNBT(tagCompound); @@ -192,10 +213,12 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor * ticks and creates a new spawn inside its implementation. */ @Override - public void updateEntity() { + public void updateEntity() + { super.updateEntity(); - if (++ticksSinceSync % 20 * 4 == 0) { + if (++ticksSinceSync % 20 * 4 == 0) + { worldObj.addBlockEvent(xCoord, yCoord, zCoord, ModBlocks.alchemicalChest, 1, numUsingPlayers); } @@ -203,34 +226,59 @@ public class TileEntityAlchemicalChest extends TileEntityEE implements IInventor float angleIncrement = 0.1F; double adjustedXCoord, adjustedZCoord; - if (numUsingPlayers > 0 && lidAngle == 0.0F) { + if (numUsingPlayers > 0 && lidAngle == 0.0F) + { adjustedXCoord = xCoord + 0.5D; adjustedZCoord = zCoord + 0.5D; worldObj.playSoundEffect(adjustedXCoord, yCoord + 0.5D, adjustedZCoord, Sounds.CHEST_OPEN, 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F); } - if (numUsingPlayers == 0 && lidAngle > 0.0F || numUsingPlayers > 0 && lidAngle < 1.0F) { + if (numUsingPlayers == 0 && lidAngle > 0.0F || numUsingPlayers > 0 && lidAngle < 1.0F) + { float var8 = lidAngle; - if (numUsingPlayers > 0) { + if (numUsingPlayers > 0) + { lidAngle += angleIncrement; - } else { + } + else + { lidAngle -= angleIncrement; } - if (lidAngle > 1.0F) { + if (lidAngle > 1.0F) + { lidAngle = 1.0F; } - if (lidAngle < 0.5F && var8 >= 0.5F) { + if (lidAngle < 0.5F && var8 >= 0.5F) + { adjustedXCoord = xCoord + 0.5D; adjustedZCoord = zCoord + 0.5D; worldObj.playSoundEffect(adjustedXCoord, yCoord + 0.5D, adjustedZCoord, Sounds.CHEST_CLOSE, 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F); } - if (lidAngle < 0.0F) { + if (lidAngle < 0.0F) + { lidAngle = 0.0F; } } } + + /** + * Called when a client event is received with the event number and argument, see World.sendClientEvent + */ + @Override + public boolean receiveClientEvent(int eventID, int numUsingPlayers) + { + if (eventID == 1) + { + this.numUsingPlayers = numUsingPlayers; + return true; + } + else + { + return super.receiveClientEvent(eventID, numUsingPlayers); + } + } } diff --git a/src/main/java/com/pahimar/ee3/tileentity/TileEntityAludel.java b/src/main/java/com/pahimar/ee3/tileentity/TileEntityAludel.java index ef645483..aaca96b5 100644 --- a/src/main/java/com/pahimar/ee3/tileentity/TileEntityAludel.java +++ b/src/main/java/com/pahimar/ee3/tileentity/TileEntityAludel.java @@ -49,9 +49,12 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory @Override public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) { - if (worldObj.getTileEntity(xCoord, yCoord + 1, zCoord) instanceof TileEntityGlassBell) { + if (worldObj.getTileEntity(xCoord, yCoord + 1, zCoord) instanceof TileEntityGlassBell) + { return isItemValidForSlot(slotIndex, itemStack); - } else { + } + else + { return false; } } @@ -78,12 +81,17 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory public ItemStack decrStackSize(int slotIndex, int decrementAmount) { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { - if (itemStack.stackSize <= decrementAmount) { + if (itemStack != null) + { + if (itemStack.stackSize <= decrementAmount) + { setInventorySlotContents(slotIndex, null); - } else { + } + else + { itemStack = itemStack.splitStack(decrementAmount); - if (itemStack.stackSize == 0) { + if (itemStack.stackSize == 0) + { setInventorySlotContents(slotIndex, null); } } @@ -96,7 +104,8 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory public ItemStack getStackInSlotOnClosing(int slotIndex) { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { + if (itemStack != null) + { setInventorySlotContents(slotIndex, null); } return itemStack; @@ -106,7 +115,8 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory public void setInventorySlotContents(int slotIndex, ItemStack itemStack) { inventory[slotIndex] = itemStack; - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { itemStack.stackSize = getInventoryStackLimit(); } } @@ -150,17 +160,22 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory @Override public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) { - switch (slotIndex) { - case FUEL_INVENTORY_INDEX: { + switch (slotIndex) + { + case FUEL_INVENTORY_INDEX: + { return TileEntityFurnace.isItemFuel(itemStack); } - case INPUT_INVENTORY_INDEX: { + case INPUT_INVENTORY_INDEX: + { return true; } - case DUST_INVENTORY_INDEX: { + case DUST_INVENTORY_INDEX: + { return itemStack.getItem() instanceof ItemAlchemicalDust; } - default: { + default: + { return false; } } @@ -173,50 +188,33 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory } @SideOnly(Side.CLIENT) - public int getCookProgressScaled(int scale) { + public int getCookProgressScaled(int scale) + { return this.itemCookTime * scale / 200; } @SideOnly(Side.CLIENT) - public int getBurnTimeRemainingScaled(int scale) { - if (this.fuelBurnTime > 0) { + public int getBurnTimeRemainingScaled(int scale) + { + if (this.fuelBurnTime > 0) + { return this.deviceCookTime * scale / this.fuelBurnTime; } return 0; } - private boolean canInfuse() { - if (!hasGlassBell || inventory[INPUT_INVENTORY_INDEX] == null || inventory[DUST_INVENTORY_INDEX] == null) { - return false; - } else { - ItemStack infusedItemStack = RecipesAludel.getInstance().getResult(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]); - - if (infusedItemStack == null) { - return false; - } - - if (inventory[OUTPUT_INVENTORY_INDEX] == null) { - return true; - } else { - boolean outputEquals = this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(infusedItemStack); - int mergedOutputStackSize = this.inventory[OUTPUT_INVENTORY_INDEX].stackSize + infusedItemStack.stackSize; - - if (outputEquals) { - return mergedOutputStackSize <= getInventoryStackLimit() && mergedOutputStackSize <= infusedItemStack.getMaxStackSize(); - } - } - } - - return false; - } - - public void infuseItem() { - if (this.canInfuse()) { + public void infuseItem() + { + if (this.canInfuse()) + { RecipeAludel recipe = RecipesAludel.getInstance().getRecipe(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]); - if (this.inventory[OUTPUT_INVENTORY_INDEX] == null) { + if (this.inventory[OUTPUT_INVENTORY_INDEX] == null) + { this.inventory[OUTPUT_INVENTORY_INDEX] = recipe.getRecipeOutput().copy(); - } else if (this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(recipe.getRecipeOutput())) { + } + else if (this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(recipe.getRecipeOutput())) + { inventory[OUTPUT_INVENTORY_INDEX].stackSize += recipe.getRecipeOutput().stackSize; } @@ -224,4 +222,38 @@ public class TileEntityAludel extends TileEntityEE implements ISidedInventory decrStackSize(DUST_INVENTORY_INDEX, recipe.getRecipeInputs()[1].getStackSize()); } } + + private boolean canInfuse() + { + if (!hasGlassBell || inventory[INPUT_INVENTORY_INDEX] == null || inventory[DUST_INVENTORY_INDEX] == null) + { + return false; + } + else + { + ItemStack infusedItemStack = RecipesAludel.getInstance().getResult(inventory[INPUT_INVENTORY_INDEX], inventory[DUST_INVENTORY_INDEX]); + + if (infusedItemStack == null) + { + return false; + } + + if (inventory[OUTPUT_INVENTORY_INDEX] == null) + { + return true; + } + else + { + boolean outputEquals = this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(infusedItemStack); + int mergedOutputStackSize = this.inventory[OUTPUT_INVENTORY_INDEX].stackSize + infusedItemStack.stackSize; + + if (outputEquals) + { + return mergedOutputStackSize <= getInventoryStackLimit() && mergedOutputStackSize <= infusedItemStack.getMaxStackSize(); + } + } + } + + return false; + } } diff --git a/src/main/java/com/pahimar/ee3/tileentity/TileEntityCalcinator.java b/src/main/java/com/pahimar/ee3/tileentity/TileEntityCalcinator.java index 0b546551..6fbceafc 100644 --- a/src/main/java/com/pahimar/ee3/tileentity/TileEntityCalcinator.java +++ b/src/main/java/com/pahimar/ee3/tileentity/TileEntityCalcinator.java @@ -10,12 +10,15 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.network.Packet; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.tileentity.TileEntityHopper; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCalcinator extends TileEntityEE implements ISidedInventory { +public class TileEntityCalcinator extends TileEntityEE implements ISidedInventory +{ public static final int INVENTORY_SIZE = 4; public static final int FUEL_INVENTORY_INDEX = 0; public static final int INPUT_INVENTORY_INDEX = 1; @@ -34,51 +37,81 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor */ private ItemStack[] inventory; - public TileEntityCalcinator() { + public TileEntityCalcinator() + { inventory = new ItemStack[INVENTORY_SIZE]; } - public static boolean suckInItems(TileEntityCalcinator tileEntityCalcinator) { - EntityItem entityitem = TileEntityHopper.func_145897_a(tileEntityCalcinator.getWorldObj(), tileEntityCalcinator.xCoord, tileEntityCalcinator.yCoord + 1.0D, tileEntityCalcinator.zCoord); - - return entityitem != null && TileEntityHopper.func_145898_a(tileEntityCalcinator, entityitem); - } - @Override - public int[] getAccessibleSlotsFromSide(int side) { + public int[] getAccessibleSlotsFromSide(int side) + { return side == ForgeDirection.DOWN.ordinal() ? new int[]{FUEL_INVENTORY_INDEX, OUTPUT_LEFT_INVENTORY_INDEX, OUTPUT_RIGHT_INVENTORY_INDEX} : new int[]{INPUT_INVENTORY_INDEX, OUTPUT_LEFT_INVENTORY_INDEX, OUTPUT_RIGHT_INVENTORY_INDEX}; } @Override - public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) { + public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) + { return isItemValidForSlot(slotIndex, itemStack); } @Override - public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side) { + public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side) + { return slotIndex == OUTPUT_LEFT_INVENTORY_INDEX || slotIndex == OUTPUT_RIGHT_INVENTORY_INDEX; } @Override - public int getSizeInventory() { + public void readFromNBT(NBTTagCompound nbtTagCompound) + { + super.readFromNBT(nbtTagCompound); + + // Read in the ItemStacks in the inventory from NBT + NBTTagList tagList = nbtTagCompound.getTagList("Items", 10); + inventory = new ItemStack[this.getSizeInventory()]; + for (int i = 0; i < tagList.tagCount(); ++i) + { + NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); + byte slotIndex = tagCompound.getByte("Slot"); + if (slotIndex >= 0 && slotIndex < inventory.length) + { + inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound); + } + } + + deviceCookTime = nbtTagCompound.getInteger("deviceCookTime"); + fuelBurnTime = nbtTagCompound.getInteger("fuelBurnTime"); + itemCookTime = nbtTagCompound.getInteger("itemCookTime"); + itemSuckCoolDown = nbtTagCompound.getInteger("itemSuckCoolDown"); + } + + @Override + public int getSizeInventory() + { return inventory.length; } @Override - public ItemStack getStackInSlot(int slotIndex) { + public ItemStack getStackInSlot(int slotIndex) + { sendDustPileData(); return inventory[slotIndex]; } @Override - public ItemStack decrStackSize(int slotIndex, int decrementAmount) { + public ItemStack decrStackSize(int slotIndex, int decrementAmount) + { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { - if (itemStack.stackSize <= decrementAmount) { + if (itemStack != null) + { + if (itemStack.stackSize <= decrementAmount) + { setInventorySlotContents(slotIndex, null); - } else { + } + else + { itemStack = itemStack.splitStack(decrementAmount); - if (itemStack.stackSize == 0) { + if (itemStack.stackSize == 0) + { setInventorySlotContents(slotIndex, null); } } @@ -88,90 +121,161 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor } @Override - public ItemStack getStackInSlotOnClosing(int slotIndex) { + public ItemStack getStackInSlotOnClosing(int slotIndex) + { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { + if (itemStack != null) + { setInventorySlotContents(slotIndex, null); } return itemStack; } @Override - public void setInventorySlotContents(int slotIndex, ItemStack itemStack) { + public void setInventorySlotContents(int slotIndex, ItemStack itemStack) + { inventory[slotIndex] = itemStack; - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { itemStack.stackSize = getInventoryStackLimit(); } } @Override - public String getInventoryName() { + public String getInventoryName() + { return this.hasCustomName() ? this.getCustomName() : Names.Containers.CALCINATOR; } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomInventoryName() + { return this.hasCustomName(); } @Override - public int getInventoryStackLimit() { + public int getInventoryStackLimit() + { return 64; } @Override - public boolean isUseableByPlayer(EntityPlayer entityplayer) { + public boolean isUseableByPlayer(EntityPlayer entityplayer) + { return true; } @Override - public void openInventory() { + public void openInventory() + { // NOOP } @Override - public void closeInventory() { + public void closeInventory() + { // NOOP } @Override - public boolean isItemValidForSlot(int var1, ItemStack var2) { + public boolean isItemValidForSlot(int var1, ItemStack var2) + { return false; } - @Override - public boolean receiveClientEvent(int eventId, int eventData) { - if (eventId == 1) { - this.state = (byte) eventData; - // NAME UPDATE - // this.worldObj.updateAllLightTypes(this.xCoord, this.yCoord, this.zCoord); - this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord); - return true; - } else if (eventId == 2) { - this.leftStackSize = (byte) eventData; - return true; - } else if (eventId == 3) { - this.leftStackMeta = (byte) eventData; - return true; - } else if (eventId == 4) { - this.rightStackSize = (byte) eventData; - return true; - } else if (eventId == 5) { - this.rightStackMeta = (byte) eventData; - return true; - } else { - return super.receiveClientEvent(eventId, eventData); + private void sendDustPileData() + { + if (this.getBlockType() != null) + { + this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 2, getLeftStackSize()); + this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 3, getLeftStackMeta()); + this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 4, getRightStackSize()); + this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 5, getRightStackMeta()); } } + private int getLeftStackSize() + { + if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null) + { + return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize; + } + + return 0; + } + + private int getLeftStackMeta() + { + if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null) + { + return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].getItemDamage(); + } + + return 0; + } + + private int getRightStackSize() + { + if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null) + { + return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize; + } + + return 0; + } + + private int getRightStackMeta() + { + if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null) + { + return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].getItemDamage(); + } + + return 0; + } + + @Override + public void writeToNBT(NBTTagCompound nbtTagCompound) + { + super.writeToNBT(nbtTagCompound); + + // Write the ItemStacks in the inventory to NBT + NBTTagList tagList = new NBTTagList(); + for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) + { + if (inventory[currentIndex] != null) + { + NBTTagCompound tagCompound = new NBTTagCompound(); + tagCompound.setByte("Slot", (byte) currentIndex); + inventory[currentIndex].writeToNBT(tagCompound); + tagList.appendTag(tagCompound); + } + } + nbtTagCompound.setTag("Items", tagList); + nbtTagCompound.setInteger("deviceCookTime", deviceCookTime); + nbtTagCompound.setInteger("fuelBurnTime", fuelBurnTime); + nbtTagCompound.setInteger("itemCookTime", itemCookTime); + nbtTagCompound.setInteger("itemSuckCoolDown", itemSuckCoolDown); + } + + @Override + public Packet getDescriptionPacket() + { + sendDustPileData(); + return PacketHandler.INSTANCE.getPacketFrom(new MessageTileCalcinator(this)); + } + @SideOnly(Side.CLIENT) - public int getCookProgressScaled(int scale) { + public int getCookProgressScaled(int scale) + { return this.itemCookTime * scale / 200; } @SideOnly(Side.CLIENT) - public int getBurnTimeRemainingScaled(int scale) { - if (this.fuelBurnTime > 0) { + public int getBurnTimeRemainingScaled(int scale) + { + if (this.fuelBurnTime > 0) + { return this.deviceCookTime * scale / this.fuelBurnTime; } @@ -179,32 +283,34 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor } @Override - public Packet getDescriptionPacket() { - return PacketHandler.INSTANCE.getPacketFrom(new MessageTileCalcinator(this)); - } - - @Override - public void updateEntity() { + public void updateEntity() + { boolean isBurning = this.deviceCookTime > 0; boolean sendUpdate = false; // If the Calcinator still has burn time, decrement it - if (this.deviceCookTime > 0) { + if (this.deviceCookTime > 0) + { this.deviceCookTime--; } - if (!this.worldObj.isRemote) { + if (!this.worldObj.isRemote) + { // Start "cooking" a new item, if we can - if (this.deviceCookTime == 0 && this.canCalcinate()) { + if (this.deviceCookTime == 0 && this.canCalcinate()) + { this.fuelBurnTime = this.deviceCookTime = TileEntityFurnace.getItemBurnTime(this.inventory[FUEL_INVENTORY_INDEX]); - if (this.deviceCookTime > 0) { + if (this.deviceCookTime > 0) + { sendUpdate = true; - if (this.inventory[FUEL_INVENTORY_INDEX] != null) { + if (this.inventory[FUEL_INVENTORY_INDEX] != null) + { --this.inventory[FUEL_INVENTORY_INDEX].stackSize; - if (this.inventory[FUEL_INVENTORY_INDEX].stackSize == 0) { + if (this.inventory[FUEL_INVENTORY_INDEX].stackSize == 0) + { this.inventory[FUEL_INVENTORY_INDEX] = this.inventory[FUEL_INVENTORY_INDEX].getItem().getContainerItem(inventory[FUEL_INVENTORY_INDEX]); } } @@ -212,35 +318,45 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor } // Continue "cooking" the same item, if we can - if (this.deviceCookTime > 0 && this.canCalcinate()) { + if (this.deviceCookTime > 0 && this.canCalcinate()) + { this.itemCookTime++; - if (this.itemCookTime == 200) { + if (this.itemCookTime == 200) + { this.itemCookTime = 0; this.calcinateItem(); sendUpdate = true; } - } else { + } + else + { this.itemCookTime = 0; } // If the state has changed, catch that something changed - if (isBurning != this.deviceCookTime > 0) { + if (isBurning != this.deviceCookTime > 0) + { sendUpdate = true; } //Item sucking - if (this.itemSuckCoolDown > 0) { + if (this.itemSuckCoolDown > 0) + { itemSuckCoolDown--; - } else { - if (suckInItems(this)) { + } + else + { + if (suckInItems(this)) + { markDirty(); } itemSuckCoolDown = DEFAULT_ITEM_SUCK_COOL_DOWN; } } - if (sendUpdate) { + if (sendUpdate) + { this.markDirty(); this.state = this.deviceCookTime > 0 ? (byte) 1 : (byte) 0; this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 1, this.state); @@ -249,36 +365,66 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor } } - public void calcinateItem() { - if (this.canCalcinate()) { - ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]); - addItemStackToOutput(alchemicalDustStack.copy()); - - this.inventory[INPUT_INVENTORY_INDEX].stackSize--; - - if (this.inventory[INPUT_INVENTORY_INDEX].stackSize <= 0) { - this.inventory[INPUT_INVENTORY_INDEX] = null; - } + @Override + public boolean receiveClientEvent(int eventId, int eventData) + { + if (eventId == 1) + { + this.state = (byte) eventData; + // NAME UPDATE + // this.worldObj.updateAllLightTypes(this.xCoord, this.yCoord, this.zCoord); + this.worldObj.func_147451_t(this.xCoord, this.yCoord, this.zCoord); + return true; + } + else if (eventId == 2) + { + this.leftStackSize = (byte) eventData; + return true; + } + else if (eventId == 3) + { + this.leftStackMeta = (byte) eventData; + return true; + } + else if (eventId == 4) + { + this.rightStackSize = (byte) eventData; + return true; + } + else if (eventId == 5) + { + this.rightStackMeta = (byte) eventData; + return true; + } + else + { + return super.receiveClientEvent(eventId, eventData); } } - private boolean canCalcinate() { - if (inventory[INPUT_INVENTORY_INDEX] == null) { + private boolean canCalcinate() + { + if (inventory[INPUT_INVENTORY_INDEX] == null) + { return false; - } else { + } + else + { ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]); /** * If we don't get a calcination result, then return false */ - if (alchemicalDustStack == null) { + if (alchemicalDustStack == null) + { return false; } /** * If either slot is empty, return true (we have a valid calcination result */ - if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null || this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null) { + if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null || this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null) + { return true; } @@ -288,84 +434,79 @@ public class TileEntityCalcinator extends TileEntityEE implements ISidedInventor boolean rightEquals = this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack); int rightResult = this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize + alchemicalDustStack.stackSize; - if (!leftEquals && !rightEquals) { + if (!leftEquals && !rightEquals) + { return false; - } else if (leftEquals && !rightEquals) { + } + else if (leftEquals && !rightEquals) + { return leftResult <= getInventoryStackLimit() && leftResult <= alchemicalDustStack.getMaxStackSize(); - } else if (!leftEquals) { + } + else if (!leftEquals) + { return rightResult <= getInventoryStackLimit() && rightResult <= alchemicalDustStack.getMaxStackSize(); - } else { + } + else + { return leftResult <= getInventoryStackLimit() && leftResult <= alchemicalDustStack.getMaxStackSize() || rightResult <= getInventoryStackLimit() && rightResult <= alchemicalDustStack.getMaxStackSize(); } } } - private void addItemStackToOutput(ItemStack alchemicalDustStack) { + public void calcinateItem() + { + if (this.canCalcinate()) + { + ItemStack alchemicalDustStack = CalcinationHelper.getCalcinationResult(this.inventory[INPUT_INVENTORY_INDEX]); + addItemStackToOutput(alchemicalDustStack.copy()); + + this.inventory[INPUT_INVENTORY_INDEX].stackSize--; + + if (this.inventory[INPUT_INVENTORY_INDEX].stackSize <= 0) + { + this.inventory[INPUT_INVENTORY_INDEX] = null; + } + } + } + + public static boolean suckInItems(TileEntityCalcinator tileEntityCalcinator) + { + EntityItem entityitem = TileEntityHopper.func_145897_a(tileEntityCalcinator.getWorldObj(), tileEntityCalcinator.xCoord, tileEntityCalcinator.yCoord + 1.0D, tileEntityCalcinator.zCoord); + + return entityitem != null && TileEntityHopper.func_145898_a(tileEntityCalcinator, entityitem); + } + + private void addItemStackToOutput(ItemStack alchemicalDustStack) + { int maxStackSize = Math.min(getInventoryStackLimit(), alchemicalDustStack.getMaxStackSize()); - if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null) { + if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] == null) + { this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] = alchemicalDustStack; return; } if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack) - && this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize < maxStackSize) { + && this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize < maxStackSize) + { int addedSize = Math.min(alchemicalDustStack.stackSize, maxStackSize - this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize); alchemicalDustStack.stackSize -= addedSize; this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize += addedSize; - if (alchemicalDustStack == null || alchemicalDustStack.stackSize == 0) { + if (alchemicalDustStack == null || alchemicalDustStack.stackSize == 0) + { return; } } - if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null) { + if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] == null) + { this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] = alchemicalDustStack; return; } if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].isItemEqual(alchemicalDustStack) - && this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize < maxStackSize) { + && this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize < maxStackSize) + { int addedSize = Math.min(alchemicalDustStack.stackSize, maxStackSize - this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize); alchemicalDustStack.stackSize -= addedSize; this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize += addedSize; } } - - private int getLeftStackSize() { - if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null) { - return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].stackSize; - } - - return 0; - } - - private int getLeftStackMeta() { - if (this.inventory[OUTPUT_LEFT_INVENTORY_INDEX] != null) { - return this.inventory[OUTPUT_LEFT_INVENTORY_INDEX].getItemDamage(); - } - - return 0; - } - - private int getRightStackSize() { - if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null) { - return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].stackSize; - } - - return 0; - } - - private int getRightStackMeta() { - if (this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX] != null) { - return this.inventory[OUTPUT_RIGHT_INVENTORY_INDEX].getItemDamage(); - } - - return 0; - } - - private void sendDustPileData() { - if (this.getBlockType() != null) { - this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 2, getLeftStackSize()); - this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 3, getLeftStackMeta()); - this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 4, getRightStackSize()); - this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 5, getRightStackMeta()); - } - } } diff --git a/src/main/java/com/pahimar/ee3/tileentity/TileEntityEE.java b/src/main/java/com/pahimar/ee3/tileentity/TileEntityEE.java index f41565e7..c33038d0 100644 --- a/src/main/java/com/pahimar/ee3/tileentity/TileEntityEE.java +++ b/src/main/java/com/pahimar/ee3/tileentity/TileEntityEE.java @@ -48,11 +48,6 @@ public class TileEntityEE extends TileEntity this.state = state; } - public boolean hasCustomName() - { - return customName != null && customName.length() > 0; - } - public String getCustomName() { return customName; @@ -63,11 +58,6 @@ public class TileEntityEE extends TileEntity this.customName = customName; } - public boolean hasOwner() - { - return owner != null && owner.length() > 0; - } - public String getOwner() { return owner; @@ -123,6 +113,16 @@ public class TileEntityEE extends TileEntity } } + public boolean hasCustomName() + { + return customName != null && customName.length() > 0; + } + + public boolean hasOwner() + { + return owner != null && owner.length() > 0; + } + @Override public Packet getDescriptionPacket() { diff --git a/src/main/java/com/pahimar/ee3/tileentity/TileEntityGlassBell.java b/src/main/java/com/pahimar/ee3/tileentity/TileEntityGlassBell.java index 49b50df5..fde18750 100644 --- a/src/main/java/com/pahimar/ee3/tileentity/TileEntityGlassBell.java +++ b/src/main/java/com/pahimar/ee3/tileentity/TileEntityGlassBell.java @@ -12,7 +12,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.Packet; -public class TileEntityGlassBell extends TileEntityEE implements IInventory { +public class TileEntityGlassBell extends TileEntityEE implements IInventory +{ public static final int INVENTORY_SIZE = 1; public static final int DISPLAY_SLOT_INVENTORY_INDEX = 0; public ItemStack outputItemStack; @@ -22,29 +23,57 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory { */ private ItemStack[] inventory; - public TileEntityGlassBell() { + public TileEntityGlassBell() + { inventory = new ItemStack[INVENTORY_SIZE]; } @Override - public int getSizeInventory() { + public void readFromNBT(NBTTagCompound nbtTagCompound) + { + super.readFromNBT(nbtTagCompound); + + // Read in the ItemStacks in the inventory from NBT + NBTTagList tagList = nbtTagCompound.getTagList("Items", 10); + inventory = new ItemStack[this.getSizeInventory()]; + for (int i = 0; i < tagList.tagCount(); ++i) + { + NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); + byte slotIndex = tagCompound.getByte("Slot"); + if (slotIndex >= 0 && slotIndex < inventory.length) + { + inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound); + } + } + } + + @Override + public int getSizeInventory() + { return inventory.length; } @Override - public ItemStack getStackInSlot(int slotIndex) { + public ItemStack getStackInSlot(int slotIndex) + { return inventory[slotIndex]; } @Override - public ItemStack decrStackSize(int slotIndex, int decrementAmount) { + public ItemStack decrStackSize(int slotIndex, int decrementAmount) + { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { - if (itemStack.stackSize <= decrementAmount) { + if (itemStack != null) + { + if (itemStack.stackSize <= decrementAmount) + { setInventorySlotContents(slotIndex, null); - } else { + } + else + { itemStack = itemStack.splitStack(decrementAmount); - if (itemStack.stackSize == 0) { + if (itemStack.stackSize == 0) + { setInventorySlotContents(slotIndex, null); } } @@ -54,28 +83,36 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory { } @Override - public ItemStack getStackInSlotOnClosing(int slotIndex) { + public ItemStack getStackInSlotOnClosing(int slotIndex) + { ItemStack itemStack = getStackInSlot(slotIndex); - if (itemStack != null) { + if (itemStack != null) + { setInventorySlotContents(slotIndex, null); } return itemStack; } @Override - public void setInventorySlotContents(int slotIndex, ItemStack itemStack) { + public void setInventorySlotContents(int slotIndex, ItemStack itemStack) + { inventory[slotIndex] = itemStack; - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { itemStack.stackSize = getInventoryStackLimit(); } - if (!this.worldObj.isRemote) { + if (!this.worldObj.isRemote) + { ItemStack displayStack = this.inventory[DISPLAY_SLOT_INVENTORY_INDEX]; - if (displayStack != null) { + if (displayStack != null) + { this.state = (byte) Block.getBlockFromItem(displayStack.getItem()).getLightValue(); - } else { + } + else + { this.state = 0; } @@ -86,62 +123,56 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory { } @Override - public String getInventoryName() { + public String getInventoryName() + { return this.hasCustomName() ? this.getCustomName() : Names.Containers.GLASS_BELL; } @Override - public boolean hasCustomInventoryName() { + public boolean hasCustomInventoryName() + { return this.hasCustomName(); } @Override - public int getInventoryStackLimit() { + public int getInventoryStackLimit() + { return 64; } @Override - public boolean isUseableByPlayer(EntityPlayer entityPlayer) { + public boolean isUseableByPlayer(EntityPlayer entityPlayer) + { return true; } @Override - public void openInventory() { + public void openInventory() + { } @Override - public void closeInventory() { + public void closeInventory() + { } @Override - public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) { + public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) + { return true; } @Override - public void readFromNBT(NBTTagCompound nbtTagCompound) { - super.readFromNBT(nbtTagCompound); - - // Read in the ItemStacks in the inventory from NBT - NBTTagList tagList = nbtTagCompound.getTagList("Items", 10); - inventory = new ItemStack[this.getSizeInventory()]; - for (int i = 0; i < tagList.tagCount(); ++i) { - NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); - byte slotIndex = tagCompound.getByte("Slot"); - if (slotIndex >= 0 && slotIndex < inventory.length) { - inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbtTagCompound) { + public void writeToNBT(NBTTagCompound nbtTagCompound) + { super.writeToNBT(nbtTagCompound); // Write the ItemStacks in the inventory to NBT NBTTagList tagList = new NBTTagList(); - for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) { - if (inventory[currentIndex] != null) { + for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) + { + if (inventory[currentIndex] != null) + { NBTTagCompound tagCompound = new NBTTagCompound(); tagCompound.setByte("Slot", (byte) currentIndex); inventory[currentIndex].writeToNBT(tagCompound); @@ -152,8 +183,10 @@ public class TileEntityGlassBell extends TileEntityEE implements IInventory { } @Override - public Packet getDescriptionPacket() { - if (getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX) != null && getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX).stackSize > 0) { + public Packet getDescriptionPacket() + { + if (getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX) != null && getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX).stackSize > 0) + { return PacketHandler.INSTANCE.getPacketFrom(new MessageTileEntityGlassBell(this, getStackInSlot(DISPLAY_SLOT_INVENTORY_INDEX))); } diff --git a/src/main/java/com/pahimar/ee3/util/CalcinationHelper.java b/src/main/java/com/pahimar/ee3/util/CalcinationHelper.java index 6a5b54a6..57e70552 100644 --- a/src/main/java/com/pahimar/ee3/util/CalcinationHelper.java +++ b/src/main/java/com/pahimar/ee3/util/CalcinationHelper.java @@ -8,37 +8,51 @@ import net.minecraft.item.ItemStack; import java.util.TreeMap; -public class CalcinationHelper { - public static ItemStack getCalcinationResult(ItemStack calcinedStack) { +public class CalcinationHelper +{ + public static ItemStack getCalcinationResult(ItemStack calcinedStack) + { ItemStack itemStack = calcinedStack.copy(); itemStack.stackSize = 1; TreeMap sortedItems = new TreeMap(); - for (ItemStack dustStack : ItemAlchemicalDust.getAlchemicalDusts()) { + for (ItemStack dustStack : ItemAlchemicalDust.getAlchemicalDusts()) + { // If the item to be calcined is an alchemical dust, return null (you cannot calcine what's already been calcined) - if (ItemHelper.equals(itemStack, dustStack)) { + if (ItemHelper.equals(itemStack, dustStack)) + { return null; } - if (EnergyValueRegistry.getInstance().hasEnergyValue(dustStack)) { + if (EnergyValueRegistry.getInstance().hasEnergyValue(dustStack)) + { sortedItems.put(EnergyValueRegistry.getInstance().getEnergyValue(dustStack), dustStack); } } - if (EnergyValueRegistry.getInstance().hasEnergyValue(itemStack)) { - if (sortedItems.containsKey(EnergyValueRegistry.getInstance().getEnergyValue(itemStack))) { + if (EnergyValueRegistry.getInstance().hasEnergyValue(itemStack)) + { + if (sortedItems.containsKey(EnergyValueRegistry.getInstance().getEnergyValue(itemStack))) + { return sortedItems.get(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)); - } else { + } + else + { sortedItems.put(EnergyValueRegistry.getInstance().getEnergyValue(itemStack), itemStack); - if (sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)) == null) { + if (sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)) == null) + { return new ItemStack(ModItems.alchemicalDust, 1, 0); - } else { + } + else + { return sortedItems.lowerEntry(EnergyValueRegistry.getInstance().getEnergyValue(itemStack)).getValue(); } } - } else { + } + else + { return new ItemStack(ModItems.alchemicalDust, 1, 0); } } diff --git a/src/main/java/com/pahimar/ee3/util/ItemHelper.java b/src/main/java/com/pahimar/ee3/util/ItemHelper.java index c6c4560d..3d33cef9 100644 --- a/src/main/java/com/pahimar/ee3/util/ItemHelper.java +++ b/src/main/java/com/pahimar/ee3/util/ItemHelper.java @@ -75,11 +75,8 @@ public class ItemHelper * Compares two ItemStacks for equality, testing itemID, metaData, stackSize, and their NBTTagCompounds (if they are * present) * - * @param first - * The first ItemStack being tested for equality - * @param second - * The second ItemStack being tested for equality - * + * @param first The first ItemStack being tested for equality + * @param second The second ItemStack being tested for equality * @return true if the two ItemStacks are equivalent, false otherwise */ public static boolean equals(ItemStack first, ItemStack second) diff --git a/src/main/java/com/pahimar/ee3/util/NBTHelper.java b/src/main/java/com/pahimar/ee3/util/NBTHelper.java index 028758d9..e2d6c337 100644 --- a/src/main/java/com/pahimar/ee3/util/NBTHelper.java +++ b/src/main/java/com/pahimar/ee3/util/NBTHelper.java @@ -8,33 +8,6 @@ import java.util.UUID; public class NBTHelper { - /** - * Initializes the NBT Tag Compound for the given ItemStack if it is null - * - * @param itemStack - * The ItemStack for which its NBT Tag Compound is being checked for initialization - */ - private static void initNBTTagCompound(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - } - - public static boolean hasTag(ItemStack itemStack, String keyName) - { - return itemStack != null && itemStack.stackTagCompound != null && itemStack.stackTagCompound.hasKey(keyName); - } - - public static void removeTag(ItemStack itemStack, String keyName) - { - if (itemStack.stackTagCompound != null) - { - itemStack.stackTagCompound.removeTag(keyName); - } - } - public static void clearStatefulNBTTags(ItemStack itemStack) { if (NBTHelper.hasTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN)) @@ -51,6 +24,19 @@ public class NBTHelper } } + public static boolean hasTag(ItemStack itemStack, String keyName) + { + return itemStack != null && itemStack.stackTagCompound != null && itemStack.stackTagCompound.hasKey(keyName); + } + + public static void removeTag(ItemStack itemStack, String keyName) + { + if (itemStack.stackTagCompound != null) + { + itemStack.stackTagCompound.removeTag(keyName); + } + } + public static boolean hasUUID(ItemStack itemStack) { return hasTag(itemStack, Names.NBT.UUID_MOST_SIG) && hasTag(itemStack, Names.NBT.UUID_LEAST_SIG); @@ -69,6 +55,26 @@ public class NBTHelper } } + /** + * Initializes the NBT Tag Compound for the given ItemStack if it is null + * + * @param itemStack The ItemStack for which its NBT Tag Compound is being checked for initialization + */ + private static void initNBTTagCompound(ItemStack itemStack) + { + if (itemStack.stackTagCompound == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } + } + + public static void setLong(ItemStack itemStack, String keyName, long keyValue) + { + initNBTTagCompound(itemStack); + + itemStack.stackTagCompound.setLong(keyName, keyValue); + } + // String public static String getString(ItemStack itemStack, String keyName) { @@ -182,13 +188,6 @@ public class NBTHelper return itemStack.stackTagCompound.getLong(keyName); } - public static void setLong(ItemStack itemStack, String keyName, long keyValue) - { - initNBTTagCompound(itemStack); - - itemStack.stackTagCompound.setLong(keyName, keyValue); - } - // float public static float getFloat(ItemStack itemStack, String keyName) { diff --git a/src/main/java/com/pahimar/ee3/util/RecipeHelper.java b/src/main/java/com/pahimar/ee3/util/RecipeHelper.java index a64095d9..41a9589f 100644 --- a/src/main/java/com/pahimar/ee3/util/RecipeHelper.java +++ b/src/main/java/com/pahimar/ee3/util/RecipeHelper.java @@ -26,9 +26,7 @@ public class RecipeHelper /** * Returns a list of elements that constitute the input in a crafting recipe * - * @param recipe - * The IRecipe being examined - * + * @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 getRecipeInputs(IRecipe recipe) @@ -137,9 +135,7 @@ public class RecipeHelper /** * Collates an uncollated, unsorted List of Objects into a sorted, collated List of WrappedStacks * - * @param uncollatedStacks - * List of objects for collating - * + * @param uncollatedStacks List of objects for collating * @return A sorted, collated List of WrappedStacks */ public static List collateInputStacks(List uncollatedStacks)