diff --git a/src/main/java/appeng/api/definitions/IBlocks.java b/src/main/java/appeng/api/definitions/IBlocks.java index 923ac806d3e..6ba8e662d32 100644 --- a/src/main/java/appeng/api/definitions/IBlocks.java +++ b/src/main/java/appeng/api/definitions/IBlocks.java @@ -173,6 +173,14 @@ public interface IBlocks { ITileDefinition craftingStorage64k(); + ITileDefinition craftingStorage256k(); + + ITileDefinition craftingStorage1024k(); + + ITileDefinition craftingStorage4096k(); + + ITileDefinition craftingStorage16384k(); + ITileDefinition craftingMonitor(); ITileDefinition molecularAssembler(); diff --git a/src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java b/src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java new file mode 100644 index 00000000000..2710e25edc4 --- /dev/null +++ b/src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java @@ -0,0 +1,54 @@ +package appeng.block.crafting; + +import appeng.client.texture.ExtraBlockTextures; +import appeng.tile.crafting.TileCraftingStorageTile; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class BlockAdvancedCraftingStorage extends BlockCraftingStorage { + + public BlockAdvancedCraftingStorage() { + this.setTileEntity(TileCraftingStorageTile.class); + } + + @Override + public IIcon getIcon(final int direction, final int metadata) { + switch (metadata & (~4)) { + default: + return super.getIcon(0, -1); + case 0: + return ExtraBlockTextures.BlockCraftingStorage256k.getIcon(); + case 1: + return ExtraBlockTextures.BlockCraftingStorage1024k.getIcon(); + case 2: + return ExtraBlockTextures.BlockCraftingStorage4096k.getIcon(); + case 3: + return ExtraBlockTextures.BlockCraftingStorage16384k.getIcon(); + + case FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage256kFit.getIcon(); + case 1 | FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage1024kFit.getIcon(); + case 2 | FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage4096kFit.getIcon(); + case 3 | FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage16384kFit.getIcon(); + } + } + + @Override + public String getUnlocalizedName(final ItemStack is) { + switch (is.getItemDamage()) { + case 0: + return "tile.appliedenergistics2.BlockCraftingStorage256k"; + case 1: + return "tile.appliedenergistics2.BlockCraftingStorage1024k"; + case 2: + return "tile.appliedenergistics2.BlockCraftingStorage4096k"; + case 3: + return "tile.appliedenergistics2.BlockCraftingStorage16384k"; + default: + return this.getItemUnlocalizedName(is); + } + } +} diff --git a/src/main/java/appeng/block/crafting/BlockCraftingStorage.java b/src/main/java/appeng/block/crafting/BlockCraftingStorage.java index 49745b24c4a..c0ea3edbc4a 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingStorage.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingStorage.java @@ -74,18 +74,15 @@ public void getCheckedSubBlocks(final Item item, final CreativeTabs tabs, final @Override public String getUnlocalizedName(final ItemStack is) { - if (is.getItemDamage() == 1) { - return "tile.appliedenergistics2.BlockCraftingStorage4k"; - } - - if (is.getItemDamage() == 2) { - return "tile.appliedenergistics2.BlockCraftingStorage16k"; - } - - if (is.getItemDamage() == 3) { - return "tile.appliedenergistics2.BlockCraftingStorage64k"; + switch (is.getItemDamage()) { + case 1: + return "tile.appliedenergistics2.BlockCraftingStorage4k"; + case 2: + return "tile.appliedenergistics2.BlockCraftingStorage16k"; + case 3: + return "tile.appliedenergistics2.BlockCraftingStorage64k"; + default: + return this.getItemUnlocalizedName(is); } - - return this.getItemUnlocalizedName(is); } } diff --git a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java index c979d7532b9..c808dce807b 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java @@ -53,7 +53,7 @@ public BlockCraftingUnit() { @Override @SideOnly(Side.CLIENT) protected RenderBlockCraftingCPU getRenderer() { - return new RenderBlockCraftingCPU(); + return new RenderBlockCraftingCPU<>(); } @Override @@ -138,7 +138,6 @@ public String getUnlocalizedName(final ItemStack is) { } else if (is.getItemDamage() == 3) { return "tile.appliedenergistics2.BlockCraftingAccelerator16x"; } - return this.getItemUnlocalizedName(is); } diff --git a/src/main/java/appeng/client/texture/ExtraBlockTextures.java b/src/main/java/appeng/client/texture/ExtraBlockTextures.java index 2b1186bc7a7..6ee0ec9d1f6 100644 --- a/src/main/java/appeng/client/texture/ExtraBlockTextures.java +++ b/src/main/java/appeng/client/texture/ExtraBlockTextures.java @@ -116,6 +116,10 @@ public enum ExtraBlockTextures { BlockCraftingStorage4k("BlockCraftingStorage4k"), BlockCraftingStorage16k("BlockCraftingStorage16k"), BlockCraftingStorage64k("BlockCraftingStorage64k"), + BlockCraftingStorage256k("BlockCraftingStorage256k"), + BlockCraftingStorage1024k("BlockCraftingStorage1024k"), + BlockCraftingStorage4096k("BlockCraftingStorage4096k"), + BlockCraftingStorage16384k("BlockCraftingStorage16384k"), BlockCraftingAcceleratorFit("BlockCraftingAcceleratorFit"), BlockCraftingAccelerator4xFit("BlockCraftingAccelerator4xFit"), @@ -129,6 +133,10 @@ public enum ExtraBlockTextures { BlockCraftingStorage4kFit("BlockCraftingStorage4kFit"), BlockCraftingStorage16kFit("BlockCraftingStorage16kFit"), BlockCraftingStorage64kFit("BlockCraftingStorage64kFit"), + BlockCraftingStorage256kFit("BlockCraftingStorage256kFit"), + BlockCraftingStorage1024kFit("BlockCraftingStorage1024kFit"), + BlockCraftingStorage4096kFit("BlockCraftingStorage4096kFit"), + BlockCraftingStorage16384kFit("BlockCraftingStorage16384kFit"), BlockCraftingUnitRing("BlockCraftingUnitRing"), BlockCraftingUnitRingLongRotated("BlockCraftingUnitRingLongRotated"), diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index c48dd8efc1c..ec10c3db5b5 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -23,10 +23,7 @@ import appeng.api.definitions.ITileDefinition; import appeng.api.util.IOrientableBlock; import appeng.block.AEBaseSlabBlock; -import appeng.block.crafting.BlockCraftingMonitor; -import appeng.block.crafting.BlockCraftingStorage; -import appeng.block.crafting.BlockCraftingUnit; -import appeng.block.crafting.BlockMolecularAssembler; +import appeng.block.crafting.*; import appeng.block.grindstone.BlockCrank; import appeng.block.grindstone.BlockGrinder; import appeng.block.misc.*; @@ -102,6 +99,10 @@ public final class ApiBlocks implements IBlocks { private final ITileDefinition craftingStorage4k; private final ITileDefinition craftingStorage16k; private final ITileDefinition craftingStorage64k; + private final ITileDefinition craftingStorage256k; + private final ITileDefinition craftingStorage1024k; + private final ITileDefinition craftingStorage4096k; + private final ITileDefinition craftingStorage16384k; private final ITileDefinition craftingMonitor; private final ITileDefinition molecularAssembler; private final ITileDefinition lightDetector; @@ -188,6 +189,10 @@ public ApiBlocks(final DefinitionConstructor constructor) { this.craftingStorage4k = new WrappedDamageItemDefinition(this.craftingStorage1k, 1); this.craftingStorage16k = new WrappedDamageItemDefinition(this.craftingStorage1k, 2); this.craftingStorage64k = new WrappedDamageItemDefinition(this.craftingStorage1k, 3); + this.craftingStorage256k = constructor.registerTileDefinition(new BlockAdvancedCraftingStorage()); + this.craftingStorage1024k = new WrappedDamageItemDefinition(this.craftingStorage256k, 1); + this.craftingStorage4096k = new WrappedDamageItemDefinition(this.craftingStorage256k, 2); + this.craftingStorage16384k = new WrappedDamageItemDefinition(this.craftingStorage256k, 3); this.craftingMonitor = constructor.registerTileDefinition(new BlockCraftingMonitor()); this.molecularAssembler = constructor.registerTileDefinition(new BlockMolecularAssembler()); this.lightDetector = constructor.registerTileDefinition(lightDetector); @@ -540,6 +545,26 @@ public ITileDefinition craftingStorage64k() { return this.craftingStorage64k; } + @Override + public ITileDefinition craftingStorage256k() { + return this.craftingStorage256k; + } + + @Override + public ITileDefinition craftingStorage1024k() { + return this.craftingStorage1024k; + } + + @Override + public ITileDefinition craftingStorage4096k() { + return this.craftingStorage4096k; + } + + @Override + public ITileDefinition craftingStorage16384k() { + return this.craftingStorage16384k; + } + @Override public ITileDefinition craftingMonitor() { return this.craftingMonitor; diff --git a/src/main/java/appeng/recipes/game/DisassembleRecipe.java b/src/main/java/appeng/recipes/game/DisassembleRecipe.java index c5c98cb6ae8..778a4a26adc 100644 --- a/src/main/java/appeng/recipes/game/DisassembleRecipe.java +++ b/src/main/java/appeng/recipes/game/DisassembleRecipe.java @@ -48,7 +48,7 @@ public DisassembleRecipe() { final IMaterials mats = definitions.materials(); this.cellMappings = new HashMap<>(8); - this.nonCellMappings = new HashMap<>(5); + this.nonCellMappings = new HashMap<>(9); this.cellMappings.put(items.cell1k(), mats.cell1kPart()); this.cellMappings.put(items.cell4k(), mats.cell4kPart()); @@ -64,6 +64,10 @@ public DisassembleRecipe() { this.nonCellMappings.put(blocks.craftingStorage4k(), mats.cell4kPart()); this.nonCellMappings.put(blocks.craftingStorage16k(), mats.cell16kPart()); this.nonCellMappings.put(blocks.craftingStorage64k(), mats.cell64kPart()); + this.nonCellMappings.put(blocks.craftingStorage256k(), mats.cell256kPart()); + this.nonCellMappings.put(blocks.craftingStorage1024k(), mats.cell1024kPart()); + this.nonCellMappings.put(blocks.craftingStorage4096k(), mats.cell4096kPart()); + this.nonCellMappings.put(blocks.craftingStorage16384k(), mats.cell16384kPart()); } @Override diff --git a/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java b/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java index eecebdf4001..8d4f2d445eb 100644 --- a/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java +++ b/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java @@ -20,6 +20,8 @@ import appeng.api.AEApi; import appeng.api.definitions.IBlocks; +import appeng.block.crafting.BlockAdvancedCraftingStorage; +import net.minecraft.block.Block; import net.minecraft.item.ItemStack; public class TileCraftingStorageTile extends TileCraftingTile { @@ -49,6 +51,30 @@ protected ItemStack getItemFromTile(final Object obj) { return stack; } break; + case 256: + for (final ItemStack stack : + blocks.craftingStorage256k().maybeStack(1).asSet()) { + return stack; + } + break; + case 1024: + for (final ItemStack stack : + blocks.craftingStorage1024k().maybeStack(1).asSet()) { + return stack; + } + break; + case 4096: + for (final ItemStack stack : + blocks.craftingStorage4096k().maybeStack(1).asSet()) { + return stack; + } + break; + case 16384: + for (final ItemStack stack : + blocks.craftingStorage16384k().maybeStack(1).asSet()) { + return stack; + } + break; } return super.getItemFromTile(obj); @@ -69,17 +95,19 @@ public int getStorageBytes() { if (this.worldObj == null || this.notLoaded()) { return 0; } + Block block = this.worldObj.getBlock(this.xCoord, this.yCoord, this.zCoord); + int blockMultiplier = block instanceof BlockAdvancedCraftingStorage ? 256 : 1; switch (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord) & 3) { default: case 0: - return 1024; + return KILO_SCALAR * blockMultiplier; case 1: - return 4 * 1024; + return 4 * KILO_SCALAR * blockMultiplier; case 2: - return 16 * 1024; + return 16 * KILO_SCALAR * blockMultiplier; case 3: - return 64 * 1024; + return 64 * KILO_SCALAR * blockMultiplier; } } } diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang index 2c7ee52ee45..8c926ae7f69 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang @@ -47,6 +47,10 @@ tile.appliedenergistics2.BlockCraftingStorage.name=1k Crafting Storage tile.appliedenergistics2.BlockCraftingStorage4k.name=4k Crafting Storage tile.appliedenergistics2.BlockCraftingStorage16k.name=16k Crafting Storage tile.appliedenergistics2.BlockCraftingStorage64k.name=64k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage256k.name=256k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage1024k.name=1024k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage4096k.name=4096k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage16384k.name=16384k Crafting Storage tile.appliedenergistics2.BlockCraftingAccelerator.name=Crafting Co-Processing Unit tile.appliedenergistics2.BlockCraftingAccelerator4x.name=Quad Core Co-Processing Unit tile.appliedenergistics2.BlockCraftingAccelerator16x.name=16 Core Co-Processing Unit diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe b/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe index d41da13dd33..3755472205e 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe @@ -49,3 +49,23 @@ shapeless= ae2:BlockCraftingUnit:0 ae2:ItemMaterial.Cell64kPart -> ae2:BlockCraftingStorage:3 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell256kPart + -> ae2:BlockAdvancedCraftingStorage:0 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell1024kPart + -> ae2:BlockAdvancedCraftingStorage:1 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell4096kPart + -> ae2:BlockAdvancedCraftingStorage:2 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell16384kPart + -> ae2:BlockAdvancedCraftingStorage:3 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024k.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024k.png new file mode 100644 index 00000000000..07acb093ac9 Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024k.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024kFit.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024kFit.png new file mode 100644 index 00000000000..9e4c67aa0b1 Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024kFit.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384k.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384k.png new file mode 100644 index 00000000000..fb8f78d2e00 Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384k.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384kFit.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384kFit.png new file mode 100644 index 00000000000..a96db317c2e Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384kFit.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256k.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256k.png new file mode 100644 index 00000000000..ccbeab1cfda Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256k.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256kFit.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256kFit.png new file mode 100644 index 00000000000..3358b4fb8eb Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256kFit.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096k.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096k.png new file mode 100644 index 00000000000..d7768d1fa0e Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096k.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096kFit.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096kFit.png new file mode 100644 index 00000000000..0c16b793534 Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096kFit.png differ