diff --git a/src/main/java/appeng/block/AEBaseBlock.java b/src/main/java/appeng/block/AEBaseBlock.java index 2fc6eaa3..54aeb3fc 100644 --- a/src/main/java/appeng/block/AEBaseBlock.java +++ b/src/main/java/appeng/block/AEBaseBlock.java @@ -128,19 +128,10 @@ public abstract class AEBaseBlock extends Block implements IAEFeature return this.featureFullName; } - public static final UnlistedBlockPos AE_BLOCK_POS = new UnlistedBlockPos(); - public static final UnlistedBlockAccess AE_BLOCK_ACCESS = new UnlistedBlockAccess(); - @Override - protected final BlockStateContainer createBlockState() + protected BlockStateContainer createBlockState() { - return new ExtendedBlockState( this, this.getAEStates(), new IUnlistedProperty[] { AE_BLOCK_POS, AE_BLOCK_ACCESS } ); - } - - @Override - public final IBlockState getExtendedState( final IBlockState state, final IBlockAccess world, final BlockPos pos ) - { - return ( (IExtendedBlockState) super.getExtendedState( state, world, pos ) ).withProperty( AE_BLOCK_POS, pos ).withProperty( AE_BLOCK_ACCESS, world ); + return new ExtendedBlockState( this, this.getAEStates(), new IUnlistedProperty[] {} ); } protected IProperty[] getAEStates() diff --git a/src/main/java/appeng/block/AEBaseTileBlock.java b/src/main/java/appeng/block/AEBaseTileBlock.java index 223b4bc6..8281073b 100644 --- a/src/main/java/appeng/block/AEBaseTileBlock.java +++ b/src/main/java/appeng/block/AEBaseTileBlock.java @@ -32,6 +32,9 @@ import com.google.common.collect.Lists; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -46,6 +49,9 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.property.ExtendedBlockState; +import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.common.property.IUnlistedProperty; import net.minecraftforge.fml.relauncher.ReflectionHelper; import appeng.api.implementations.items.IMemoryCard; @@ -69,7 +75,7 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature, { @Nonnull - private Class tileEntityType; + private Class tileEntityType; public AEBaseTileBlock( final Material mat ) { @@ -80,7 +86,29 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature, { super( mat, subName ); } - + + public static final PropertyDirection AE_BLOCK_FORWARD = PropertyDirection.create( "forward" ); + public static final PropertyDirection AE_BLOCK_UP = PropertyDirection.create( "up" ); + + @Override + protected IProperty[] getAEStates() + { + return new IProperty[] { AE_BLOCK_FORWARD, AE_BLOCK_UP }; + } + + @Override + public IBlockState getActualState( IBlockState state, IBlockAccess world, BlockPos pos ) + { + AEBaseTile tile = (AEBaseTile) world.getTileEntity( pos ); + return super.getActualState( state, world, pos ).withProperty( AE_BLOCK_FORWARD, tile.getForward()).withProperty( AE_BLOCK_UP, tile.getUp() ); + } + + @Override + public int getMetaFromState( IBlockState state ) + { + return 0; + } + @Override protected void setFeature( final EnumSet f ) { @@ -88,7 +116,7 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature, this.setHandler( featureHandler ); } - protected void setTileEntity( final Class c ) + protected void setTileEntity( final Class c ) { this.tileEntityType = c; this.setInventory( IInventory.class.isAssignableFrom( c ) ); diff --git a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java index f2f54ac5..fca52518 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java @@ -138,7 +138,7 @@ public class BlockCraftingUnit extends AEBaseTileBlock @Override protected IProperty[] getAEStates() { - return new IProperty[] { POWERED, FORMED }; + return new IProperty[] { AE_BLOCK_FORWARD, AE_BLOCK_UP, POWERED, FORMED }; } @Override diff --git a/src/main/java/appeng/block/misc/BlockLightDetector.java b/src/main/java/appeng/block/misc/BlockLightDetector.java index 79cd69d5..2c852499 100644 --- a/src/main/java/appeng/block/misc/BlockLightDetector.java +++ b/src/main/java/appeng/block/misc/BlockLightDetector.java @@ -75,7 +75,8 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl @Override protected IProperty[] getAEStates() { - return new IProperty[] { BlockTorch.FACING }; + //TODO 1.10-R - wtf? + return new IProperty[] { AE_BLOCK_FORWARD, AE_BLOCK_UP, BlockTorch.FACING }; } @Override diff --git a/src/main/java/appeng/block/networking/BlockCableBus.java b/src/main/java/appeng/block/networking/BlockCableBus.java index 92828dd8..8b482cca 100644 --- a/src/main/java/appeng/block/networking/BlockCableBus.java +++ b/src/main/java/appeng/block/networking/BlockCableBus.java @@ -78,8 +78,8 @@ public class BlockCableBus extends AEBaseTileBlock // implements { private static final ICableBusContainer NULL_CABLE_BUS = new NullCableBusContainer(); - private static Class noTesrTile; - private static Class tesrTile; + private static Class noTesrTile; + private static Class tesrTile; /** * Immibis MB Support. @@ -390,12 +390,12 @@ public class BlockCableBus extends AEBaseTileBlock // implements } } - public static Class getTesrTile() + public static Class getTesrTile() { return tesrTile; } - public static Class getNoTesrTile() + public static Class getNoTesrTile() { return noTesrTile; } diff --git a/src/main/java/appeng/block/networking/BlockController.java b/src/main/java/appeng/block/networking/BlockController.java index ac032f0b..d5468d46 100644 --- a/src/main/java/appeng/block/networking/BlockController.java +++ b/src/main/java/appeng/block/networking/BlockController.java @@ -56,7 +56,7 @@ public class BlockController extends AEBaseTileBlock @Override protected IProperty[] getAEStates() { - return new IProperty[] { CONTROLLER_STATE }; + return new IProperty[] { AE_BLOCK_FORWARD, AE_BLOCK_UP, CONTROLLER_STATE }; } @Override diff --git a/src/main/java/appeng/block/networking/BlockEnergyCell.java b/src/main/java/appeng/block/networking/BlockEnergyCell.java index 9474bd09..a948e36b 100644 --- a/src/main/java/appeng/block/networking/BlockEnergyCell.java +++ b/src/main/java/appeng/block/networking/BlockEnergyCell.java @@ -88,7 +88,7 @@ public class BlockEnergyCell extends AEBaseTileBlock @Override protected IProperty[] getAEStates() { - return new IProperty[] { ENERGY_STORAGE }; + return new IProperty[] { AE_BLOCK_FORWARD, AE_BLOCK_UP, ENERGY_STORAGE }; } @Override diff --git a/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java b/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java index f4c4f16c..3410af29 100644 --- a/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java +++ b/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java @@ -62,7 +62,8 @@ public class ToolQuartzWrench extends AEBaseItem implements IAEWrench /* , ITool { if( Platform.isClient() ) { - return !world.isRemote ? EnumActionResult.SUCCESS : EnumActionResult.FAIL; + //TODO 1.10-R - if we return FAIL on client, action will not be sent to server. Fix that in all Block#onItemUseFirst overrides. + return !world.isRemote ? EnumActionResult.SUCCESS : EnumActionResult.PASS; } if( b.rotateBlock( world, pos, side ) ) diff --git a/src/main/resources/assets/appliedenergistics2/blockstates/tile.BlockGrinder.json b/src/main/resources/assets/appliedenergistics2/blockstates/tile.BlockGrinder.json new file mode 100644 index 00000000..65e96a2a --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/blockstates/tile.BlockGrinder.json @@ -0,0 +1,8 @@ +{ + "variants": { + "forward=north,up=up": { "model": "appliedenergistics2:tile.BlockGrinder" }, + "forward=south,up=up": { "model": "appliedenergistics2:tile.BlockGrinder", "y": 180 }, + "forward=west,up=up": { "model": "appliedenergistics2:tile.BlockGrinder", "y": 270 }, + "forward=east,up=up": { "model": "appliedenergistics2:tile.BlockGrinder", "y": 90 } + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/block/tile.BlockGrinder.json b/src/main/resources/assets/appliedenergistics2/models/block/tile.BlockGrinder.json new file mode 100644 index 00000000..df612936 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/tile.BlockGrinder.json @@ -0,0 +1,8 @@ +{ + "parent": "block/orientable", + "textures": { + "top": "blocks/furnace_top", + "front": "blocks/furnace_front_off", + "side": "blocks/furnace_side" + } +} \ No newline at end of file