diff --git a/src/main/java/storagecraft/StorageCraftBlocks.java b/src/main/java/storagecraft/StorageCraftBlocks.java index 1f4c7a731..0a56c765d 100644 --- a/src/main/java/storagecraft/StorageCraftBlocks.java +++ b/src/main/java/storagecraft/StorageCraftBlocks.java @@ -17,4 +17,5 @@ public final class StorageCraftBlocks public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); public static final BlockDestructor DESTRUCTOR = new BlockDestructor(); public static final BlockConstructor CONSTRUCTOR = new BlockConstructor(); + public static final BlockStorage STORAGE = new BlockStorage(); } diff --git a/src/main/java/storagecraft/block/BlockGrid.java b/src/main/java/storagecraft/block/BlockGrid.java index 0d8e9a777..11401aaa3 100644 --- a/src/main/java/storagecraft/block/BlockGrid.java +++ b/src/main/java/storagecraft/block/BlockGrid.java @@ -1,5 +1,6 @@ package storagecraft.block; +import java.util.List; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockState; @@ -16,8 +17,6 @@ import storagecraft.StorageCraft; import storagecraft.StorageCraftGUI; import storagecraft.tile.TileGrid; -import java.util.List; - public class BlockGrid extends BlockMachine { public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumGridType.class); @@ -46,11 +45,11 @@ public class BlockGrid extends BlockMachine protected BlockState createBlockState() { return new BlockState(this, new IProperty[] - { - DIRECTION, - CONNECTED, - TYPE - }); + { + DIRECTION, + CONNECTED, + TYPE + }); } @Override diff --git a/src/main/java/storagecraft/block/BlockStorage.java b/src/main/java/storagecraft/block/BlockStorage.java new file mode 100644 index 000000000..74e0b90eb --- /dev/null +++ b/src/main/java/storagecraft/block/BlockStorage.java @@ -0,0 +1,52 @@ +package storagecraft.block; + +import java.util.List; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import static storagecraft.block.BlockBase.DIRECTION; + +public class BlockStorage extends BlockBase +{ + public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumStorageType.class); + + public BlockStorage() + { + super("storage"); + } + + @Override + public void getSubBlocks(Item item, CreativeTabs tab, List subItems) + { + for (int i = 0; i <= 4; i++) + { + subItems.add(new ItemStack(item, 1, i)); + } + } + + @Override + protected BlockState createBlockState() + { + return new BlockState(this, new IProperty[] + { + DIRECTION, + TYPE + }); + } + + @Override + public IBlockState getStateFromMeta(int meta) + { + return getDefaultState().withProperty(TYPE, EnumStorageType.getById(meta)); + } + + @Override + public int getMetaFromState(IBlockState state) + { + return ((EnumStorageType) state.getValue(TYPE)).getId(); + } +} diff --git a/src/main/java/storagecraft/block/EnumStorageType.java b/src/main/java/storagecraft/block/EnumStorageType.java new file mode 100644 index 000000000..07c83ba22 --- /dev/null +++ b/src/main/java/storagecraft/block/EnumStorageType.java @@ -0,0 +1,58 @@ +package storagecraft.block; + +import net.minecraft.util.IStringSerializable; + +public enum EnumStorageType implements IStringSerializable +{ + TYPE_1K(0, 1000, "1k"), + TYPE_4K(1, 4000, "4k"), + TYPE_16K(2, 16000, "16k"), + TYPE_64K(3, 64000, "64k"), + TYPE_CREATIVE(4, -1, "creative"); + + private int id; + private int capacity; + private String name; + + EnumStorageType(int id, int capacity, String name) + { + this.id = id; + this.capacity = capacity; + this.name = name; + } + + @Override + public String getName() + { + return name; + } + + public int getId() + { + return id; + } + + public int getCapacity() + { + return capacity; + } + + @Override + public String toString() + { + return name; + } + + public static EnumStorageType getById(int id) + { + for (EnumStorageType type : EnumStorageType.values()) + { + if (type.getId() == id) + { + return type; + } + } + + return null; + } +} diff --git a/src/main/java/storagecraft/item/ItemBlockStorage.java b/src/main/java/storagecraft/item/ItemBlockStorage.java new file mode 100644 index 000000000..e33592dac --- /dev/null +++ b/src/main/java/storagecraft/item/ItemBlockStorage.java @@ -0,0 +1,11 @@ +package storagecraft.item; + +import net.minecraft.block.Block; + +public class ItemBlockStorage extends ItemBlockBase +{ + public ItemBlockStorage(Block block) + { + super(block); + } +} diff --git a/src/main/java/storagecraft/proxy/ClientProxy.java b/src/main/java/storagecraft/proxy/ClientProxy.java index 40ec9b8b4..86d8c46de 100644 --- a/src/main/java/storagecraft/proxy/ClientProxy.java +++ b/src/main/java/storagecraft/proxy/ClientProxy.java @@ -17,6 +17,7 @@ import storagecraft.StorageCraftBlocks; import storagecraft.StorageCraftItems; import storagecraft.block.EnumControllerType; import storagecraft.block.EnumGridType; +import storagecraft.block.EnumStorageType; import storagecraft.item.*; import storagecraft.render.BlockCableRenderer; import storagecraft.tile.TileCable; @@ -129,5 +130,10 @@ public class ClientProxy extends CommonProxy mesher.register(Item.getItemFromBlock(StorageCraftBlocks.SOLDERER), 0, new ModelResourceLocation("storagecraft:solderer", "inventory")); mesher.register(Item.getItemFromBlock(StorageCraftBlocks.WIRELESS_TRANSMITTER), 0, new ModelResourceLocation("storagecraft:wireless_transmitter", "inventory")); mesher.register(Item.getItemFromBlock(StorageCraftBlocks.DETECTOR), 0, new ModelResourceLocation("storagecraft:detector", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.STORAGE), EnumStorageType.TYPE_1K.getId(), new ModelResourceLocation("storagecraft:storage", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.STORAGE), EnumStorageType.TYPE_4K.getId(), new ModelResourceLocation("storagecraft:storage", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.STORAGE), EnumStorageType.TYPE_16K.getId(), new ModelResourceLocation("storagecraft:storage", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.STORAGE), EnumStorageType.TYPE_64K.getId(), new ModelResourceLocation("storagecraft:storage", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.STORAGE), EnumStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("storagecraft:storage", "inventory")); } } diff --git a/src/main/java/storagecraft/proxy/CommonProxy.java b/src/main/java/storagecraft/proxy/CommonProxy.java index f3a9ef959..03a5d8171 100644 --- a/src/main/java/storagecraft/proxy/CommonProxy.java +++ b/src/main/java/storagecraft/proxy/CommonProxy.java @@ -63,6 +63,7 @@ public class CommonProxy GameRegistry.registerBlock(StorageCraftBlocks.WIRELESS_TRANSMITTER, "wireless_transmitter"); GameRegistry.registerBlock(StorageCraftBlocks.DESTRUCTOR, "destructor"); GameRegistry.registerBlock(StorageCraftBlocks.CONSTRUCTOR, "constructor"); + GameRegistry.registerBlock(StorageCraftBlocks.STORAGE, ItemBlockStorage.class, "storage"); GameRegistry.registerItem(StorageCraftItems.STORAGE_CELL, "storage_cell"); GameRegistry.registerItem(StorageCraftItems.WIRELESS_GRID, "wireless_grid"); diff --git a/src/main/resources/assets/storagecraft/blockstates/drive.json b/src/main/resources/assets/storagecraft/blockstates/drive.json index 942f32d62..259b000b7 100644 --- a/src/main/resources/assets/storagecraft/blockstates/drive.json +++ b/src/main/resources/assets/storagecraft/blockstates/drive.json @@ -1,45 +1,45 @@ { - "forge_marker": 1, - "defaults": { - "model": "orientable", - "textures": { - "side": "storagecraft:blocks/side", - "top": "storagecraft:blocks/side", - "front": "storagecraft:blocks/drive" - } - }, - "variants": { - "inventory": [ - { - "transform": "forge:default-block", - "y": 0 - } - ], - "connected": { - "true": { - }, - "false": { - } - }, - "direction": { - "north": { - "y": 0 - }, - "east": { - "y": 90 - }, - "south": { - "y": 180 - }, - "west": { - "y": 270 - }, - "up": { - "x": 270 - }, - "down": { - "x": 90 - } - } - } + "forge_marker": 1, + "defaults": { + "model": "orientable", + "textures": { + "side": "storagecraft:blocks/side", + "top": "storagecraft:blocks/side", + "front": "storagecraft:blocks/drive" + } + }, + "variants": { + "inventory": [ + { + "transform": "forge:default-block", + "y": 0 + } + ], + "connected": { + "true": { + }, + "false": { + } + }, + "direction": { + "north": { + "y": 0 + }, + "east": { + "y": 90 + }, + "south": { + "y": 180 + }, + "west": { + "y": 270 + }, + "up": { + "x": 270 + }, + "down": { + "x": 90 + } + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/storagecraft/blockstates/storage.json b/src/main/resources/assets/storagecraft/blockstates/storage.json new file mode 100644 index 000000000..f66d2f8d3 --- /dev/null +++ b/src/main/resources/assets/storagecraft/blockstates/storage.json @@ -0,0 +1,81 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "cube_all" + }, + "variants": { + "inventory": [ + { + "textures": { + "all": "storagecraft:blocks/1k_storage_block" + }, + "transform": "forge:default-block" + }, + { + "textures": { + "all": "storagecraft:blocks/4k_storage_block" + }, + "transform": "forge:default-block" + }, + { + "textures": { + "all": "storagecraft:blocks/16k_storage_block" + }, + "transform": "forge:default-block" + }, + { + "textures": { + "all": "storagecraft:blocks/64k_storage_block" + }, + "transform": "forge:default-block" + }, + { + "textures": { + "all": "storagecraft:blocks/creative_storage_block" + }, + "transform": "forge:default-block" + } + ], + "type": { + "1k": { + "textures": { + "all": "storagecraft:blocks/1k_storage_block" + } + }, + "4k": { + "textures": { + "all": "storagecraft:blocks/4k_storage_block" + } + }, + "16k": { + "textures": { + "all": "storagecraft:blocks/16k_storage_block" + } + }, + "64k": { + "textures": { + "all": "storagecraft:blocks/64k_storage_block" + } + }, + "creative": { + "textures": { + "all": "storagecraft:blocks/creative_storage_block" + } + } + }, + "direction": { + "north": { + }, + "east": { + }, + "south": { + }, + "west": { + }, + "up": { + }, + "down": { + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/storagecraft/lang/en_US.lang b/src/main/resources/assets/storagecraft/lang/en_US.lang index f433a01c7..43a8ac98e 100644 --- a/src/main/resources/assets/storagecraft/lang/en_US.lang +++ b/src/main/resources/assets/storagecraft/lang/en_US.lang @@ -72,6 +72,11 @@ block.storagecraft:solderer.name=Solderer block.storagecraft:wireless_transmitter.name=Wireless Transmitter block.storagecraft:destructor.name=Destructor block.storagecraft:constructor.name=Constructor +block.storagecraft:storage.0.name=1k Storage Block +block.storagecraft:storage.1.name=4k Storage Block +block.storagecraft:storage.2.name=16k Storage Block +block.storagecraft:storage.3.name=64k Storage Block +block.storagecraft:storage.4.name=Creative Storage Block item.storagecraft:storage_cell.0.name=1k Storage Cell item.storagecraft:storage_cell.1.name=4k Storage Cell diff --git a/src/main/resources/assets/storagecraft/textures/blocks/16k_storage_block.png b/src/main/resources/assets/storagecraft/textures/blocks/16k_storage_block.png new file mode 100644 index 000000000..fca25aff3 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/16k_storage_block.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/1k_storage_block.png b/src/main/resources/assets/storagecraft/textures/blocks/1k_storage_block.png new file mode 100644 index 000000000..22025bac1 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/1k_storage_block.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/4k_storage_block.png b/src/main/resources/assets/storagecraft/textures/blocks/4k_storage_block.png new file mode 100644 index 000000000..7c1021724 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/4k_storage_block.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/64k_storage_block.png b/src/main/resources/assets/storagecraft/textures/blocks/64k_storage_block.png new file mode 100644 index 000000000..a45ac4de2 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/64k_storage_block.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/creative_storage_block.png b/src/main/resources/assets/storagecraft/textures/blocks/creative_storage_block.png new file mode 100644 index 000000000..ab59534d0 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/creative_storage_block.png differ