From 2f0f8d90814367eebbb995dd434912a6470abf54 Mon Sep 17 00:00:00 2001 From: CovertJaguar Date: Tue, 10 Jul 2012 03:05:30 -0700 Subject: [PATCH 01/12] Added Liquid fill function. --- .../net/minecraft/src/buildcraft/api/BuildCraftAPI.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java b/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java index 1290a92b..8ece2bce 100644 --- a/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java +++ b/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java @@ -65,6 +65,15 @@ public class BuildCraftAPI { return null; } + + public static ItemStack fillLiquidContainer(int liquidId, ItemStack emptyContainer){ + for(LiquidData data : liquids) { + if(data.liquidId == liquidId && data.container.isItemEqual(emptyContainer)) { + return data.filled.copy(); + } + } + return null; + } public static boolean isLiquid(int blockId) { if (blockId == 0) { From ace10b05f4f1f0a924ab61e6e801da6e88b8f906 Mon Sep 17 00:00:00 2001 From: CovertJaguar Date: Tue, 10 Jul 2012 03:07:56 -0700 Subject: [PATCH 02/12] Changed fill code to safer BuildcraftAPI.fillLiquidContainer() --- .../net/minecraft/src/buildcraft/factory/TankBucketHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java b/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java index 10ae7ea5..2bf677a2 100644 --- a/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java +++ b/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java @@ -25,7 +25,7 @@ public class TankBucketHandler implements IBucketHandler { int qty = tank.empty(BuildCraftAPI.BUCKET_VOLUME, false); - ItemStack filledBucket = BuildCraftAPI.getFilledItemForLiquid(tank.getLiquidId()); + ItemStack filledBucket = BuildCraftAPI.fillLiquidContainer(tank.getLiquidId(), new ItemStack(Item.bucketEmpty)); if (qty >= BuildCraftAPI.BUCKET_VOLUME && filledBucket != null) { tank.empty(BuildCraftAPI.BUCKET_VOLUME, true); From 163984bdc2bd6592fe599324a7e0413971468c96 Mon Sep 17 00:00:00 2001 From: Kyprus Date: Tue, 10 Jul 2012 14:13:12 -0300 Subject: [PATCH 03/12] Updated the README --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 38b1fd5d..887c5593 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ ## Welcome to Buildcraft on GitHub -## Compiling and packaging Buildcraft +### Official Builds +An official jenkins build server can be found [here](http://kyprusmc.game-host.org:8080/). Jenkins will generate a new +build every time a change is pushed to github. + +### Compiling and packaging Buildcraft 1. Ensure that `Apache Ant` (found [here](http://ant.apache.org/)) is installed correctly on your system. * Linux users will need the latest version of astyle installed as well. 1. Create a base directory for the build From 792f2bff5f1ba21ab95c6cc5f7dfcb8d3bc28746 Mon Sep 17 00:00:00 2001 From: SirSengir Date: Tue, 10 Jul 2012 19:35:43 +0200 Subject: [PATCH 04/12] Started refactor of liquid handling. --- .../src/buildcraft/api/BuildCraftAPI.java | 13 +-- .../src/buildcraft/api/LiquidData.java | 1 + .../buildcraft/api/liquids/LiquidData.java | 39 +++++++ .../buildcraft/api/liquids/LiquidManager.java | 53 +++++++++ .../buildcraft/api/liquids/LiquidStack.java | 104 ++++++++++++++++++ .../buildcraft/factory/TankBucketHandler.java | 4 +- 6 files changed, 204 insertions(+), 10 deletions(-) create mode 100644 common/net/minecraft/src/buildcraft/api/liquids/LiquidData.java create mode 100644 common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java create mode 100644 common/net/minecraft/src/buildcraft/api/liquids/LiquidStack.java diff --git a/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java b/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java index 8ece2bce..56b2d31f 100644 --- a/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java +++ b/common/net/minecraft/src/buildcraft/api/BuildCraftAPI.java @@ -32,6 +32,7 @@ public class BuildCraftAPI { // Other BuildCraft global data + @Deprecated public static LinkedList liquids = new LinkedList(); public static HashMap ironEngineFuel = new HashMap(); public static Trigger[] triggers = new Trigger[1024]; @@ -42,6 +43,7 @@ public class BuildCraftAPI { private static LinkedList triggerProviders = new LinkedList(); private static LinkedList actionProviders = new LinkedList(); + @Deprecated public static int getLiquidForFilledItem(ItemStack filledItem) { if (filledItem == null) { return 0; @@ -56,6 +58,7 @@ public class BuildCraftAPI { return 0; } + @Deprecated public static ItemStack getFilledItemForLiquid(int liquidId) { for (LiquidData d : liquids) { if (d.liquidId == liquidId) { @@ -66,15 +69,7 @@ public class BuildCraftAPI { return null; } - public static ItemStack fillLiquidContainer(int liquidId, ItemStack emptyContainer){ - for(LiquidData data : liquids) { - if(data.liquidId == liquidId && data.container.isItemEqual(emptyContainer)) { - return data.filled.copy(); - } - } - return null; - } - + @Deprecated public static boolean isLiquid(int blockId) { if (blockId == 0) { return false; diff --git a/common/net/minecraft/src/buildcraft/api/LiquidData.java b/common/net/minecraft/src/buildcraft/api/LiquidData.java index 4a62c20a..8c02a833 100644 --- a/common/net/minecraft/src/buildcraft/api/LiquidData.java +++ b/common/net/minecraft/src/buildcraft/api/LiquidData.java @@ -12,6 +12,7 @@ package net.minecraft.src.buildcraft.api; import net.minecraft.src.Item; import net.minecraft.src.ItemStack; +@Deprecated public class LiquidData { public final int liquidId; diff --git a/common/net/minecraft/src/buildcraft/api/liquids/LiquidData.java b/common/net/minecraft/src/buildcraft/api/liquids/LiquidData.java new file mode 100644 index 00000000..ccff9e5c --- /dev/null +++ b/common/net/minecraft/src/buildcraft/api/liquids/LiquidData.java @@ -0,0 +1,39 @@ +/** + * Copyright (c) SpaceToad, 2011 + * http://www.mod-buildcraft.com + * + * BuildCraft is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://www.mod-buildcraft.com/MMPL-1.0.txt + */ + +package net.minecraft.src.buildcraft.api.liquids; + +import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; +import net.minecraft.src.buildcraft.api.BuildCraftAPI; + +public class LiquidData { + + public final LiquidStack stillLiquid; + public final LiquidStack movingLiquid; + + public final ItemStack filled; + public final ItemStack container; + + public LiquidData(int stillLiquidId, int movingLiquidId, Item filled) { + this(new LiquidStack(stillLiquidId, BuildCraftAPI.BUCKET_VOLUME), new LiquidStack(movingLiquidId, BuildCraftAPI.BUCKET_VOLUME), new ItemStack(filled, 1), new ItemStack(Item.bucketEmpty)); + } + + public LiquidData(int stillLiquidId, int movingLiquidId, ItemStack filled) { + this(new LiquidStack(stillLiquidId, BuildCraftAPI.BUCKET_VOLUME), new LiquidStack(movingLiquidId, BuildCraftAPI.BUCKET_VOLUME), filled, new ItemStack(Item.bucketEmpty)); + } + + public LiquidData(LiquidStack stillLiquid, LiquidStack movingLiquid, ItemStack filled, ItemStack container) { + this.stillLiquid = stillLiquid; + this.movingLiquid = movingLiquid; + this.filled = filled; + this.container = container; + } + +} diff --git a/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java b/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java new file mode 100644 index 00000000..29173b54 --- /dev/null +++ b/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java @@ -0,0 +1,53 @@ +package net.minecraft.src.buildcraft.api.liquids; + +import java.util.LinkedList; + +import net.minecraft.src.ItemStack; + +public class LiquidManager { + + public static LinkedList liquids = new LinkedList(); + + public static LiquidStack getLiquidForFilledItem(ItemStack filledItem) { + if (filledItem == null) + return null; + + for (LiquidData liquid : liquids) + if (liquid.filled.isItemEqual(filledItem)) + return liquid.stillLiquid; + + return null; + } + + public static ItemStack getFilledItemForLiquid(LiquidStack liquid) { + for (LiquidData data : liquids) + if(data.stillLiquid.isLiquidEqual(liquid)) + return data.filled.copy(); + + return null; + } + + public static ItemStack fillLiquidContainer(int liquidId, ItemStack emptyContainer) { + return fillLiquidContainer(new LiquidStack(liquidId, 1, 0), emptyContainer); + } + + public static ItemStack fillLiquidContainer(LiquidStack liquid, ItemStack emptyContainer) { + for(LiquidData data : liquids) + if(data.stillLiquid.isLiquidEqual(liquid) && data.container.isItemEqual(emptyContainer)) + return data.filled.copy(); + return null; + } + + public static boolean isLiquid(ItemStack block) { + if (block.itemID == 0) + return false; + + for (LiquidData liquid : liquids) + if (liquid.stillLiquid.isLiquidEqual(block) || liquid.movingLiquid.isLiquidEqual(block)) + return true; + + return false; + } + + +} diff --git a/common/net/minecraft/src/buildcraft/api/liquids/LiquidStack.java b/common/net/minecraft/src/buildcraft/api/liquids/LiquidStack.java new file mode 100644 index 00000000..b88a84bf --- /dev/null +++ b/common/net/minecraft/src/buildcraft/api/liquids/LiquidStack.java @@ -0,0 +1,104 @@ +package net.minecraft.src.buildcraft.api.liquids; + +import net.minecraft.src.Block; +import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; +import net.minecraft.src.NBTTagCompound; + +/** + * + * Forestry internal ItemStack substitute for liquids + * + * @author SirSengir + */ +public class LiquidStack { + public int itemID; + public int amount; + public int itemMeta; + + public NBTTagCompound stackTagCompound; + + private LiquidStack() { + } + + public LiquidStack(int itemID, int liquidAmount) { + this(itemID, liquidAmount, 0); + } + + public LiquidStack(Item item, int liquidAmount) { + this(item.shiftedIndex, liquidAmount, 0); + } + + public LiquidStack(Block block, int liquidAmount) { + this(block.blockID, liquidAmount, 0); + } + + public LiquidStack(int itemID, int amount, int itemDamage) { + this.itemID = itemID; + this.amount = amount; + this.itemMeta = itemDamage; + } + + public NBTTagCompound writeToNBT(NBTTagCompound nbttagcompound) { + nbttagcompound.setShort("Id", (short) itemID); + nbttagcompound.setInteger("Amount", amount); + nbttagcompound.setShort("Meta", (short) itemMeta); + if (stackTagCompound != null) + nbttagcompound.setTag("Tag", stackTagCompound); + return nbttagcompound; + } + + public void readFromNBT(NBTTagCompound nbttagcompound) { + itemID = nbttagcompound.getShort("Id"); + amount = nbttagcompound.getInteger("Amount"); + itemMeta = nbttagcompound.getShort("Meta"); + if (nbttagcompound.hasKey("Tag")) + stackTagCompound = nbttagcompound.getCompoundTag("tag"); + } + + public LiquidStack copy() { + LiquidStack copy = new LiquidStack(itemID, amount, itemMeta); + if (stackTagCompound != null) { + copy.stackTagCompound = (NBTTagCompound) stackTagCompound.copy(); + if (!copy.stackTagCompound.equals(stackTagCompound)) + return copy; + } + return copy; + } + + public NBTTagCompound getTagCompound() { + return stackTagCompound; + } + + public void setTagCompound(NBTTagCompound nbttagcompound) { + stackTagCompound = nbttagcompound; + } + + public boolean isLiquidEqual(LiquidStack other) { + return itemID == other.itemID && itemMeta == other.itemMeta; + } + + public boolean isLiquidEqual(ItemStack other) { + return itemID == other.itemID && itemMeta == other.getItemDamage(); + } + + /** + * @return An ItemStack representation of this LiquidStack + */ + public ItemStack asItemStack() { + return new ItemStack(itemID, 1, itemMeta); + } + + /** + * Reads a liquid stack from the passed nbttagcompound and returns it. + * + * @param nbttagcompound + * @return + */ + public static LiquidStack loadLiquidStackFromNBT(NBTTagCompound nbttagcompound) { + LiquidStack liquidstack = new LiquidStack(); + liquidstack.readFromNBT(nbttagcompound); + return liquidstack.itemID == 0 ? null : liquidstack; + } + +} diff --git a/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java b/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java index 2bf677a2..36c84040 100644 --- a/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java +++ b/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java @@ -10,9 +10,11 @@ package net.minecraft.src.buildcraft.factory; import net.minecraft.src.BuildCraftFactory; +import net.minecraft.src.Item; import net.minecraft.src.ItemStack; import net.minecraft.src.World; import net.minecraft.src.buildcraft.api.BuildCraftAPI; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; import net.minecraft.src.forge.IBucketHandler; public class TankBucketHandler implements IBucketHandler { @@ -25,7 +27,7 @@ public class TankBucketHandler implements IBucketHandler { int qty = tank.empty(BuildCraftAPI.BUCKET_VOLUME, false); - ItemStack filledBucket = BuildCraftAPI.fillLiquidContainer(tank.getLiquidId(), new ItemStack(Item.bucketEmpty)); + ItemStack filledBucket = LiquidManager.fillLiquidContainer(tank.getLiquidId(), new ItemStack(Item.bucketEmpty)); if (qty >= BuildCraftAPI.BUCKET_VOLUME && filledBucket != null) { tank.empty(BuildCraftAPI.BUCKET_VOLUME, true); From 8f2ca3362b0b7cdf9299202edd5d863f6437afaf Mon Sep 17 00:00:00 2001 From: Peter Waller Date: Tue, 10 Jul 2012 18:56:57 +0100 Subject: [PATCH 05/12] mcp mapping update: Update func_46057_a => getIconFromDamageForRenderPass --- .../net/minecraft/src/buildcraft/transport/RenderPipe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildcraft_client/net/minecraft/src/buildcraft/transport/RenderPipe.java b/buildcraft_client/net/minecraft/src/buildcraft/transport/RenderPipe.java index da72f9de..f77aeab6 100644 --- a/buildcraft_client/net/minecraft/src/buildcraft/transport/RenderPipe.java +++ b/buildcraft_client/net/minecraft/src/buildcraft/transport/RenderPipe.java @@ -457,7 +457,7 @@ public class RenderPipe extends TileEntitySpecialRenderer { this.loadTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID])); for (int i = 0; i <= 1; ++i) { - int iconIndex = itemstack.getItem().func_46057_a(itemstack.getItemDamage(), i); + int iconIndex = itemstack.getItem().getIconFromDamageForRenderPass(itemstack.getItemDamage(), i); float scale = 1.0F; if (true) { From 785c51660f05b41e3d25da75fdc2160d73218670 Mon Sep 17 00:00:00 2001 From: CovertJaguar Date: Wed, 11 Jul 2012 03:37:24 -0700 Subject: [PATCH 06/12] Added filling of generic containers to Tank --- .../net/minecraft/src/BuildCraftFactory.java | 3 -- .../src/buildcraft/factory/BlockTank.java | 23 ++++++++-- .../buildcraft/factory/TankBucketHandler.java | 42 ------------------- 3 files changed, 20 insertions(+), 48 deletions(-) delete mode 100644 common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java diff --git a/common/net/minecraft/src/BuildCraftFactory.java b/common/net/minecraft/src/BuildCraftFactory.java index 14f4243b..e9d09e17 100644 --- a/common/net/minecraft/src/BuildCraftFactory.java +++ b/common/net/minecraft/src/BuildCraftFactory.java @@ -24,7 +24,6 @@ import net.minecraft.src.buildcraft.factory.BptBlockFrame; import net.minecraft.src.buildcraft.factory.BptBlockRefinery; import net.minecraft.src.buildcraft.factory.BptBlockTank; import net.minecraft.src.buildcraft.factory.GuiHandler; -import net.minecraft.src.buildcraft.factory.TankBucketHandler; import net.minecraft.src.buildcraft.factory.TileAssemblyTable; import net.minecraft.src.buildcraft.factory.TileAutoWorkbench; import net.minecraft.src.buildcraft.factory.TileHopper; @@ -99,8 +98,6 @@ public class BuildCraftFactory { BuildCraftCore.mainConfiguration.save(); - MinecraftForge.registerCustomBucketHandler(new TankBucketHandler()); - miningWellBlock = new BlockMiningWell(Integer.parseInt(minigWellId.value)); CoreProxy.registerBlock(miningWellBlock.setBlockName("miningWellBlock")); CoreProxy.addName(miningWellBlock, "Mining Well"); diff --git a/common/net/minecraft/src/buildcraft/factory/BlockTank.java b/common/net/minecraft/src/buildcraft/factory/BlockTank.java index 6289c060..4e10f269 100644 --- a/common/net/minecraft/src/buildcraft/factory/BlockTank.java +++ b/common/net/minecraft/src/buildcraft/factory/BlockTank.java @@ -20,6 +20,7 @@ import net.minecraft.src.Material; import net.minecraft.src.TileEntity; import net.minecraft.src.World; import net.minecraft.src.buildcraft.api.BuildCraftAPI; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; import net.minecraft.src.buildcraft.api.Orientations; import net.minecraft.src.buildcraft.core.DefaultProps; import net.minecraft.src.buildcraft.core.Utils; @@ -88,8 +89,10 @@ public class BlockTank extends BlockContainer implements ITextureProvider { @Override public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer) { - if (entityplayer.getCurrentEquippedItem() != null) { - int liquidId = BuildCraftAPI.getLiquidForFilledItem(entityplayer.getCurrentEquippedItem()); + ItemStack current = entityplayer.inventory.getCurrentItem(); + if (current != null) { + + int liquidId = LiquidManager.getLiquidForFilledItem(current); TileTank tank = (TileTank) world.getBlockTileEntity(i, j, k); @@ -98,10 +101,24 @@ public class BlockTank extends BlockContainer implements ITextureProvider { if (qty != 0 && !BuildCraftCore.debugMode) { entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, - Utils.consumeItem(entityplayer.inventory.getCurrentItem())); + Utils.consumeItem(current)); } return true; + } else { + ItemStack filled = LiquidManager.fillLiquidContainer(tank.getLiquidId(), current); + + int qty = tank.empty(BuildCraftAPI.BUCKET_VOLUME, false); + + if(filled != null && qty >= BuildCraftAPI.BUCKET_VOLUME){ + if(current.stacksize > 1 && !entityplayer.inventory.addItemStackToInventory(filled)){ + return false; + } + entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, + Utils.consumeItem(current)); + tank.empty(BuildCraftAPI.BUCKET_VOLUME, true); + return true; + } } } diff --git a/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java b/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java deleted file mode 100644 index 36c84040..00000000 --- a/common/net/minecraft/src/buildcraft/factory/TankBucketHandler.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * http://www.mod-buildcraft.com - * - * BuildCraft is distributed under the terms of the Minecraft Mod Public - * License 1.0, or MMPL. Please check the contents of the license located in - * http://www.mod-buildcraft.com/MMPL-1.0.txt - */ - -package net.minecraft.src.buildcraft.factory; - -import net.minecraft.src.BuildCraftFactory; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import net.minecraft.src.World; -import net.minecraft.src.buildcraft.api.BuildCraftAPI; -import net.minecraft.src.buildcraft.api.liquids.LiquidManager; -import net.minecraft.src.forge.IBucketHandler; - -public class TankBucketHandler implements IBucketHandler { - - @Override - public ItemStack fillCustomBucket(World w, int i, int j, int k) { - if (w.getBlockId(i, j, k) == BuildCraftFactory.tankBlock.blockID) { - - TileTank tank = (TileTank) w.getBlockTileEntity(i, j, k); - - int qty = tank.empty(BuildCraftAPI.BUCKET_VOLUME, false); - - ItemStack filledBucket = LiquidManager.fillLiquidContainer(tank.getLiquidId(), new ItemStack(Item.bucketEmpty)); - - if (qty >= BuildCraftAPI.BUCKET_VOLUME && filledBucket != null) { - tank.empty(BuildCraftAPI.BUCKET_VOLUME, true); - - return filledBucket; - } - - } - return null; - } - -} From 1098c2ef72de8f600b9b93062389a14db494fbb5 Mon Sep 17 00:00:00 2001 From: SirSengir Date: Wed, 11 Jul 2012 19:09:17 +0200 Subject: [PATCH 07/12] Moved item inventory into Engine object. --- .../src/buildcraft/energy/Engine.java | 8 +++ .../src/buildcraft/energy/EngineIron.java | 49 +++++++++++++++-- .../src/buildcraft/energy/EngineStone.java | 46 ++++++++++++++++ .../src/buildcraft/energy/TileEngine.java | 53 +++++++------------ 4 files changed, 119 insertions(+), 37 deletions(-) diff --git a/common/net/minecraft/src/buildcraft/energy/Engine.java b/common/net/minecraft/src/buildcraft/energy/Engine.java index 46ab83fd..531117fa 100644 --- a/common/net/minecraft/src/buildcraft/energy/Engine.java +++ b/common/net/minecraft/src/buildcraft/energy/Engine.java @@ -10,6 +10,7 @@ package net.minecraft.src.buildcraft.energy; import net.minecraft.src.ICrafting; +import net.minecraft.src.ItemStack; import net.minecraft.src.NBTTagCompound; import net.minecraft.src.buildcraft.api.APIProxy; import net.minecraft.src.buildcraft.api.LiquidSlot; @@ -165,4 +166,11 @@ public abstract class Engine { return currentOutput; } + /* IINVENTORY */ + public int getSizeInventory() { return 0; } + public ItemStack getStackInSlot(int i) { return null; } + public ItemStack decrStackSize(int i, int j) { return null; } + public ItemStack getStackInSlotOnClosing(int i) { return getStackInSlot(i); } + public void setInventorySlotContents(int i, ItemStack itemstack) {} + } diff --git a/common/net/minecraft/src/buildcraft/energy/EngineIron.java b/common/net/minecraft/src/buildcraft/energy/EngineIron.java index 5075742c..6553800b 100644 --- a/common/net/minecraft/src/buildcraft/energy/EngineIron.java +++ b/common/net/minecraft/src/buildcraft/energy/EngineIron.java @@ -26,6 +26,8 @@ public class EngineIron extends Engine { public static int MAX_HEAT = 100000; public static int COOLANT_THRESHOLD = 49000; + private ItemStack itemInInventory; + int burnTime = 0; int liquidQty = 0; int liquidId = 0; @@ -120,8 +122,6 @@ public class EngineIron extends Engine { public void update() { super.update(); - ItemStack itemInInventory = tile.getStackInSlot(0); - if (itemInInventory != null) { int liquidId = BuildCraftAPI.getLiquidForFilledItem(itemInInventory); @@ -245,6 +245,12 @@ public class EngineIron extends Engine { coolantQty = nbttagcompound.getInteger("coolantQty"); heat = nbttagcompound.getInteger("heat"); penaltyCooling = nbttagcompound.getInteger("penaltyCooling"); + + if (nbttagcompound.hasKey("itemInInventory")) { + NBTTagCompound cpt = nbttagcompound.getCompoundTag("itemInInventory"); + itemInInventory = ItemStack.loadItemStackFromNBT(cpt); + } + } @Override @@ -255,7 +261,14 @@ public class EngineIron extends Engine { nbttagcompound.setInteger("coolantId", coolantId); nbttagcompound.setInteger("coolantQty", coolantQty); nbttagcompound.setInteger("heat", heat); - nbttagcompound.setInteger("penaltyCooling", penaltyCooling); + nbttagcompound.setInteger("penaltyCooling", penaltyCooling); + + if (itemInInventory != null) { + NBTTagCompound cpt = new NBTTagCompound(); + itemInInventory.writeToNBT(cpt); + nbttagcompound.setTag("itemInInventory", cpt); + } + } public int getScaledCoolant(int i) { @@ -320,4 +333,34 @@ public class EngineIron extends Engine { public int getHeat() { return heat; } + + /* IINVENTORY */ + @Override public int getSizeInventory() { return 1; } + @Override public ItemStack getStackInSlot(int i) { return itemInInventory; } + @Override public void setInventorySlotContents(int i, ItemStack itemstack) { itemInInventory = itemstack; } + + @Override + public ItemStack decrStackSize(int i, int j) { + if (itemInInventory != null) { + ItemStack newStack = itemInInventory.splitStack(j); + + if (itemInInventory.stackSize == 0) { + itemInInventory = null; + } + + return newStack; + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int var1) { + if (itemInInventory == null) + return null; + ItemStack toReturn = itemInInventory; + itemInInventory = null; + return toReturn; + } + } diff --git a/common/net/minecraft/src/buildcraft/energy/EngineStone.java b/common/net/minecraft/src/buildcraft/energy/EngineStone.java index d2b89dde..e8c8125c 100644 --- a/common/net/minecraft/src/buildcraft/energy/EngineStone.java +++ b/common/net/minecraft/src/buildcraft/energy/EngineStone.java @@ -24,6 +24,8 @@ public class EngineStone extends Engine { int burnTime = 0; int totalBurnTime = 0; + private ItemStack itemInInventory; + public EngineStone(TileEngine engine) { super(engine); @@ -112,16 +114,30 @@ public class EngineStone extends Engine { } } + /* SAVING & LOADING */ @Override public void readFromNBT(NBTTagCompound nbttagcompound) { burnTime = nbttagcompound.getInteger("burnTime"); totalBurnTime = nbttagcompound.getInteger("totalBurnTime"); + + if (nbttagcompound.hasKey("itemInInventory")) { + NBTTagCompound cpt = nbttagcompound.getCompoundTag("itemInInventory"); + itemInInventory = ItemStack.loadItemStackFromNBT(cpt); + } + } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { nbttagcompound.setInteger("burnTime", burnTime); nbttagcompound.setInteger("totalBurnTime", totalBurnTime); + + if (itemInInventory != null) { + NBTTagCompound cpt = new NBTTagCompound(); + itemInInventory.writeToNBT(cpt); + nbttagcompound.setTag("itemInInventory", cpt); + } + } @Override @@ -161,4 +177,34 @@ public class EngineStone extends Engine { public int getHeat() { return energy; } + + /* IINVENTORY */ + @Override public int getSizeInventory() { return 1; } + @Override public ItemStack getStackInSlot(int i) { return itemInInventory; } + @Override public void setInventorySlotContents(int i, ItemStack itemstack) { itemInInventory = itemstack; } + + @Override + public ItemStack decrStackSize(int i, int j) { + if (itemInInventory != null) { + ItemStack newStack = itemInInventory.splitStack(j); + + if (itemInInventory.stackSize == 0) { + itemInInventory = null; + } + + return newStack; + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int var1) { + if (itemInInventory == null) + return null; + ItemStack toReturn = itemInInventory; + itemInInventory = null; + return toReturn; + } + } diff --git a/common/net/minecraft/src/buildcraft/energy/TileEngine.java b/common/net/minecraft/src/buildcraft/energy/TileEngine.java index 5a1ad5f5..ff378d61 100644 --- a/common/net/minecraft/src/buildcraft/energy/TileEngine.java +++ b/common/net/minecraft/src/buildcraft/energy/TileEngine.java @@ -53,8 +53,6 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven public int orientation; - private ItemStack itemInInventory; - PowerProvider provider; public boolean isRedstonePowered = false; @@ -229,11 +227,6 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven engine.orientation = Orientations.values()[orientation]; } - if (nbttagcompound.hasKey("itemInInventory")) { - NBTTagCompound cpt = nbttagcompound.getCompoundTag("itemInInventory"); - itemInInventory = ItemStack.loadItemStackFromNBT(cpt); - } - if (engine != null) { engine.readFromNBT(nbttagcompound); } @@ -251,58 +244,48 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven nbttagcompound.setInteger("energy", engine.energy); } - if (itemInInventory != null) { - NBTTagCompound cpt = new NBTTagCompound(); - itemInInventory.writeToNBT(cpt); - nbttagcompound.setTag("itemInInventory", cpt); - } - if (engine != null) { engine.writeToNBT(nbttagcompound); } } + /* IINVENTORY IMPLEMENTATION */ @Override public int getSizeInventory() { - if (engine instanceof EngineStone) { - return 1; - } else { + if(engine != null) + return engine.getSizeInventory(); + else return 0; - } } @Override public ItemStack getStackInSlot(int i) { - return itemInInventory; + if(engine != null) + return engine.getStackInSlot(i); + else + return null; } @Override public ItemStack decrStackSize(int i, int j) { - if (itemInInventory != null) { - ItemStack newStack = itemInInventory.splitStack(j); - - if (itemInInventory.stackSize == 0) { - itemInInventory = null; - } - - return newStack; - } else { + if(engine != null) + return engine.decrStackSize(i, j); + else return null; - } } @Override - public ItemStack getStackInSlotOnClosing(int var1) { - if (itemInInventory == null) + public ItemStack getStackInSlotOnClosing(int i) { + if(engine != null) + return engine.getStackInSlotOnClosing(i); + else return null; - ItemStack toReturn = itemInInventory; - itemInInventory = null; - return toReturn; } @Override public void setInventorySlotContents(int i, ItemStack itemstack) { - itemInInventory = itemstack; + if(engine != null) + engine.setInventorySlotContents(i, itemstack); } @Override @@ -320,6 +303,7 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) == this; } + /* STATE INFORMATION */ public boolean isBurning() { return engine != null && engine.isBurning(); } @@ -332,6 +316,7 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven } } + /* SMP UPDATING */ @Override public Packet getDescriptionPacket() { createEngineIfNeeded(); From d3d4473d82bfeb2bf9e2c1015e634ebc09ba7405 Mon Sep 17 00:00:00 2001 From: SirSengir Date: Wed, 11 Jul 2012 19:15:45 +0200 Subject: [PATCH 08/12] Fixed last commit. --- common/net/minecraft/src/buildcraft/factory/BlockTank.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/net/minecraft/src/buildcraft/factory/BlockTank.java b/common/net/minecraft/src/buildcraft/factory/BlockTank.java index 4e10f269..9c575d20 100644 --- a/common/net/minecraft/src/buildcraft/factory/BlockTank.java +++ b/common/net/minecraft/src/buildcraft/factory/BlockTank.java @@ -92,7 +92,7 @@ public class BlockTank extends BlockContainer implements ITextureProvider { ItemStack current = entityplayer.inventory.getCurrentItem(); if (current != null) { - int liquidId = LiquidManager.getLiquidForFilledItem(current); + int liquidId = LiquidManager.getLiquidForFilledItem(current).itemID; TileTank tank = (TileTank) world.getBlockTileEntity(i, j, k); @@ -111,7 +111,7 @@ public class BlockTank extends BlockContainer implements ITextureProvider { int qty = tank.empty(BuildCraftAPI.BUCKET_VOLUME, false); if(filled != null && qty >= BuildCraftAPI.BUCKET_VOLUME){ - if(current.stacksize > 1 && !entityplayer.inventory.addItemStackToInventory(filled)){ + if(current.stackSize > 1 && !entityplayer.inventory.addItemStackToInventory(filled)){ return false; } entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, From e24e663fbdb84577622aadee780abf7b4075428a Mon Sep 17 00:00:00 2001 From: SirSengir Date: Wed, 11 Jul 2012 19:20:37 +0200 Subject: [PATCH 09/12] Redirected old liquid api references. --- .../net/minecraft/src/buildcraft/factory/GuiRefinery.java | 3 ++- .../minecraft/src/buildcraft/core/TriggerLiquidContainer.java | 3 ++- common/net/minecraft/src/buildcraft/energy/EngineIron.java | 3 ++- common/net/minecraft/src/buildcraft/factory/BlockRefinery.java | 3 ++- .../src/buildcraft/transport/TriggerPipeContents.java | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/buildcraft_client/net/minecraft/src/buildcraft/factory/GuiRefinery.java b/buildcraft_client/net/minecraft/src/buildcraft/factory/GuiRefinery.java index 68c989d0..f96315ab 100644 --- a/buildcraft_client/net/minecraft/src/buildcraft/factory/GuiRefinery.java +++ b/buildcraft_client/net/minecraft/src/buildcraft/factory/GuiRefinery.java @@ -13,6 +13,7 @@ import net.minecraft.src.InventoryPlayer; import net.minecraft.src.ItemStack; import net.minecraft.src.buildcraft.api.BuildCraftAPI; import net.minecraft.src.buildcraft.api.RefineryRecipe; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; import net.minecraft.src.buildcraft.core.DefaultProps; import net.minecraft.src.buildcraft.core.GuiAdvancedInterface; import net.minecraft.src.buildcraft.core.utils.StringUtil; @@ -77,7 +78,7 @@ public class GuiRefinery extends GuiAdvancedInterface { slot = slots[position]; if (slot != null) { - int liquidId = BuildCraftAPI.getLiquidForFilledItem(mc.thePlayer.inventory.getItemStack()); + int liquidId = LiquidManager.getLiquidForFilledItem(mc.thePlayer.inventory.getItemStack()).itemID; container.setFilter(position, liquidId, 0); } diff --git a/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java b/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java index 931cc8d1..a7da5891 100644 --- a/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java +++ b/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java @@ -15,6 +15,7 @@ import net.minecraft.src.buildcraft.api.ILiquidContainer; import net.minecraft.src.buildcraft.api.LiquidSlot; import net.minecraft.src.buildcraft.api.Trigger; import net.minecraft.src.buildcraft.api.TriggerParameter; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; public class TriggerLiquidContainer extends Trigger { @@ -73,7 +74,7 @@ public class TriggerLiquidContainer extends Trigger { int seachedLiquidId = 0; if (parameter != null && parameter.getItem() != null) - seachedLiquidId = BuildCraftAPI.getLiquidForFilledItem(parameter.getItem()); + seachedLiquidId = LiquidManager.getLiquidForFilledItem(parameter.getItem()).itemID; LiquidSlot[] liquids = container.getLiquidSlots(); diff --git a/common/net/minecraft/src/buildcraft/energy/EngineIron.java b/common/net/minecraft/src/buildcraft/energy/EngineIron.java index 6553800b..0981b8d3 100644 --- a/common/net/minecraft/src/buildcraft/energy/EngineIron.java +++ b/common/net/minecraft/src/buildcraft/energy/EngineIron.java @@ -17,6 +17,7 @@ import net.minecraft.src.buildcraft.api.BuildCraftAPI; import net.minecraft.src.buildcraft.api.IronEngineFuel; import net.minecraft.src.buildcraft.api.LiquidSlot; import net.minecraft.src.buildcraft.api.Orientations; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; import net.minecraft.src.buildcraft.core.DefaultProps; import net.minecraft.src.buildcraft.core.Utils; @@ -123,7 +124,7 @@ public class EngineIron extends Engine { super.update(); if (itemInInventory != null) { - int liquidId = BuildCraftAPI.getLiquidForFilledItem(itemInInventory); + int liquidId = LiquidManager.getLiquidForFilledItem(itemInInventory).itemID; if (liquidId != 0) { if (fill(Orientations.Unknown, BuildCraftAPI.BUCKET_VOLUME, liquidId, false) == BuildCraftAPI.BUCKET_VOLUME) { diff --git a/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java b/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java index b3d4bb8e..4aeab666 100644 --- a/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java +++ b/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java @@ -25,6 +25,7 @@ import net.minecraft.src.buildcraft.api.APIProxy; import net.minecraft.src.buildcraft.api.BuildCraftAPI; import net.minecraft.src.buildcraft.api.Orientations; import net.minecraft.src.buildcraft.api.Position; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; import net.minecraft.src.buildcraft.api.tools.IToolWrench; import net.minecraft.src.buildcraft.core.GuiIds; import net.minecraft.src.buildcraft.core.Utils; @@ -101,7 +102,7 @@ public class BlockRefinery extends BlockContainer { return true; } else { - int liquidId = BuildCraftAPI.getLiquidForFilledItem(entityplayer.getCurrentEquippedItem()); + int liquidId = LiquidManager.getLiquidForFilledItem(entityplayer.getCurrentEquippedItem()).itemID; if (liquidId != 0) { int qty = ((TileRefinery) world.getBlockTileEntity(i, j, k)).fill(Orientations.Unknown, diff --git a/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java b/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java index 667b55c2..1b26a93d 100644 --- a/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java +++ b/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java @@ -12,6 +12,7 @@ package net.minecraft.src.buildcraft.transport; import net.minecraft.src.buildcraft.api.BuildCraftAPI; import net.minecraft.src.buildcraft.api.Trigger; import net.minecraft.src.buildcraft.api.TriggerParameter; +import net.minecraft.src.buildcraft.api.liquids.LiquidManager; import net.minecraft.src.buildcraft.core.DefaultProps; import net.minecraft.src.buildcraft.transport.PipeTransportLiquids.LiquidBuffer; @@ -92,7 +93,7 @@ public class TriggerPipeContents extends Trigger implements ITriggerPipe { int seachedLiquidId = 0; if (parameter != null && parameter.getItem() != null) - seachedLiquidId = BuildCraftAPI.getLiquidForFilledItem(parameter.getItem()); + seachedLiquidId = LiquidManager.getLiquidForFilledItem(parameter.getItem()).itemID; if (kind == Kind.Empty) { for (LiquidBuffer b : transportLiquids.side) From edf5e8eb324cbdaa19489ee7ebfe42bc18cf4582 Mon Sep 17 00:00:00 2001 From: psxlover Date: Thu, 12 Jul 2012 00:04:05 +0300 Subject: [PATCH 10/12] Null pointer exception when starting a server. --- .../net/minecraft/src/buildcraft/energy/EngineIron.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/net/minecraft/src/buildcraft/energy/EngineIron.java b/common/net/minecraft/src/buildcraft/energy/EngineIron.java index 0981b8d3..8f1cced0 100644 --- a/common/net/minecraft/src/buildcraft/energy/EngineIron.java +++ b/common/net/minecraft/src/buildcraft/energy/EngineIron.java @@ -18,6 +18,7 @@ import net.minecraft.src.buildcraft.api.IronEngineFuel; import net.minecraft.src.buildcraft.api.LiquidSlot; import net.minecraft.src.buildcraft.api.Orientations; import net.minecraft.src.buildcraft.api.liquids.LiquidManager; +import net.minecraft.src.buildcraft.api.liquids.LiquidStack; import net.minecraft.src.buildcraft.core.DefaultProps; import net.minecraft.src.buildcraft.core.Utils; @@ -124,7 +125,12 @@ public class EngineIron extends Engine { super.update(); if (itemInInventory != null) { - int liquidId = LiquidManager.getLiquidForFilledItem(itemInInventory).itemID; + + LiquidStack liquidForFilledItem = LiquidManager.getLiquidForFilledItem(itemInInventory); + if (liquidForFilledItem == null) + return; + + int liquidId = liquidForFilledItem.itemID; if (liquidId != 0) { if (fill(Orientations.Unknown, BuildCraftAPI.BUCKET_VOLUME, liquidId, false) == BuildCraftAPI.BUCKET_VOLUME) { From 610be3238850ae239f92cfb45ef95789d93041ef Mon Sep 17 00:00:00 2001 From: psxlover Date: Thu, 12 Jul 2012 00:16:52 +0300 Subject: [PATCH 11/12] Discovered more NPEs related to LiquidManager so I took a new approach. --- .../src/buildcraft/api/liquids/LiquidManager.java | 9 +++++++++ .../src/buildcraft/core/TriggerLiquidContainer.java | 2 +- .../net/minecraft/src/buildcraft/energy/EngineIron.java | 8 +------- .../minecraft/src/buildcraft/factory/BlockRefinery.java | 2 +- .../net/minecraft/src/buildcraft/factory/BlockTank.java | 2 +- .../src/buildcraft/transport/TriggerPipeContents.java | 2 +- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java b/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java index 29173b54..e8c12e57 100644 --- a/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java +++ b/common/net/minecraft/src/buildcraft/api/liquids/LiquidManager.java @@ -18,6 +18,15 @@ public class LiquidManager { return null; } + + public static int getLiquidIDForFilledItem(ItemStack filledItem) { + LiquidStack liquidForFilledItem = getLiquidForFilledItem(filledItem); + + if (liquidForFilledItem == null) + return 0; + + return liquidForFilledItem.itemID; + } public static ItemStack getFilledItemForLiquid(LiquidStack liquid) { for (LiquidData data : liquids) diff --git a/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java b/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java index a7da5891..e0c89e8d 100644 --- a/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java +++ b/common/net/minecraft/src/buildcraft/core/TriggerLiquidContainer.java @@ -74,7 +74,7 @@ public class TriggerLiquidContainer extends Trigger { int seachedLiquidId = 0; if (parameter != null && parameter.getItem() != null) - seachedLiquidId = LiquidManager.getLiquidForFilledItem(parameter.getItem()).itemID; + seachedLiquidId = LiquidManager.getLiquidIDForFilledItem(parameter.getItem()); LiquidSlot[] liquids = container.getLiquidSlots(); diff --git a/common/net/minecraft/src/buildcraft/energy/EngineIron.java b/common/net/minecraft/src/buildcraft/energy/EngineIron.java index 8f1cced0..c3512850 100644 --- a/common/net/minecraft/src/buildcraft/energy/EngineIron.java +++ b/common/net/minecraft/src/buildcraft/energy/EngineIron.java @@ -18,7 +18,6 @@ import net.minecraft.src.buildcraft.api.IronEngineFuel; import net.minecraft.src.buildcraft.api.LiquidSlot; import net.minecraft.src.buildcraft.api.Orientations; import net.minecraft.src.buildcraft.api.liquids.LiquidManager; -import net.minecraft.src.buildcraft.api.liquids.LiquidStack; import net.minecraft.src.buildcraft.core.DefaultProps; import net.minecraft.src.buildcraft.core.Utils; @@ -125,12 +124,7 @@ public class EngineIron extends Engine { super.update(); if (itemInInventory != null) { - - LiquidStack liquidForFilledItem = LiquidManager.getLiquidForFilledItem(itemInInventory); - if (liquidForFilledItem == null) - return; - - int liquidId = liquidForFilledItem.itemID; + int liquidId = LiquidManager.getLiquidIDForFilledItem(itemInInventory); if (liquidId != 0) { if (fill(Orientations.Unknown, BuildCraftAPI.BUCKET_VOLUME, liquidId, false) == BuildCraftAPI.BUCKET_VOLUME) { diff --git a/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java b/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java index 4aeab666..5a249c6a 100644 --- a/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java +++ b/common/net/minecraft/src/buildcraft/factory/BlockRefinery.java @@ -102,7 +102,7 @@ public class BlockRefinery extends BlockContainer { return true; } else { - int liquidId = LiquidManager.getLiquidForFilledItem(entityplayer.getCurrentEquippedItem()).itemID; + int liquidId = LiquidManager.getLiquidIDForFilledItem(entityplayer.getCurrentEquippedItem()); if (liquidId != 0) { int qty = ((TileRefinery) world.getBlockTileEntity(i, j, k)).fill(Orientations.Unknown, diff --git a/common/net/minecraft/src/buildcraft/factory/BlockTank.java b/common/net/minecraft/src/buildcraft/factory/BlockTank.java index 9c575d20..45510e60 100644 --- a/common/net/minecraft/src/buildcraft/factory/BlockTank.java +++ b/common/net/minecraft/src/buildcraft/factory/BlockTank.java @@ -92,7 +92,7 @@ public class BlockTank extends BlockContainer implements ITextureProvider { ItemStack current = entityplayer.inventory.getCurrentItem(); if (current != null) { - int liquidId = LiquidManager.getLiquidForFilledItem(current).itemID; + int liquidId = LiquidManager.getLiquidIDForFilledItem(current); TileTank tank = (TileTank) world.getBlockTileEntity(i, j, k); diff --git a/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java b/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java index 1b26a93d..810a8c3f 100644 --- a/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java +++ b/common/net/minecraft/src/buildcraft/transport/TriggerPipeContents.java @@ -93,7 +93,7 @@ public class TriggerPipeContents extends Trigger implements ITriggerPipe { int seachedLiquidId = 0; if (parameter != null && parameter.getItem() != null) - seachedLiquidId = LiquidManager.getLiquidForFilledItem(parameter.getItem()).itemID; + seachedLiquidId = LiquidManager.getLiquidIDForFilledItem(parameter.getItem()); if (kind == Kind.Empty) { for (LiquidBuffer b : transportLiquids.side) From c3dc022880b96618a16d1b52824ab6a32918a0d3 Mon Sep 17 00:00:00 2001 From: psxlover Date: Thu, 12 Jul 2012 00:22:19 +0300 Subject: [PATCH 12/12] Fixed an NPE when a power pipe tries to give power to a ghost pipe. This has been bugging me a long time, but since the old svn is gone I don't know what change caused it (it's not happening in 3.1.5). It may not be the best approach but it prevents mc from crashing. --- .../minecraft/src/buildcraft/transport/PipeTransportPower.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java b/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java index 0e57fa61..3b290093 100644 --- a/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java +++ b/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java @@ -141,6 +141,9 @@ public class PipeTransportPower extends PipeTransport { if (entity instanceof TileGenericPipe) { TileGenericPipe nearbyTile = (TileGenericPipe) entity; + if (nearbyTile.pipe == null) + continue; + PipeTransportPower nearbyTransport = (PipeTransportPower) nearbyTile.pipe.transport; nearbyTransport.requestEnergy(Orientations.values()[i].reverse(), transferQuery[i]);