From 4bd38b0e61665597ef9ab05898787c9405940e3e Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 26 Dec 2015 15:40:58 +0100 Subject: [PATCH] store direction in blocks --- .../java/storagecraft/block/BlockBase.java | 40 +++++++++++++++++++ .../java/storagecraft/block/BlockCable.java | 1 + .../storagecraft/block/BlockController.java | 16 ++------ .../java/storagecraft/block/BlockGrid.java | 1 + .../java/storagecraft/block/BlockMachine.java | 16 ++------ 5 files changed, 48 insertions(+), 26 deletions(-) diff --git a/src/main/java/storagecraft/block/BlockBase.java b/src/main/java/storagecraft/block/BlockBase.java index 0712aaee1..a616c433d 100644 --- a/src/main/java/storagecraft/block/BlockBase.java +++ b/src/main/java/storagecraft/block/BlockBase.java @@ -3,12 +3,16 @@ package storagecraft.block; import net.minecraft.block.Block; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; 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.tile.TileBase; @@ -16,6 +20,8 @@ import storagecraft.util.InventoryUtils; public abstract class BlockBase extends Block { + public static final PropertyDirection DIRECTION = PropertyDirection.create("direction"); + private String name; public BlockBase(String name) @@ -33,6 +39,40 @@ public abstract class BlockBase extends Block return "block." + StorageCraft.ID + ":" + name; } + @Override + protected BlockState createBlockState() + { + return new BlockState(this, new IProperty[] + { + DIRECTION, + }); + } + + @Override + public IBlockState getStateFromMeta(int meta) + { + return getDefaultState(); + } + + @Override + public int getMetaFromState(IBlockState state) + { + return 0; + } + + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) + { + TileEntity tile = world.getTileEntity(pos); + + if (tile instanceof TileBase) + { + return state.withProperty(DIRECTION, ((TileBase) tile).getDirection()); + } + + return state; + } + @Override public int damageDropped(IBlockState state) { diff --git a/src/main/java/storagecraft/block/BlockCable.java b/src/main/java/storagecraft/block/BlockCable.java index 10518dfb8..b953fcb0e 100644 --- a/src/main/java/storagecraft/block/BlockCable.java +++ b/src/main/java/storagecraft/block/BlockCable.java @@ -27,6 +27,7 @@ public class BlockCable extends BlockBase implements ITileEntityProvider { return new BlockState(this, new IProperty[] { + DIRECTION, SENSITIVE }); } diff --git a/src/main/java/storagecraft/block/BlockController.java b/src/main/java/storagecraft/block/BlockController.java index 391605908..ad39d2571 100644 --- a/src/main/java/storagecraft/block/BlockController.java +++ b/src/main/java/storagecraft/block/BlockController.java @@ -29,26 +29,16 @@ public class BlockController extends BlockBase implements ITileEntityProvider { return new BlockState(this, new IProperty[] { + DIRECTION, ENERGY }); } - @Override - public IBlockState getStateFromMeta(int meta) - { - return getDefaultState(); - } - - @Override - public int getMetaFromState(IBlockState state) - { - return 0; - } - @Override public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { - return state.withProperty(ENERGY, ((TileController) world.getTileEntity(pos)).getEnergyScaled(15)); + return super.getActualState(state, world, pos) + .withProperty(ENERGY, ((TileController) world.getTileEntity(pos)).getEnergyScaled(15)); } @Override diff --git a/src/main/java/storagecraft/block/BlockGrid.java b/src/main/java/storagecraft/block/BlockGrid.java index ff1abb047..e617e1447 100644 --- a/src/main/java/storagecraft/block/BlockGrid.java +++ b/src/main/java/storagecraft/block/BlockGrid.java @@ -47,6 +47,7 @@ public class BlockGrid extends BlockMachine { return new BlockState(this, new IProperty[] { + DIRECTION, CONNECTED, TYPE }); diff --git a/src/main/java/storagecraft/block/BlockMachine.java b/src/main/java/storagecraft/block/BlockMachine.java index 6651567c0..e4120f331 100644 --- a/src/main/java/storagecraft/block/BlockMachine.java +++ b/src/main/java/storagecraft/block/BlockMachine.java @@ -23,25 +23,15 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi { return new BlockState(this, new IProperty[] { + DIRECTION, CONNECTED }); } - @Override - public IBlockState getStateFromMeta(int meta) - { - return getDefaultState(); - } - - @Override - public int getMetaFromState(IBlockState state) - { - return 0; - } - @Override public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { - return state.withProperty(CONNECTED, ((TileMachine) world.getTileEntity(pos)).isConnected()); + return super.getActualState(state, world, pos) + .withProperty(CONNECTED, ((TileMachine) world.getTileEntity(pos)).isConnected()); } }