diff --git a/src/main/java/storagecraft/block/BlockBase.java b/src/main/java/storagecraft/block/BlockBase.java index 7c9fdec87..0712aaee1 100644 --- a/src/main/java/storagecraft/block/BlockBase.java +++ b/src/main/java/storagecraft/block/BlockBase.java @@ -33,6 +33,12 @@ public abstract class BlockBase extends Block return "block." + StorageCraft.ID + ":" + name; } + @Override + public int damageDropped(IBlockState state) + { + return getMetaFromState(state); + } + @Override public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) { diff --git a/src/main/java/storagecraft/block/BlockController.java b/src/main/java/storagecraft/block/BlockController.java index 140fe6e58..391605908 100644 --- a/src/main/java/storagecraft/block/BlockController.java +++ b/src/main/java/storagecraft/block/BlockController.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import storagecraft.StorageCraft; import storagecraft.StorageCraftGUI; @@ -35,13 +36,19 @@ public class BlockController extends BlockBase implements ITileEntityProvider @Override public IBlockState getStateFromMeta(int meta) { - return getDefaultState().withProperty(ENERGY, meta); + return getDefaultState(); } @Override public int getMetaFromState(IBlockState state) { - return ((Integer) state.getValue(ENERGY)); + return 0; + } + + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) + { + return state.withProperty(ENERGY, ((TileController) world.getTileEntity(pos)).getEnergyScaled(15)); } @Override @@ -78,6 +85,6 @@ public class BlockController extends BlockBase implements ITileEntityProvider @Override public int getComparatorInputOverride(World world, BlockPos pos) { - return (Integer) world.getBlockState(pos).getValue(ENERGY); + return ((TileController) world.getTileEntity(pos)).getEnergyScaled(15); } } diff --git a/src/main/java/storagecraft/block/BlockGrid.java b/src/main/java/storagecraft/block/BlockGrid.java index 6331af8fe..ff1abb047 100644 --- a/src/main/java/storagecraft/block/BlockGrid.java +++ b/src/main/java/storagecraft/block/BlockGrid.java @@ -55,29 +55,12 @@ public class BlockGrid extends BlockMachine @Override public IBlockState getStateFromMeta(int meta) { - switch (meta) - { - case 0: - return getDefaultState().withProperty(CONNECTED, false).withProperty(TYPE, EnumGridType.NORMAL); - case 1: - return getDefaultState().withProperty(CONNECTED, false).withProperty(TYPE, EnumGridType.CRAFTING); - case 2: - return getDefaultState().withProperty(CONNECTED, true).withProperty(TYPE, EnumGridType.NORMAL); - case 3: - return getDefaultState().withProperty(CONNECTED, true).withProperty(TYPE, EnumGridType.CRAFTING); - } - - return null; + return getDefaultState().withProperty(TYPE, meta == 0 ? EnumGridType.NORMAL : EnumGridType.CRAFTING); } @Override public int getMetaFromState(IBlockState state) { - if ((Boolean) state.getValue(CONNECTED)) - { - return state.getValue(TYPE) == EnumGridType.NORMAL ? 2 : 3; - } - return state.getValue(TYPE) == EnumGridType.NORMAL ? 0 : 1; } diff --git a/src/main/java/storagecraft/block/BlockMachine.java b/src/main/java/storagecraft/block/BlockMachine.java index 9aec46bfb..6651567c0 100644 --- a/src/main/java/storagecraft/block/BlockMachine.java +++ b/src/main/java/storagecraft/block/BlockMachine.java @@ -5,6 +5,9 @@ import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; +import net.minecraft.util.BlockPos; +import net.minecraft.world.IBlockAccess; +import storagecraft.tile.TileMachine; public abstract class BlockMachine extends BlockBase implements ITileEntityProvider { @@ -13,8 +16,6 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi public BlockMachine(String name) { super(name); - - setDefaultState(blockState.getBaseState().withProperty(CONNECTED, false)); } @Override @@ -29,12 +30,18 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi @Override public IBlockState getStateFromMeta(int meta) { - return getDefaultState().withProperty(CONNECTED, meta == 1); + return getDefaultState(); } @Override public int getMetaFromState(IBlockState state) { - return ((Boolean) state.getValue(CONNECTED)) ? 1 : 0; + return 0; + } + + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) + { + return state.withProperty(CONNECTED, ((TileMachine) world.getTileEntity(pos)).isConnected()); } } diff --git a/src/main/java/storagecraft/tile/TileController.java b/src/main/java/storagecraft/tile/TileController.java index e3013c55c..d1789a698 100644 --- a/src/main/java/storagecraft/tile/TileController.java +++ b/src/main/java/storagecraft/tile/TileController.java @@ -10,8 +10,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; -import storagecraft.StorageCraftBlocks; -import storagecraft.block.BlockController; import storagecraft.storage.IStorage; import storagecraft.storage.IStorageProvider; import storagecraft.storage.StorageItem; @@ -45,8 +43,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor if (!worldObj.isRemote) { - int lastEnergy = energy.getEnergyStored(); - if (ticks % 40 == 0) { if (!isActive()) @@ -114,14 +110,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } energy.extractEnergy(energyUsage, false); - - if (lastEnergy != energy.getEnergyStored()) - { - worldObj.setBlockState(pos, worldObj.getBlockState(pos).withProperty(BlockController.ENERGY, getEnergyScaled(15))); - // @TODO: Is this needed? - worldObj.markBlockForUpdate(pos); - worldObj.notifyNeighborsOfStateChange(pos, StorageCraftBlocks.CONTROLLER); - } } }