From c71c5d9fe723b9b789019e2d25788b95e025dac4 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 29 Aug 2014 03:14:00 +0100 Subject: [PATCH 1/5] Fix integer conversion --- src/main/java/mekanism/common/util/MekanismUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index a21b5b956..c24e13bc0 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -632,7 +632,7 @@ public final class MekanismUtils */ public static int getSecondaryEnergyPerTick(IUpgradeManagement mgmt, int def) { - return def * (int)Math.pow(Mekanism.maxUpgradeMultiplier, mgmt.getSpeedMultiplier()/8.0); + return (int)(def * Math.pow(Mekanism.maxUpgradeMultiplier, mgmt.getSpeedMultiplier()/8.0)); } /** From a8d04828ea7db308658d69d904bd21472965d077 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Thu, 28 Aug 2014 20:59:22 +0100 Subject: [PATCH 2/5] Clean up some stuff using ForgeDirection's rotation matrix. --- .../common/block/BlockEnergyCube.java | 26 ++----------------- .../mekanism/common/block/BlockGasTank.java | 22 ++-------------- .../mekanism/common/block/BlockMachine.java | 20 ++------------ .../common/block/BlockGenerator.java | 22 +++------------- 4 files changed, 9 insertions(+), 81 deletions(-) diff --git a/src/main/java/mekanism/common/block/BlockEnergyCube.java b/src/main/java/mekanism/common/block/BlockEnergyCube.java index 80c924a58..c1b6a9c6c 100644 --- a/src/main/java/mekanism/common/block/BlockEnergyCube.java +++ b/src/main/java/mekanism/common/block/BlockEnergyCube.java @@ -141,7 +141,7 @@ public class BlockEnergyCube extends BlockContainer implements IPeripheralProvid } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int i1, float f1, float f2, float f3) + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int side, float f1, float f2, float f3) { if(ItemAttacher.canAttach(entityplayer.getCurrentEquippedItem())) { @@ -170,29 +170,7 @@ public class BlockEnergyCube extends BlockContainer implements IPeripheralProvid if(ModAPIManager.INSTANCE.hasAPI("BuildCraftAPI|tools") && tool instanceof IToolWrench) ((IToolWrench)tool).wrenchUsed(entityplayer, x, y, z); - int change = 0; - - switch(tileEntity.facing) - { - case 3: - change = 5; - break; - case 5: - change = 2; - break; - case 2: - change = 4; - break; - case 4: - change = 1; - break; - case 1: - change = 0; - break; - case 0: - change = 3; - break; - } + int change = ForgeDirection.ROTATION_MATRIX[side][tileEntity.facing]; tileEntity.setFacing((short)change); world.notifyBlocksOfNeighborChange(x, y, z, this); diff --git a/src/main/java/mekanism/common/block/BlockGasTank.java b/src/main/java/mekanism/common/block/BlockGasTank.java index faa15ca04..a98018019 100644 --- a/src/main/java/mekanism/common/block/BlockGasTank.java +++ b/src/main/java/mekanism/common/block/BlockGasTank.java @@ -33,8 +33,6 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockGasTank extends BlockContainer { - public Random machineRand = new Random(); - public BlockGasTank() { super(Material.iron); @@ -83,7 +81,7 @@ public class BlockGasTank extends BlockContainer } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int facing, float playerX, float playerY, float playerZ) + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int side, float playerX, float playerY, float playerZ) { if(ItemAttacher.canAttach(entityplayer.getCurrentEquippedItem())) { @@ -112,23 +110,7 @@ public class BlockGasTank extends BlockContainer if(ModAPIManager.INSTANCE.hasAPI("BuildCraftAPI|tools") && tool instanceof IToolWrench) ((IToolWrench)tool).wrenchUsed(entityplayer, x, y, z); - int change = 0; - - switch(tileEntity.facing) - { - case 3: - change = 5; - break; - case 5: - change = 2; - break; - case 2: - change = 4; - break; - case 4: - change = 3; - break; - } + int change = ForgeDirection.ROTATION_MATRIX[ForgeDirection.UP.ordinal()][tileEntity.facing]; tileEntity.setFacing((short)change); world.notifyBlocksOfNeighborChange(x, y, z, this); diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index 7ea012e69..89a77169d 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -641,7 +641,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int facing, float posX, float posY, float posZ) + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int side, float posX, float posY, float posZ) { if(ItemAttacher.canAttach(entityplayer.getCurrentEquippedItem())) { @@ -671,23 +671,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer if(ModAPIManager.INSTANCE.hasAPI("BuildCraftAPI|tools") && tool instanceof IToolWrench) ((IToolWrench)tool).wrenchUsed(entityplayer, x, y, z); - int change = 0; - - switch(tileEntity.facing) - { - case 3: - change = 5; - break; - case 5: - change = 2; - break; - case 2: - change = 4; - break; - case 4: - change = 3; - break; - } + int change = ForgeDirection.ROTATION_MATRIX[ForgeDirection.UP.ordinal()][tileEntity.facing]; if(tileEntity instanceof TileEntityLogisticalSorter) { diff --git a/src/main/java/mekanism/generators/common/block/BlockGenerator.java b/src/main/java/mekanism/generators/common/block/BlockGenerator.java index 9789e0089..0a6f9f2ac 100644 --- a/src/main/java/mekanism/generators/common/block/BlockGenerator.java +++ b/src/main/java/mekanism/generators/common/block/BlockGenerator.java @@ -295,7 +295,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds, IP } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int facing, float playerX, float playerY, float playerZ) + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int side, float playerX, float playerY, float playerZ) { if(ItemAttacher.canAttach(entityplayer.getCurrentEquippedItem())) { @@ -325,23 +325,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds, IP if(ModAPIManager.INSTANCE.hasAPI("BuildCraftAPI|tools") && tool instanceof IToolWrench) ((IToolWrench)tool).wrenchUsed(entityplayer, x, y, z); - int change = 0; - - switch(tileEntity.facing) - { - case 3: - change = 5; - break; - case 5: - change = 2; - break; - case 2: - change = 4; - break; - case 4: - change = 3; - break; - } + int change = ForgeDirection.ROTATION_MATRIX[ForgeDirection.UP.ordinal()][tileEntity.facing]; tileEntity.setFacing((short)change); world.notifyBlocksOfNeighborChange(x, y, z, this); @@ -351,7 +335,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds, IP if(metadata == 3 && entityplayer.getCurrentEquippedItem() != null && entityplayer.getCurrentEquippedItem().isItemEqual(new ItemStack(MekanismGenerators.Generator, 1, 2))) { - if(((TileEntityBasicBlock)world.getTileEntity(x, y, z)).facing != facing) + if(((TileEntityBasicBlock)world.getTileEntity(x, y, z)).facing != side) { return false; } From 87a692a32595ce1863a6971e84a6e0e2b99b07cc Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Thu, 28 Aug 2014 20:59:36 +0100 Subject: [PATCH 3/5] Fix Sorter facing calculation. --- src/main/java/mekanism/common/block/BlockMachine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index 89a77169d..59c649489 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -681,7 +681,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer { TileEntity tile = Coord4D.get(tileEntity).getFromSide(dir).getTileEntity(world); - if(tileEntity instanceof IInventory) + if(tile instanceof IInventory) { change = dir.getOpposite().ordinal(); break; From 3462126f3b1013df1d5ad52a8d78587e58bbf8d8 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Sat, 30 Aug 2014 03:55:00 +0100 Subject: [PATCH 4/5] Oops. Missed a loop with direct emission to BC. --- src/main/java/mekanism/common/util/CableUtils.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/mekanism/common/util/CableUtils.java b/src/main/java/mekanism/common/util/CableUtils.java index fd1d76871..31ed1a67b 100644 --- a/src/main/java/mekanism/common/util/CableUtils.java +++ b/src/main/java/mekanism/common/util/CableUtils.java @@ -237,17 +237,15 @@ public final class CableUtils { double sent = 0; boolean tryAgain = false; + int i = 0; do { - tryAgain = false; - double prev = sent; sent += emit_do(emitter, outputtingSides, energyToSend-sent, tryAgain); - if(energyToSend-sent > 0 && sent-prev > 0) - { - tryAgain = true; - } + tryAgain = energyToSend-sent > 0 && sent-prev > 0 && i < 100; + + i++; } while(tryAgain); emitter.setEnergy(emitter.getEnergy() - sent); From 6ffb64b740bb0b0c352422e468f9cce8cb836df7 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Sun, 31 Aug 2014 20:30:41 +0100 Subject: [PATCH 5/5] KILL #1759 THE IMPOSSIBLE BUG KILL KILL --- src/main/java/mekanism/common/FluidNetwork.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/mekanism/common/FluidNetwork.java b/src/main/java/mekanism/common/FluidNetwork.java index 329aafb84..7635d9ef7 100644 --- a/src/main/java/mekanism/common/FluidNetwork.java +++ b/src/main/java/mekanism/common/FluidNetwork.java @@ -254,11 +254,14 @@ public class FluidNetwork extends DynamicNetwork if(fluidStored != null) { prevTransferAmount = tickEmit(fluidStored, true); - fluidStored.amount -= prevTransferAmount; - - if(fluidStored != null && fluidStored.amount <= 0) + if(fluidStored != null) { - fluidStored = null; + fluidStored.amount -= prevTransferAmount; + + if(fluidStored.amount <= 0) + { + fluidStored = null; + } } } }