From 81984b3ad72efa86e555222b4c1bf4c71ac5ef06 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sat, 27 Aug 2016 18:12:54 +0200 Subject: [PATCH] Implemented ME chest item + block model. --- .../java/appeng/block/storage/BlockChest.java | 37 +++++++++++ .../appeng/block/storage/ChestRendering.java | 23 +++++++ .../appeng/block/storage/DriveSlotState.java | 44 +++++++++++-- .../appeng/block/storage/DriveSlotsState.java | 17 +---- .../core/api/definitions/ApiBlocks.java | 7 +- .../blockstates/chest.json | 60 ++++++++++++++++++ .../models/block/chest/base.json | 12 ++++ .../models/block/chest/cell_state_empty.json | 14 ++++ .../models/block/chest/cell_state_full.json | 23 +++++++ .../block/chest/cell_state_offline.json | 14 ++++ .../models/block/chest/cell_state_online.json | 23 +++++++ .../block/chest/cell_state_types_full.json | 23 +++++++ .../models/block/chest/lights_off.json | 14 ++++ .../models/block/chest/lights_on.json | 31 +++++++++ .../models/item/chest.json | 11 ++++ .../textures/blocks/chest/bottom.png | Bin 0 -> 398 bytes .../blocks/chest/cell_state_backdrop.png | Bin 0 -> 145 bytes .../blocks/chest/cell_state_empty.png | Bin 0 -> 140 bytes .../textures/blocks/chest/cell_state_full.png | Bin 0 -> 134 bytes .../blocks/chest/cell_state_offline.png | Bin 0 -> 147 bytes .../blocks/chest/cell_state_online.png | Bin 0 -> 136 bytes .../blocks/chest/cell_state_types_full.png | Bin 0 -> 132 bytes .../textures/blocks/chest/front.png | Bin 0 -> 375 bytes .../textures/blocks/chest/front_item.png | Bin 0 -> 323 bytes .../textures/blocks/chest/lights_off.png | Bin 0 -> 212 bytes .../blocks/chest/lights_on_bright.png | Bin 0 -> 245 bytes .../textures/blocks/chest/lights_on_dark.png | Bin 0 -> 232 bytes .../blocks/chest/lights_on_medium.png | Bin 0 -> 223 bytes .../textures/blocks/chest/side.png | Bin 0 -> 342 bytes .../textures/blocks/chest/top.png | Bin 0 -> 325 bytes .../textures/blocks/chest/top_item.png | Bin 0 -> 278 bytes 31 files changed, 330 insertions(+), 23 deletions(-) create mode 100644 src/main/java/appeng/block/storage/ChestRendering.java create mode 100644 src/main/resources/assets/appliedenergistics2/blockstates/chest.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/base.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_empty.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_full.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_offline.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_online.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_types_full.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/lights_off.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/lights_on.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/item/chest.json create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/bottom.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_backdrop.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_empty.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_full.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_offline.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_online.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_types_full.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/front.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/front_item.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_off.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_bright.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_dark.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_medium.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/side.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/top.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/chest/top_item.png diff --git a/src/main/java/appeng/block/storage/BlockChest.java b/src/main/java/appeng/block/storage/BlockChest.java index 62e1bd805..dac20eaf4 100644 --- a/src/main/java/appeng/block/storage/BlockChest.java +++ b/src/main/java/appeng/block/storage/BlockChest.java @@ -22,12 +22,16 @@ package appeng.block.storage; import javax.annotation.Nullable; import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import appeng.api.AEApi; @@ -43,10 +47,19 @@ import appeng.util.Platform; public class BlockChest extends AEBaseTileBlock { + private final static PropertyEnum SLOT_STATE = PropertyEnum.create( "slot_state", DriveSlotState.class ); + public BlockChest() { super( Material.IRON ); this.setTileEntity( TileChest.class ); + this.setDefaultState( getDefaultState().withProperty( SLOT_STATE, DriveSlotState.EMPTY ) ); + } + + @Override + protected IProperty[] getAEStates() + { + return new IProperty[] { SLOT_STATE }; } @Override @@ -55,6 +68,30 @@ public class BlockChest extends AEBaseTileBlock return BlockRenderLayer.CUTOUT; } + @Override + public IBlockState getActualState( IBlockState state, IBlockAccess worldIn, BlockPos pos ) + { + DriveSlotState slotState = DriveSlotState.EMPTY; + + TileChest te = getTileEntity( worldIn, pos ); + + if( te != null ) + { + if( te.getCellCount() >= 1 ) + { + slotState = DriveSlotState.fromCellStatus( te.getCellStatus( 0 ) ); + } + // Power-state has to be checked separately + if( !te.isPowered() && slotState != DriveSlotState.EMPTY ) + { + slotState = DriveSlotState.OFFLINE; + } + } + + return super.getActualState( state, worldIn, pos ) + .withProperty( SLOT_STATE, slotState ); + } + @Override public boolean onActivated( final World w, final BlockPos pos, final EntityPlayer p, final EnumHand hand, final @Nullable ItemStack heldItem, final EnumFacing side, final float hitX, final float hitY, final float hitZ ) { diff --git a/src/main/java/appeng/block/storage/ChestRendering.java b/src/main/java/appeng/block/storage/ChestRendering.java new file mode 100644 index 000000000..255847224 --- /dev/null +++ b/src/main/java/appeng/block/storage/ChestRendering.java @@ -0,0 +1,23 @@ +package appeng.block.storage; + + +import appeng.api.util.AEColor; +import appeng.bootstrap.BlockRenderingCustomizer; +import appeng.bootstrap.IBlockRendering; +import appeng.bootstrap.IItemRendering; +import appeng.client.render.ColorableTileBlockColor; +import appeng.client.render.StaticItemColor; + + +public class ChestRendering extends BlockRenderingCustomizer +{ + + @Override + public void customize( IBlockRendering rendering, IItemRendering itemRendering ) + { + // I checked, the ME chest doesn't keep its color in item form + itemRendering.color( new StaticItemColor( AEColor.Transparent ) ); + rendering.blockColor( new ColorableTileBlockColor() ); + } + +} diff --git a/src/main/java/appeng/block/storage/DriveSlotState.java b/src/main/java/appeng/block/storage/DriveSlotState.java index 9c01f92fd..3b8d2521e 100644 --- a/src/main/java/appeng/block/storage/DriveSlotState.java +++ b/src/main/java/appeng/block/storage/DriveSlotState.java @@ -19,25 +19,57 @@ package appeng.block.storage; +import net.minecraft.util.IStringSerializable; + + /** * Describes the different states a single slot of a BlockDrive can be in in terms of rendering. */ -public enum DriveSlotState +public enum DriveSlotState implements IStringSerializable { // No cell in slot - EMPTY, + EMPTY( "empty" ), // Cell in slot, but unpowered - OFFLINE, + OFFLINE( "offline" ), // Online and free space - ONLINE, + ONLINE( "online" ), // Types full, space left - TYPES_FULL, + TYPES_FULL( "types_full" ), // Completely full - FULL + FULL( "full" ); + + private final String name; + + DriveSlotState( String name ) + { + this.name = name; + } + + @Override + public String getName() + { + return name; + } + + public static DriveSlotState fromCellStatus( int cellStatus ) + { + switch( cellStatus ) + { + default: + case 0: + return DriveSlotState.EMPTY; + case 1: + return DriveSlotState.ONLINE; + case 2: + return DriveSlotState.TYPES_FULL; + case 3: + return DriveSlotState.FULL; + } + } } diff --git a/src/main/java/appeng/block/storage/DriveSlotsState.java b/src/main/java/appeng/block/storage/DriveSlotsState.java index d97305b66..0919d1289 100644 --- a/src/main/java/appeng/block/storage/DriveSlotsState.java +++ b/src/main/java/appeng/block/storage/DriveSlotsState.java @@ -70,22 +70,7 @@ public class DriveSlotsState } else { - switch( chestOrDrive.getCellStatus( i ) ) - { - default: - case 0: - slots[i] = DriveSlotState.EMPTY; - break; - case 1: - slots[i] = DriveSlotState.ONLINE; - break; - case 2: - slots[i] = DriveSlotState.TYPES_FULL; - break; - case 3: - slots[i] = DriveSlotState.FULL; - break; - } + slots[i] = DriveSlotState.fromCellStatus( chestOrDrive.getCellStatus( i ) ); } } return new DriveSlotsState( slots ); diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index de6699eca..be86cf654 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -75,6 +75,7 @@ import appeng.block.storage.BlockDrive; import appeng.block.storage.BlockIOPort; import appeng.block.storage.BlockSkyChest; import appeng.block.storage.BlockSkyChest.SkyChestType; +import appeng.block.storage.ChestRendering; import appeng.block.storage.DriveRendering; import appeng.block.storage.SkyChestRenderingCustomizer; import appeng.bootstrap.BlockRenderingCustomizer; @@ -288,7 +289,11 @@ public final class ApiBlocks implements IBlocks .useCustomItemModel() .rendering( new DriveRendering() ) .build(); - this.chest = registry.block( "chest", BlockChest::new ).features( AEFeature.StorageCells, AEFeature.MEChest ).build(); + this.chest = registry.block( "chest", BlockChest::new ) + .features( AEFeature.StorageCells, AEFeature.MEChest ) + .useCustomItemModel() + .rendering( new ChestRendering() ) + .build(); this.iface = registry.block( "interface", BlockInterface::new ).build(); this.cellWorkbench = registry.block( "cell_workbench", BlockCellWorkbench::new ).features( AEFeature.StorageCells ).build(); this.iOPort = registry.block( "ioport", BlockIOPort::new ).features( AEFeature.StorageCells, AEFeature.IOPort ).build(); diff --git a/src/main/resources/assets/appliedenergistics2/blockstates/chest.json b/src/main/resources/assets/appliedenergistics2/blockstates/chest.json new file mode 100644 index 000000000..aaf60d704 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/blockstates/chest.json @@ -0,0 +1,60 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "appliedenergistics2:chest/base" + }, + "variants": { + "slot_state": { + "empty": { + "submodel": { + "lights": { + "model": "appliedenergistics2:chest/lights_off" + }, + "state": { + "model": "appliedenergistics2:chest/cell_state_empty" + } + } + }, + "offline": { + "submodel": { + "lights": { + "model": "appliedenergistics2:chest/lights_off" + }, + "state": { + "model": "appliedenergistics2:chest/cell_state_offline" + } + } + }, + "online": { + "submodel": { + "lights": { + "model": "appliedenergistics2:chest/lights_on" + }, + "state": { + "model": "appliedenergistics2:chest/cell_state_online" + } + } + }, + "types_full": { + "submodel": { + "lights": { + "model": "appliedenergistics2:chest/lights_on" + }, + "state": { + "model": "appliedenergistics2:chest/cell_state_types_full" + } + } + }, + "full": { + "submodel": { + "lights": { + "model": "appliedenergistics2:chest/lights_on" + }, + "state": { + "model": "appliedenergistics2:chest/cell_state_full" + } + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/base.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/base.json new file mode 100644 index 000000000..2caad1c2f --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/base.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "appliedenergistics2:blocks/chest/side", + "up": "appliedenergistics2:blocks/chest/top", + "down": "appliedenergistics2:blocks/chest/bottom", + "north": "appliedenergistics2:blocks/chest/front", + "east": "appliedenergistics2:blocks/chest/side", + "south": "appliedenergistics2:blocks/chest/side", + "west": "appliedenergistics2:blocks/chest/side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_empty.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_empty.json new file mode 100644 index 000000000..8e44b7dc6 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_empty.json @@ -0,0 +1,14 @@ +{ + "textures": { + "state": "appliedenergistics2:blocks/chest/cell_state_empty" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#state"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_full.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_full.json new file mode 100644 index 000000000..5f2d8a05e --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_full.json @@ -0,0 +1,23 @@ +{ + "uvlMarker": true, + "textures": { + "backdrop": "appliedenergistics2:blocks/chest/cell_state_backdrop", + "state": "appliedenergistics2:blocks/chest/cell_state_full" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#backdrop" } + } + }, + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#state", "uvlightmap": { "block": 0.007, "sky": 0.007 }} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_offline.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_offline.json new file mode 100644 index 000000000..7a697043e --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_offline.json @@ -0,0 +1,14 @@ +{ + "textures": { + "state": "appliedenergistics2:blocks/chest/cell_state_offline" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#state"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_online.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_online.json new file mode 100644 index 000000000..23f57823b --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_online.json @@ -0,0 +1,23 @@ +{ + "uvlMarker": true, + "textures": { + "backdrop": "appliedenergistics2:blocks/chest/cell_state_backdrop", + "state": "appliedenergistics2:blocks/chest/cell_state_online" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#backdrop" } + } + }, + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#state", "uvlightmap": { "block": 0.007, "sky": 0.007 }} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_types_full.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_types_full.json new file mode 100644 index 000000000..f438c274c --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_types_full.json @@ -0,0 +1,23 @@ +{ + "uvlMarker": true, + "textures": { + "backdrop": "appliedenergistics2:blocks/chest/cell_state_backdrop", + "state": "appliedenergistics2:blocks/chest/cell_state_types_full" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#backdrop" } + } + }, + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"texture": "#state", "uvlightmap": { "block": 0.007, "sky": 0.007 }} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/lights_off.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/lights_off.json new file mode 100644 index 000000000..ed2c7dd52 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/lights_off.json @@ -0,0 +1,14 @@ +{ + "textures": { + "lights": "appliedenergistics2:blocks/chest/lights_off" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": { "texture": "#lights", "tintindex": 0 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/lights_on.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/lights_on.json new file mode 100644 index 000000000..8f88855a3 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/lights_on.json @@ -0,0 +1,31 @@ +{ + "uvlMarker": true, + "textures": { + "lights_bright": "appliedenergistics2:blocks/chest/lights_on_bright", + "lights_medium": "appliedenergistics2:blocks/chest/lights_on_medium", + "lights_dark": "appliedenergistics2:blocks/chest/lights_on_dark" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"texture": "#lights_bright", "tintindex": 0, "uvlightmap": { "block": 0.007, "sky": 0.007 }} + } + }, + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"texture": "#lights_medium", "tintindex": 1, "uvlightmap": { "block": 0.007, "sky": 0.007 }} + } + }, + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"texture": "#lights_dark", "tintindex": 2, "uvlightmap": { "block": 0.007, "sky": 0.007 }} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/item/chest.json b/src/main/resources/assets/appliedenergistics2/models/item/chest.json new file mode 100644 index 000000000..f7828b1e0 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/chest.json @@ -0,0 +1,11 @@ +{ + "parent": "block/cube", + "textures": { + "up": "appliedenergistics2:blocks/chest/top_item", + "down": "appliedenergistics2:blocks/chest/bottom", + "north": "appliedenergistics2:blocks/chest/front_item", + "east": "appliedenergistics2:blocks/chest/side", + "south": "appliedenergistics2:blocks/chest/side", + "west": "appliedenergistics2:blocks/chest/side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/bottom.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..6a87e174a2e43b44724edcf21803e1d38696666f GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdp969eo`c7&i8E|4C$JU|>*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8-0(?STwbkT} z^;FFb)iqRP8yXr+_0@EBb?)&BqgKU1{tB?AKkW0JSK3%C6BBL^55 z7&r?&B8wRq_?Ce%WBZ+z`3wvU_MR?|Asp9}6GTFSf3kK2Q(VY zk#JGqac}Y9oF%2AIcJxQVTt8IozkR?`BIWg;^ag*7@VeR$yTK@d}Ux@P%UwdC`m~y zNwrEYN=+QHnuXf&^0i%GBCL2dU8LChTQy=%(P0l1_P52 zBV#KAV=Ds_T>~>K1B0(uxz{r=Fi3%H2+mI{DNig)We7;j%q!9Ja}7}_GuAWJGc+*x TQnZkPfq}u()z4*}Q$iB}WkG9Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_backdrop.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_backdrop.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f5021bb38870ce1d036e155469356896a8b350 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFc^EfIEGZ*O8WEvzdf^RLuaFtLDqo{1`VvUADo)1 wy>Z#P4<8ELepNEg&b`6#I3q5Bfy02o)tFoH{$szopr0Qej*jQ{`u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_empty.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3a27a73ce5204f9a63dc9e5f006f35aaec4587 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFz9)@IEGZ*O8WEvzdf^RLuaFtLDqo{1`VvU6_k~g ruU%pFDd}lG&)u`QvXN2Y0K?;}T+&8ML{u0U7#KWV{an^LB{Ts5j0P)c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_full.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_full.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4564d9e0447455ba9f54f2b8c8b442c89a3360 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlczXIEGZ*O8WEvzdf^RLuaFtLDqp4j3#Cc6F=Ig kvizopr0Dy`py#N3J literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_offline.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..49a22b6591a75734c32e1883422bc01b5d0c786d GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFqnF}IEGZ*O8WEvzdf^RLuaFtLDqo{1`VvUADo)1 yy>Z#P4<8ELepMa?WN`21R^IwvA&!B8fx*+&&t;ucLK6TdFE3pH literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_online.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_online.png new file mode 100644 index 0000000000000000000000000000000000000000..f57be58e16c3d1072629e71c6ee90b3a73ecd0d3 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlc$YIEGZ*O8WEvzdf^RLuaFtLDqp4j9W|_CN_Sw mcV+vN{^Pub6O*9A0fs~lHdzj<=m`uA3=E#GelF{r5}E+x>M4By literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_types_full.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/cell_state_types_full.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9492315c08347ab2cc40a3b22a34795b25f794 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFsOODIEGZ*O8WEvzdf^RLuaFtLDqp4j3#CYrpket ia|%uL4H#G?7{aEqAGwh~Ly>`jfx*+&&t;ucLK6V+Jtlzw literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/front.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/front.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4e034e91ce4da6ec71acac5fd054d4bae3aab0 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7&r?&B8wRq z_?Ce%WBZ+z`3wvUQYEetCBgY=CFO}lsSE*$nRz98ey$-3WyX4@dWMGXpPkGZ7#NOw zx;Tbd_%EI0%hzNe(7KaVT3eAz%Cu?L4nbeuLyJ7$Uzy#1PQ;7VWQ)m9rq72TZ@s*r zZqCEX(>xN&SO0zy?Ju-cb71n))ZdoPc5w9x_wL{us`8DNeBUxz7~cthFFG5XzQ}cj ztcT`a1@_R1jRJ?bi`kNoYF-fe#q|Fib9UMK!hmT@8}*L&x60qxtI`m>Ve*gV%j!4$ zVoKvKyA;W={D7r-!sN7@7mo2HiSbpPY@A!t`0ij%{(JaZG%Q-e|yQz{EjrrIztFg*2iaSW-rHD%I%u0sX_$MmQF;Ntps(2=F^3uDQp zyX+;w1w|iq=Nt*V-qgX-v@OcCe4g&KU+mKL&c(T(mVU48e6=+?JX=v|`Bs~mKix#G z=fC;JuI#-0HoN(;!;C_L7R_7%1>zd5ZahBf%DPePeFtxL>`dDF@CUnngoIl5e9hED zJ}UxtS1YhhuDf5c+TVEEj(~OQnzk&75^9$>|NP{8VNLiY?hmt!Cd{0=r6qp-0sgok zt6%Dw4(HVSRQ^?1#ZO}8=YKin)6%GCp2~kZKVFM&So=cb6-(pdrpdmKZ%w+S@wT;` bk&WR)T$Jt1MNGB~3=9mOu6{1-oD!M~dIr`nzGgBo zFobxzIEGmGFFkF@b-+R3@PXg|mz(bpRLfcD&6CAboc1jIb>-!%dtdC{81zn-T~@g1 zu!&#UjAJMHE?eA8lv20$d7RRoIR_&7arw2+%f5a&TgfotXTqs>me%JP7#J8lUHx3v IIVCg!06~{a^Z)<= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_bright.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_bright.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc5a1597b56c5337235718db30550e8c0615123 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=r%`o-5w1_p)zdusJ;Gl4>dYkF?*9;5{44$rjF6*2UngBJLQz8HW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_dark.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/lights_on_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab98bae0ebea697ddce8c905795a216ac1352fc GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI|#yzJ0@noWnf?sD{+k|3C>R|DNig)Whh9@%q!8$OD$0_(KE1q@imiy zfg!`w#WBRfe`)tY&I1NK%$xtG+&i_^-i?brSL$%1YKgY-`U9U>bo@662(G`fE`Ls? zlu%jLb@OvJyqwlsUrVRYYh!VeR|DNig)Whh9@%q!8$OD$0_(KE1q@imiy zfg#@0#WBRfe{HWf7lR>(bM=2?Z9YA&z&}^~#QBp9P6|zoZ+X^oVNL>HnpkT`(AtD! zGLammksIW#43hhDu4bRvqkEyfZ_@$&R4LwNH@d8|ishoXsk%QMSOcEv^7 WJiJ|x-Z3yRFnGH9xvXu)l!;o0CR)O>KG zgDCTyxpPk*N?>-_*x)-!!beuTA?e`3gN-^o{j52YjwBRVEx5rj!Pp^!-RE?pVH5Af p<^;;KY-`hG5DYXQ!9NY9G?{1B~9ruo!o67 Z@H?>b-J2!%7#J8BJYD@<);T3K0RU|QbLs#9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/top_item.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/chest/top_item.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c66998f891d37a4fc071dad3fd0e1e12f06459 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFzoPjaSW-rm2@R+^797?$qdY5X=-dLAD+LrH<{Q! zfB(i01;rJ=+>Hd-&DKYs`t<&OJx6!{bngC3{`2?$WOFq(HrildXvp-_;p)P7sTC$` z?%iZnk(@bWMgw1}f)sZiyW$;mVi8{1msn+SkM;S|Q#