diff --git a/src/main/java/appeng/block/networking/BlockController.java b/src/main/java/appeng/block/networking/BlockController.java index 5a4c3c21c..79878351a 100644 --- a/src/main/java/appeng/block/networking/BlockController.java +++ b/src/main/java/appeng/block/networking/BlockController.java @@ -23,14 +23,13 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.util.BlockRenderLayer; -import net.minecraft.util.EnumFacing; import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import net.minecraftforge.common.property.IExtendedBlockState; import appeng.block.AEBaseTileBlock; import appeng.tile.networking.TileController; @@ -57,7 +56,7 @@ public class BlockController extends AEBaseTileBlock */ public enum ControllerRenderType implements IStringSerializable { - block, column, inside_a, inside_b; + block, column_x, column_y, column_z, inside_a, inside_b; @Override public String getName() @@ -71,12 +70,28 @@ public class BlockController extends AEBaseTileBlock public static final PropertyEnum CONTROLLER_TYPE = PropertyEnum.create( "type", ControllerRenderType.class ); + public BlockController() + { + super( Material.IRON ); + this.setTileEntity( TileController.class ); + this.setHardness( 6 ); + this.setDefaultState( getDefaultState() + .withProperty( CONTROLLER_STATE, ControllerBlockState.offline ) + .withProperty( CONTROLLER_TYPE, ControllerRenderType.block ) ); + } + @Override protected IProperty[] getAEStates() { return new IProperty[] { CONTROLLER_STATE, CONTROLLER_TYPE }; } + @Override + protected BlockStateContainer createBlockState() + { + return new BlockStateContainer( this, getAEStates() ); + } + /** * This will compute the AE_BLOCK_FORWARD, AE_BLOCK_UP and CONTROLLER_TYPE block states based on adjacent * controllers and the network state of this controller (offline, online, conflicted). This is used to @@ -100,15 +115,15 @@ public class BlockController extends AEBaseTileBlock if( xx && !yy && !zz ) { - type = ControllerRenderType.column; + type = ControllerRenderType.column_x; } else if( !xx && yy && !zz ) { - type = ControllerRenderType.column; + type = ControllerRenderType.column_y; } else if( !xx && !yy && zz ) { - type = ControllerRenderType.column; + type = ControllerRenderType.column_z; } else if( ( xx ? 1 : 0 ) + ( yy ? 1 : 0 ) + ( zz ? 1 : 0 ) >= 2 ) { @@ -132,37 +147,7 @@ public class BlockController extends AEBaseTileBlock @Override public IBlockState getExtendedState( IBlockState state, IBlockAccess world, BlockPos pos ) { - // Only used for columns, really - EnumFacing up = EnumFacing.UP; - EnumFacing forward = EnumFacing.NORTH; - - int x = pos.getX(); - int y = pos.getY(); - int z = pos.getZ(); - - // Detect whether controllers are on both sides of the x, y, and z axes - final boolean xx = this.getTileEntity( world, x - 1, y, z ) instanceof TileController && this.getTileEntity( world, x + 1, y, z ) instanceof TileController; - final boolean yy = this.getTileEntity( world, x, y - 1, z ) instanceof TileController && this.getTileEntity( world, x, y + 1, z ) instanceof TileController; - final boolean zz = this.getTileEntity( world, x, y, z - 1 ) instanceof TileController && this.getTileEntity( world, x, y, z + 1 ) instanceof TileController; - - if( xx && !yy && !zz ) - { - up = EnumFacing.EAST; - forward = EnumFacing.UP; - } - else if( !xx && yy && !zz ) - { - up = EnumFacing.UP; - forward = EnumFacing.NORTH; - } - else if( !xx && !yy && zz ) - { - up = EnumFacing.NORTH; - forward = EnumFacing.UP; - } - - IExtendedBlockState extState = (IExtendedBlockState) super.getExtendedState( state, world, pos ); - return extState.withProperty( FORWARD, forward ).withProperty( UP, up ); + return state; } @Override @@ -184,14 +169,6 @@ public class BlockController extends AEBaseTileBlock return BlockRenderLayer.CUTOUT; } - public BlockController() - { - super( Material.IRON ); - this.setTileEntity( TileController.class ); - this.setHardness( 6 ); - this.setDefaultState( getDefaultState().withProperty( CONTROLLER_STATE, ControllerBlockState.offline ).withProperty( CONTROLLER_TYPE, ControllerRenderType.block ) ); - } - @Override public void neighborChanged( final IBlockState state, final World w, final BlockPos pos, final Block neighborBlock ) { diff --git a/src/main/java/appeng/block/networking/ControllerRendering.java b/src/main/java/appeng/block/networking/ControllerRendering.java new file mode 100644 index 000000000..5f081a09a --- /dev/null +++ b/src/main/java/appeng/block/networking/ControllerRendering.java @@ -0,0 +1,17 @@ +package appeng.block.networking; + + +import appeng.bootstrap.BlockRenderingCustomizer; +import appeng.bootstrap.IBlockRendering; +import appeng.bootstrap.IItemRendering; + + +public class ControllerRendering extends BlockRenderingCustomizer +{ + @Override + public void customize( IBlockRendering rendering, IItemRendering itemRendering ) + { + // Disables the default model rotator + rendering.modelCustomizer( ( loc, model ) -> model ); + } +} diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index c3df218c4..b1adbb581 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -64,6 +64,7 @@ import appeng.block.networking.BlockEnergyCellRendering; import appeng.block.networking.BlockWireless; import appeng.block.networking.CableBusColor; import appeng.block.networking.CableModelCustomizer; +import appeng.block.networking.ControllerRendering; import appeng.block.qnb.BlockQuantumLinkChamber; import appeng.block.qnb.BlockQuantumRing; import appeng.block.spatial.BlockMatrixFrame; @@ -274,7 +275,10 @@ public final class ApiBlocks implements IBlocks this.quantumLink = registry.block( "quantum_link", BlockQuantumLinkChamber::new ).features( AEFeature.QuantumNetworkBridge ).build(); this.spatialPylon = registry.block( "spatial_pylon", BlockSpatialPylon::new ).features( AEFeature.SpatialIO ).build(); this.spatialIOPort = registry.block( "spatial_ioport", BlockSpatialIOPort::new ).features( AEFeature.SpatialIO ).build(); - this.controller = registry.block( "controller", BlockController::new ).features( AEFeature.Channels ).build(); + this.controller = registry.block( "controller", BlockController::new ) + .features( AEFeature.Channels ) + .rendering( new ControllerRendering() ) + .build(); this.drive = registry.block( "drive", BlockDrive::new ) .features( AEFeature.StorageCells, AEFeature.MEDrive ) .useCustomItemModel() diff --git a/src/main/resources/assets/appliedenergistics2/blockstates/controller.json b/src/main/resources/assets/appliedenergistics2/blockstates/controller.json index 105807547..152210759 100644 --- a/src/main/resources/assets/appliedenergistics2/blockstates/controller.json +++ b/src/main/resources/assets/appliedenergistics2/blockstates/controller.json @@ -11,7 +11,7 @@ }, { "apply": { - "model": "appliedenergistics2:controller/controller_block_online.uvl" + "model": "appliedenergistics2:controller/controller_block_online" }, "when": { "state": "online", @@ -20,38 +20,101 @@ }, { "apply": { - "model": "appliedenergistics2:controller/controller_block_conflicted.uvl" + "model": "appliedenergistics2:controller/controller_block_conflicted" }, "when": { "state": "conflicted", "type": "block" } }, + { + "apply": { + "model": "appliedenergistics2:controller/controller_column_offline", + "x": 90, + "y": 90 + }, + "when": { + "state": "offline", + "type": "column_x" + } + }, { "apply": { "model": "appliedenergistics2:controller/controller_column_offline" }, "when": { "state": "offline", - "type": "column" + "type": "column_y" } }, { "apply": { - "model": "appliedenergistics2:controller/controller_column_online.uvl" + "model": "appliedenergistics2:controller/controller_column_offline", + "x": 90 + }, + "when": { + "state": "offline", + "type": "column_z" + } + }, + { + "apply": { + "model": "appliedenergistics2:controller/controller_column_online", + "x": 90, + "y": 90 }, "when": { "state": "online", - "type": "column" + "type": "column_x" } }, { "apply": { - "model": "appliedenergistics2:controller/controller_column_conflicted.uvl" + "model": "appliedenergistics2:controller/controller_column_online" + }, + "when": { + "state": "online", + "type": "column_y" + } + }, + { + "apply": { + "model": "appliedenergistics2:controller/controller_column_online", + "x": 90 + }, + "when": { + "state": "online", + "type": "column_z" + } + }, + { + "apply": { + "model": "appliedenergistics2:controller/controller_column_conflicted", + "x": 90, + "y": 90 }, "when": { "state": "conflicted", - "type": "column" + "type": "column_x" + } + }, + { + "apply": { + "model": "appliedenergistics2:controller/controller_column_conflicted" + }, + "when": { + "state": "conflicted", + "type": "column_y" + } + }, + { + "apply": { + "model": "appliedenergistics2:controller/controller_column_conflicted", + "x": 90 + }, + "when": { + "state": "conflicted", + "type": "column_z" } }, { diff --git a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_conflicted_uvl.json b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_conflicted.json similarity index 92% rename from src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_conflicted_uvl.json rename to src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_conflicted.json index 46738ddfa..c4de97ea2 100644 --- a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_conflicted_uvl.json +++ b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_conflicted.json @@ -1,23 +1,5 @@ { - "display": { - "firstperson_righthand": { - "rotation": [ - 0, - 135, - 0 - ], - "scale": [ - 0.40, - 0.40, - 0.40 - ], - "translation": [ - 0, - 0, - 0 - ] - } - }, + "uvlMarker": true, "elements": [ { "faces": { diff --git a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_online_uvl.json b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_online.json similarity index 92% rename from src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_online_uvl.json rename to src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_online.json index 7ac5f246e..730f52d9f 100644 --- a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_online_uvl.json +++ b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_block_online.json @@ -1,23 +1,5 @@ { - "display": { - "firstperson_righthand": { - "rotation": [ - 0, - 135, - 0 - ], - "scale": [ - 0.40, - 0.40, - 0.40 - ], - "translation": [ - 0, - 0, - 0 - ] - } - }, + "uvlMarker": true, "elements": [ { "faces": { diff --git a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_conflicted_uvl.json b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_conflicted.json similarity index 92% rename from src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_conflicted_uvl.json rename to src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_conflicted.json index 0b59a7eb9..3ae7ffe48 100644 --- a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_conflicted_uvl.json +++ b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_conflicted.json @@ -1,23 +1,5 @@ { - "display": { - "firstperson_righthand": { - "rotation": [ - 0, - 135, - 0 - ], - "scale": [ - 0.40, - 0.40, - 0.40 - ], - "translation": [ - 0, - 0, - 0 - ] - } - }, + "uvlMarker": true, "elements": [ { "faces": { diff --git a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_offline.json b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_offline.json index 2888093a9..b1dfd8674 100644 --- a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_offline.json +++ b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_offline.json @@ -1,6 +1,7 @@ { - "parent": "block/cube_all", + "parent": "block/cube_column", "textures": { - "all": "appliedenergistics2:blocks/controller_column" + "side": "appliedenergistics2:blocks/controller_column", + "end": "appliedenergistics2:blocks/controller" } } \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_online_uvl.json b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_online.json similarity index 92% rename from src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_online_uvl.json rename to src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_online.json index 93f228171..6e225ffa2 100644 --- a/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_online_uvl.json +++ b/src/main/resources/assets/appliedenergistics2/models/block/controller/controller_column_online.json @@ -1,23 +1,5 @@ { - "display": { - "firstperson_righthand": { - "rotation": [ - 0, - 135, - 0 - ], - "scale": [ - 0.40, - 0.40, - 0.40 - ], - "translation": [ - 0, - 0, - 0 - ] - } - }, + "uvlMarker": true, "elements": [ { "faces": { diff --git a/src/main/resources/assets/appliedenergistics2/models/item/controller.json b/src/main/resources/assets/appliedenergistics2/models/item/controller.json deleted file mode 100644 index f0c51ccd6..000000000 --- a/src/main/resources/assets/appliedenergistics2/models/item/controller.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "appliedenergistics2:block/controller/controller_block_offline" -} \ No newline at end of file