From 4b7d593649f3505046c69d3c2b6a5439e13f1555 Mon Sep 17 00:00:00 2001 From: Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> Date: Tue, 24 Jan 2023 22:12:05 +0800 Subject: [PATCH] large item cells (#234) * fluid energy and io multiplier * oversight * requst changes * large item cells --- .../java/appeng/api/definitions/IItems.java | 8 +++ .../appeng/api/definitions/IMaterials.java | 10 +++ src/main/java/appeng/core/Registration.java | 16 +++++ .../appeng/core/api/definitions/ApiItems.java | 36 ++++++++-- .../core/api/definitions/ApiMaterials.java | 36 ++++++++++ .../appeng/items/materials/MaterialType.java | 8 ++- .../storage/ItemAdvancedStorageCell.java | 63 ++++++++++++++++++ .../items/storage/ItemBasicStorageCell.java | 30 ++++++--- .../java/appeng/me/storage/CellInventory.java | 57 ++++++++-------- .../recipes/game/DisassembleRecipe.java | 8 ++- .../appliedenergistics2/lang/en_US.lang | 9 +++ .../recipes/network/cells/empty.recipe | 6 ++ .../network/cells/storage-components.recipe | 24 +++++++ .../recipes/network/cells/storage.recipe | 39 ++++++++++- .../items/ItemAdvancedStorageCell.1024k.png | Bin 0 -> 1110 bytes .../items/ItemAdvancedStorageCell.16384k.png | Bin 0 -> 1354 bytes .../items/ItemAdvancedStorageCell.256k.png | Bin 0 -> 1124 bytes .../items/ItemAdvancedStorageCell.4096k.png | Bin 0 -> 1114 bytes .../items/ItemMaterial.Cell1024kPart.png | Bin 0 -> 1382 bytes .../items/ItemMaterial.Cell16384kPart.png | Bin 0 -> 1378 bytes .../items/ItemMaterial.Cell256kPart.png | Bin 0 -> 1246 bytes .../items/ItemMaterial.Cell4096kPart.png | Bin 0 -> 1434 bytes .../ItemMaterial.EmptyAdvancedStorageCell.png | Bin 0 -> 1315 bytes 23 files changed, 300 insertions(+), 50 deletions(-) create mode 100644 src/main/java/appeng/items/storage/ItemAdvancedStorageCell.java create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.1024k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.16384k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.256k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.4096k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell1024kPart.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell16384kPart.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell256kPart.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell4096kPart.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.EmptyAdvancedStorageCell.png diff --git a/src/main/java/appeng/api/definitions/IItems.java b/src/main/java/appeng/api/definitions/IItems.java index d8486a29c91..54354ac025d 100644 --- a/src/main/java/appeng/api/definitions/IItems.java +++ b/src/main/java/appeng/api/definitions/IItems.java @@ -85,6 +85,14 @@ public interface IItems { IItemDefinition cell64k(); + IItemDefinition cell256k(); + + IItemDefinition cell1024k(); + + IItemDefinition cell4096k(); + + IItemDefinition cell16384k(); + IItemDefinition spatialCell2(); IItemDefinition spatialCell16(); diff --git a/src/main/java/appeng/api/definitions/IMaterials.java b/src/main/java/appeng/api/definitions/IMaterials.java index 23fa4f84871..c8f10051e9b 100644 --- a/src/main/java/appeng/api/definitions/IMaterials.java +++ b/src/main/java/appeng/api/definitions/IMaterials.java @@ -81,6 +81,16 @@ public interface IMaterials { IItemDefinition emptyStorageCell(); + IItemDefinition cell256kPart(); + + IItemDefinition cell1024kPart(); + + IItemDefinition cell4096kPart(); + + IItemDefinition cell16384kPart(); + + IItemDefinition emptyAdvancedStorageCell(); + IItemDefinition cardRedstone(); IItemDefinition cardSpeed(); diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 2f9b0accb85..20dfa59ecb8 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -614,6 +614,22 @@ void postInit(final FMLPostInitializationEvent event) { Upgrades.INVERTER.registerItem(items.cell64k(), 1); Upgrades.ORE_FILTER.registerItem(items.cell64k(), 1); + Upgrades.FUZZY.registerItem(items.cell256k(), 1); + Upgrades.INVERTER.registerItem(items.cell256k(), 1); + Upgrades.ORE_FILTER.registerItem(items.cell256k(), 1); + + Upgrades.FUZZY.registerItem(items.cell1024k(), 1); + Upgrades.INVERTER.registerItem(items.cell1024k(), 1); + Upgrades.ORE_FILTER.registerItem(items.cell1024k(), 1); + + Upgrades.FUZZY.registerItem(items.cell4096k(), 1); + Upgrades.INVERTER.registerItem(items.cell4096k(), 1); + Upgrades.ORE_FILTER.registerItem(items.cell4096k(), 1); + + Upgrades.FUZZY.registerItem(items.cell16384k(), 1); + Upgrades.INVERTER.registerItem(items.cell16384k(), 1); + Upgrades.ORE_FILTER.registerItem(items.cell16384k(), 1); + Upgrades.FUZZY.registerItem(items.portableCell(), 1); Upgrades.INVERTER.registerItem(items.portableCell(), 1); Upgrades.ORE_FILTER.registerItem(items.portableCell(), 1); diff --git a/src/main/java/appeng/core/api/definitions/ApiItems.java b/src/main/java/appeng/core/api/definitions/ApiItems.java index 74f5ec1f51f..309e3980f21 100644 --- a/src/main/java/appeng/core/api/definitions/ApiItems.java +++ b/src/main/java/appeng/core/api/definitions/ApiItems.java @@ -31,10 +31,7 @@ import appeng.items.misc.ItemEncodedPattern; import appeng.items.misc.ItemPaintBall; import appeng.items.parts.ItemFacade; -import appeng.items.storage.ItemBasicStorageCell; -import appeng.items.storage.ItemCreativeStorageCell; -import appeng.items.storage.ItemSpatialStorageCell; -import appeng.items.storage.ItemViewCell; +import appeng.items.storage.*; import appeng.items.tools.ToolBiometricCard; import appeng.items.tools.ToolMemoryCard; import appeng.items.tools.ToolNetworkTool; @@ -77,6 +74,10 @@ public final class ApiItems implements IItems { private final IItemDefinition cell4k; private final IItemDefinition cell16k; private final IItemDefinition cell64k; + private final IItemDefinition cell256k; + private final IItemDefinition cell1024k; + private final IItemDefinition cell4096k; + private final IItemDefinition cell16384k; private final IItemDefinition spatialCell2; private final IItemDefinition spatialCell16; @@ -134,6 +135,13 @@ public ApiItems(final DefinitionConstructor constructor) { this.cell4k = constructor.registerItemDefinition(new ItemBasicStorageCell(MaterialType.Cell4kPart, 4)); this.cell16k = constructor.registerItemDefinition(new ItemBasicStorageCell(MaterialType.Cell16kPart, 16)); this.cell64k = constructor.registerItemDefinition(new ItemBasicStorageCell(MaterialType.Cell64kPart, 64)); + this.cell256k = constructor.registerItemDefinition(new ItemAdvancedStorageCell(MaterialType.Cell256kPart, 256)); + this.cell1024k = + constructor.registerItemDefinition(new ItemAdvancedStorageCell(MaterialType.Cell1024kPart, 1024)); + this.cell4096k = + constructor.registerItemDefinition(new ItemAdvancedStorageCell(MaterialType.Cell4096kPart, 4096)); + this.cell16384k = + constructor.registerItemDefinition(new ItemAdvancedStorageCell(MaterialType.Cell16384kPart, 16384)); this.spatialCell2 = constructor.registerItemDefinition(new ItemSpatialStorageCell(2)); this.spatialCell16 = constructor.registerItemDefinition(new ItemSpatialStorageCell(16)); @@ -296,6 +304,26 @@ public IItemDefinition cell64k() { return this.cell64k; } + @Override + public IItemDefinition cell256k() { + return this.cell256k; + } + + @Override + public IItemDefinition cell1024k() { + return this.cell1024k; + } + + @Override + public IItemDefinition cell4096k() { + return this.cell4096k; + } + + @Override + public IItemDefinition cell16384k() { + return this.cell16384k; + } + @Override public IItemDefinition spatialCell2() { return this.spatialCell2; diff --git a/src/main/java/appeng/core/api/definitions/ApiMaterials.java b/src/main/java/appeng/core/api/definitions/ApiMaterials.java index 0265fbbdc4b..245b852a038 100644 --- a/src/main/java/appeng/core/api/definitions/ApiMaterials.java +++ b/src/main/java/appeng/core/api/definitions/ApiMaterials.java @@ -64,6 +64,11 @@ public final class ApiMaterials implements IMaterials { private final IItemDefinition cell16kPart; private final IItemDefinition cell64kPart; private final IItemDefinition emptyStorageCell; + private final IItemDefinition cell256kPart; + private final IItemDefinition cell1024kPart; + private final IItemDefinition cell4096kPart; + private final IItemDefinition cell16384kPart; + private final IItemDefinition emptyAdvancedStorageCell; private final IItemDefinition cardRedstone; private final IItemDefinition cardSpeed; @@ -155,6 +160,12 @@ public ApiMaterials(final DefinitionConstructor constructor) { this.cell64kPart = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.Cell64kPart)); this.emptyStorageCell = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.EmptyStorageCell)); + this.cell256kPart = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.Cell256kPart)); + this.cell1024kPart = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.Cell1024kPart)); + this.cell4096kPart = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.Cell4096kPart)); + this.cell16384kPart = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.Cell16384kPart)); + this.emptyAdvancedStorageCell = + new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.EmptyAdvancedStorageCell)); this.cardRedstone = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.CardRedstone)); this.cardSpeed = new DamagedItemDefinition(itemMultiMaterial.createMaterial(MaterialType.CardSpeed)); @@ -337,6 +348,31 @@ public IItemDefinition emptyStorageCell() { return this.emptyStorageCell; } + @Override + public IItemDefinition cell256kPart() { + return this.cell256kPart; + } + + @Override + public IItemDefinition cell1024kPart() { + return this.cell1024kPart; + } + + @Override + public IItemDefinition cell4096kPart() { + return this.cell4096kPart; + } + + @Override + public IItemDefinition cell16384kPart() { + return this.cell16384kPart; + } + + @Override + public IItemDefinition emptyAdvancedStorageCell() { + return this.emptyAdvancedStorageCell; + } + @Override public IItemDefinition cardRedstone() { return this.cardRedstone; diff --git a/src/main/java/appeng/items/materials/MaterialType.java b/src/main/java/appeng/items/materials/MaterialType.java index 690be49d213..fb37aa706bd 100644 --- a/src/main/java/appeng/items/materials/MaterialType.java +++ b/src/main/java/appeng/items/materials/MaterialType.java @@ -113,7 +113,13 @@ public enum MaterialType { CardCrafting(53), CardPatternCapacity(54), CardOreFilter(55), - CardSuperSpeed(56); + CardSuperSpeed(56), + Cell256kPart(57, AEFeature.StorageCells), + Cell1024kPart(58, AEFeature.StorageCells), + Cell4096kPart(59, AEFeature.StorageCells), + Cell16384kPart(60, AEFeature.StorageCells), + EmptyAdvancedStorageCell(61, AEFeature.StorageCells); + private final EnumSet features; // IIcon for the material. @SideOnly(Side.CLIENT) diff --git a/src/main/java/appeng/items/storage/ItemAdvancedStorageCell.java b/src/main/java/appeng/items/storage/ItemAdvancedStorageCell.java new file mode 100644 index 00000000000..d2a59db320d --- /dev/null +++ b/src/main/java/appeng/items/storage/ItemAdvancedStorageCell.java @@ -0,0 +1,63 @@ +package appeng.items.storage; + +import appeng.api.AEApi; +import appeng.api.definitions.IItemDefinition; +import appeng.api.exceptions.MissingDefinition; +import appeng.core.features.AEFeature; +import appeng.items.materials.MaterialType; +import com.google.common.base.Optional; +import java.util.EnumSet; +import net.minecraft.item.ItemStack; + +public class ItemAdvancedStorageCell extends ItemBasicStorageCell { + + @SuppressWarnings("Guava") + public ItemAdvancedStorageCell(final MaterialType whichCell, final int kilobytes) { + super(Optional.of(kilobytes + "k")); + + this.setFeature(EnumSet.of(AEFeature.StorageCells)); + this.setMaxStackSize(1); + this.totalBytes = kilobytes * 1024; + this.component = whichCell; + + switch (this.component) { + case Cell256kPart: + this.idleDrain = 2.5; + this.perType = 2048; + break; + case Cell1024kPart: + this.idleDrain = 3.0; + this.perType = 8192; + break; + case Cell4096kPart: + this.idleDrain = 3.5; + this.perType = 32768; + break; + case Cell16384kPart: + this.idleDrain = 4.0; + this.perType = 131072; + break; + default: + this.idleDrain = 0.0; + this.perType = 8; + } + } + + @Override + protected IItemDefinition getStorageCellCase() { + return AEApi.instance().definitions().materials().emptyAdvancedStorageCell(); + } + + @Override + public ItemStack getContainerItem(final ItemStack itemStack) { + for (final ItemStack stack : AEApi.instance() + .definitions() + .materials() + .emptyAdvancedStorageCell() + .maybeStack(1) + .asSet()) { + return stack; + } + throw new MissingDefinition("Tried to use empty storage cells while basic storage cells are defined."); + } +} diff --git a/src/main/java/appeng/items/storage/ItemBasicStorageCell.java b/src/main/java/appeng/items/storage/ItemBasicStorageCell.java index e65950c8095..8d8f03564cb 100644 --- a/src/main/java/appeng/items/storage/ItemBasicStorageCell.java +++ b/src/main/java/appeng/items/storage/ItemBasicStorageCell.java @@ -21,6 +21,7 @@ import appeng.api.AEApi; import appeng.api.config.FuzzyMode; import appeng.api.config.IncludeExclude; +import appeng.api.definitions.IItemDefinition; import appeng.api.exceptions.MissingDefinition; import appeng.api.implementations.items.IItemGroup; import appeng.api.implementations.items.IStorageCell; @@ -56,12 +57,13 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.ForgeEventFactory; -public final class ItemBasicStorageCell extends AEBaseItem implements IStorageCell, IItemGroup { - private final MaterialType component; - private final int totalBytes; - private final int perType; - private final double idleDrain; +public class ItemBasicStorageCell extends AEBaseItem implements IStorageCell, IItemGroup { + protected MaterialType component; + protected int totalBytes; + protected int perType; + protected double idleDrain; + @SuppressWarnings("Guava") public ItemBasicStorageCell(final MaterialType whichCell, final int kilobytes) { super(Optional.of(kilobytes + "k")); @@ -93,6 +95,11 @@ public ItemBasicStorageCell(final MaterialType whichCell, final int kilobytes) { } } + @SuppressWarnings("Guava") + public ItemBasicStorageCell(final Optional subName) { + super(subName); + } + @SideOnly(Side.CLIENT) @Override public void addCheckedInformation( @@ -236,6 +243,7 @@ public ItemStack onItemRightClick(final ItemStack stack, final World world, fina return stack; } + @SuppressWarnings({"rawtypes", "unchecked"}) private boolean disassembleDrive(final ItemStack stack, final World world, final EntityPlayer player) { if (player.isSneaking()) { if (Platform.isClient()) { @@ -267,12 +275,8 @@ private boolean disassembleDrive(final ItemStack stack, final World world, final } // drop empty storage cell case - for (final ItemStack storageCellStack : AEApi.instance() - .definitions() - .materials() - .emptyStorageCell() - .maybeStack(1) - .asSet()) { + for (final ItemStack storageCellStack : + getStorageCellCase().maybeStack(1).asSet()) { final ItemStack extraA = ia.addItems(storageCellStack); if (extraA != null) { player.dropPlayerItemWithRandomChoice(extraA, false); @@ -290,6 +294,10 @@ private boolean disassembleDrive(final ItemStack stack, final World world, final return false; } + protected IItemDefinition getStorageCellCase() { + return AEApi.instance().definitions().materials().emptyStorageCell(); + } + @Override public boolean onItemUseFirst( final ItemStack stack, diff --git a/src/main/java/appeng/me/storage/CellInventory.java b/src/main/java/appeng/me/storage/CellInventory.java index 3242d68cb0e..24913104946 100644 --- a/src/main/java/appeng/me/storage/CellInventory.java +++ b/src/main/java/appeng/me/storage/CellInventory.java @@ -50,8 +50,8 @@ public class CellInventory implements ICellInventory { private final NBTTagCompound tagCompound; private final ISaveProvider container; private int maxItemTypes = 63; - private short storedItems = 0; - private int storedItemCount = 0; + private short storedItemTypes = 0; + private long storedItemCount = 0; private IItemList cellItems; private final ItemStack cellItem; private IStorageCell cellType; @@ -98,8 +98,8 @@ private CellInventory(final ItemStack o, final ISaveProvider container) throws A this.container = container; this.tagCompound = Platform.openNbtData(o); - this.storedItems = this.tagCompound.getShort(ITEM_TYPE_TAG); - this.storedItemCount = this.tagCompound.getInteger(ITEM_COUNT_TAG); + this.storedItemTypes = this.tagCompound.getShort(ITEM_TYPE_TAG); + this.storedItemCount = this.tagCompound.getLong(ITEM_COUNT_TAG); this.cellItems = null; } @@ -220,24 +220,22 @@ public IAEItemStack injectItems(final IAEItemStack input, final Actionable mode, if (this.canHoldNewItem()) // room for new type, and for at least one item! { - final int remainingItemCount = (int) this.getRemainingItemCount() - this.getBytesPerType() * 8; + final long remainingItemCount = this.getRemainingItemCount() - this.getBytesPerType() * 8L; if (remainingItemCount > 0) { if (input.getStackSize() > remainingItemCount) { - final ItemStack toReturn = Platform.cloneItemStack(sharedItemStack); - toReturn.stackSize = sharedItemStack.stackSize - remainingItemCount; + final IAEItemStack toReturn = AEItemStack.create(sharedItemStack); + toReturn.decStackSize(remainingItemCount); if (mode == Actionable.MODULATE) { - final ItemStack toWrite = Platform.cloneItemStack(sharedItemStack); - toWrite.stackSize = remainingItemCount; - - this.cellItems.add(AEItemStack.create(toWrite)); - this.updateItemCount(toWrite.stackSize); + final IAEItemStack toWrite = AEItemStack.create(sharedItemStack); + toWrite.setStackSize(remainingItemCount); + this.cellItems.add(toWrite); + this.updateItemCount(toWrite.getStackSize()); this.saveChanges(); } - - return AEItemStack.create(toReturn); + return toReturn; } if (mode == Actionable.MODULATE) { @@ -300,12 +298,12 @@ private IItemList getCellItems() { private void updateItemCount(final long delta) { this.storedItemCount += delta; - this.tagCompound.setInteger(ITEM_COUNT_TAG, this.storedItemCount); + this.tagCompound.setLong(ITEM_COUNT_TAG, this.storedItemCount); } private void saveChanges() { // cellItems.clean(); - int itemCount = 0; + long itemCount = 0; // add new pretty stuff... int x = 0; @@ -327,25 +325,25 @@ private void saveChanges() { * NBTBase tagSlotCount = tagCompound.getTag( itemSlotCount[x] ); if ( tagSlotCount instanceof * NBTTagInt ) ((NBTTagInt) tagSlotCount).data = (int) v.getStackSize(); else */ - this.tagCompound.setInteger(itemSlotCount[x], (int) v.getStackSize()); + this.tagCompound.setLong(itemSlotCount[x], v.getStackSize()); x++; } // NBTBase tagType = tagCompound.getTag( ITEM_TYPE_TAG ); // NBTBase tagCount = tagCompound.getTag( ITEM_COUNT_TAG ); - final short oldStoredItems = this.storedItems; + final short oldStoredItems = this.storedItemTypes; /* * if ( tagType instanceof NBTTagShort ) ((NBTTagShort) tagType).data = storedItems = (short) cellItems.size(); * else */ - this.storedItems = (short) this.cellItems.size(); + this.storedItemTypes = (short) this.cellItems.size(); if (this.cellItems.isEmpty()) { this.tagCompound.removeTag(ITEM_TYPE_TAG); } else { - this.tagCompound.setShort(ITEM_TYPE_TAG, this.storedItems); + this.tagCompound.setShort(ITEM_TYPE_TAG, this.storedItemTypes); } /* @@ -356,7 +354,7 @@ private void saveChanges() { if (itemCount == 0) { this.tagCompound.removeTag(ITEM_COUNT_TAG); } else { - this.tagCompound.setInteger(ITEM_COUNT_TAG, itemCount); + this.tagCompound.setLong(ITEM_COUNT_TAG, itemCount); } // clean any old crusty stuff... @@ -381,17 +379,14 @@ private void loadCellItems() { for (int x = 0; x < types; x++) { final ItemStack t = ItemStack.loadItemStackFromNBT(this.tagCompound.getCompoundTag(itemSlots[x])); - + final IAEItemStack ias = AEItemStack.create(t); if (t != null) { - t.stackSize = this.tagCompound.getInteger(itemSlotCount[x]); - - if (t.stackSize > 0) { - this.cellItems.add(AEItemStack.create(t)); + ias.setStackSize(this.tagCompound.getInteger(itemSlotCount[x])); + if (ias.getStackSize() > 0) { + this.cellItems.add(ias); } } } - - // cellItems.clean(); } @Override @@ -481,7 +476,7 @@ public long getStoredItemCount() { @Override public long getStoredItemTypes() { - return this.storedItems; + return this.storedItemTypes; } @Override @@ -501,13 +496,13 @@ public long getRemainingItemCount() { @Override public int getUnusedItemCount() { - final int div = (int) (this.getStoredItemCount() % 8); + final long div = this.getStoredItemCount() % 8; if (div == 0) { return 0; } - return 8 - div; + return (int) (8 - div); } @Override diff --git a/src/main/java/appeng/recipes/game/DisassembleRecipe.java b/src/main/java/appeng/recipes/game/DisassembleRecipe.java index a6a2ccc3471..c5c98cb6ae8 100644 --- a/src/main/java/appeng/recipes/game/DisassembleRecipe.java +++ b/src/main/java/appeng/recipes/game/DisassembleRecipe.java @@ -47,13 +47,17 @@ public DisassembleRecipe() { final IItems items = definitions.items(); final IMaterials mats = definitions.materials(); - this.cellMappings = new HashMap(4); - this.nonCellMappings = new HashMap(5); + this.cellMappings = new HashMap<>(8); + this.nonCellMappings = new HashMap<>(5); this.cellMappings.put(items.cell1k(), mats.cell1kPart()); this.cellMappings.put(items.cell4k(), mats.cell4kPart()); this.cellMappings.put(items.cell16k(), mats.cell16kPart()); this.cellMappings.put(items.cell64k(), mats.cell64kPart()); + this.cellMappings.put(items.cell256k(), mats.cell256kPart()); + this.cellMappings.put(items.cell1024k(), mats.cell1024kPart()); + this.cellMappings.put(items.cell4096k(), mats.cell4096kPart()); + this.cellMappings.put(items.cell16384k(), mats.cell16384kPart()); this.nonCellMappings.put(items.encodedPattern(), mats.blankPattern()); this.nonCellMappings.put(blocks.craftingStorage1k(), mats.cell1kPart()); diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang index 835ac56e733..2c7ee52ee45 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang @@ -456,6 +456,10 @@ item.appliedenergistics2.ItemBasicStorageCell.1k.name=1k ME Storage Cell item.appliedenergistics2.ItemBasicStorageCell.4k.name=4k ME Storage Cell item.appliedenergistics2.ItemBasicStorageCell.16k.name=16k ME Storage Cell item.appliedenergistics2.ItemBasicStorageCell.64k.name=64k ME Storage Cell +item.appliedenergistics2.ItemAdvancedStorageCell.256k.name=256k ME Storage Cell +item.appliedenergistics2.ItemAdvancedStorageCell.1024k.name=1024k ME Storage Cell +item.appliedenergistics2.ItemAdvancedStorageCell.4096k.name=4096k ME Storage Cell +item.appliedenergistics2.ItemAdvancedStorageCell.16384k.name=16384k ME Storage Cell item.appliedenergistics2.ItemCreativeStorageCell.name=Creative ME Storage Cell item.appliedenergistics2.ItemEncodedPattern.name=Encoded Pattern item.appliedenergistics2.ItemViewCell.name=View Cell @@ -492,11 +496,16 @@ item.appliedenergistics2.ItemMaterial.Cell1kPart.name=1k ME Storage Component item.appliedenergistics2.ItemMaterial.Cell4kPart.name=4k ME Storage Component item.appliedenergistics2.ItemMaterial.Cell16kPart.name=16k ME Storage Component item.appliedenergistics2.ItemMaterial.Cell64kPart.name=64k ME Storage Component +item.appliedenergistics2.ItemMaterial.Cell256kPart.name=256k ME Storage Component +item.appliedenergistics2.ItemMaterial.Cell1024kPart.name=1024k ME Storage Component +item.appliedenergistics2.ItemMaterial.Cell4096kPart.name=4096k ME Storage Component +item.appliedenergistics2.ItemMaterial.Cell16384kPart.name=16384k ME Storage Component item.appliedenergistics2.ItemMaterial.CertusQuartzCrystal.name=Certus Quartz Crystal item.appliedenergistics2.ItemMaterial.CertusQuartzCrystalCharged.name=Charged Certus Quartz Crystal item.appliedenergistics2.ItemMaterial.CertusQuartzDust.name=Certus Quartz Dust item.appliedenergistics2.ItemMaterial.EmptyStorageCell.name=ME Storage Housing +item.appliedenergistics2.ItemMaterial.EmptyAdvancedStorageCell.name=ME Advanced Storage Housing item.appliedenergistics2.ItemMaterial.EnderDust.name=Ender Dust item.appliedenergistics2.ItemMaterial.Flour.name=Flour diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/cells/empty.recipe b/src/main/resources/assets/appliedenergistics2/recipes/network/cells/empty.recipe index fa2829ca670..866fcd04fea 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/network/cells/empty.recipe +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/cells/empty.recipe @@ -3,3 +3,9 @@ shaped= oredictionary:dustRedstone _ oredictionary:dustRedstone, oredictionary:ingotIron oredictionary:ingotIron oredictionary:ingotIron -> ae2:ItemMaterial.EmptyStorageCell + +shaped= + ae2:BlockQuartzGlass oredictionary:dustFluix ae2:BlockQuartzGlass, + oredictionary:dustFluix _ oredictionary:dustFluix, + oredictionary:gemDiamond oredictionary:gemDiamond oredictionary:gemDiamond + -> ae2:ItemMaterial.EmptyAdvancedStorageCell diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage-components.recipe b/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage-components.recipe index ed819fd7d2e..7dab3c8b9ea 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage-components.recipe +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage-components.recipe @@ -21,3 +21,27 @@ shaped= ae2:ItemMaterial.Cell16kPart ae2:BlockQuartzGlass ae2:ItemMaterial.Cell16kPart, oredictionary:dustGlowstone ae2:ItemMaterial.Cell16kPart oredictionary:dustGlowstone -> ae2:ItemMaterial.Cell64kPart + +shaped= + oredictionary:dustGlowstone ae2:ItemMaterial.EngProcessor oredictionary:dustGlowstone, + ae2:ItemMaterial.Cell64kPart ae2:ItemMaterial.LogicProcessor ae2:ItemMaterial.Cell64kPart, + oredictionary:dustGlowstone ae2:ItemMaterial.Cell64kPart oredictionary:dustGlowstone + -> ae2:ItemMaterial.Cell256kPart + +shaped= + oredictionary:dustGlowstone ae2:ItemMaterial.EngProcessor oredictionary:dustGlowstone, + ae2:ItemMaterial.Cell256kPart ae2:ItemMaterial.LogicProcessor ae2:ItemMaterial.Cell256kPart, + oredictionary:dustGlowstone ae2:ItemMaterial.Cell256kPart oredictionary:dustGlowstone + -> ae2:ItemMaterial.Cell1024kPart + +shaped= + oredictionary:dustGlowstone ae2:ItemMaterial.EngProcessor oredictionary:dustGlowstone, + ae2:ItemMaterial.Cell1024kPart ae2:ItemMaterial.LogicProcessor ae2:ItemMaterial.Cell1024kPart, + oredictionary:dustGlowstone ae2:ItemMaterial.Cell1024kPart oredictionary:dustGlowstone + -> ae2:ItemMaterial.Cell4096kPart + +shaped= + oredictionary:dustGlowstone ae2:ItemMaterial.EngProcessor oredictionary:dustGlowstone, + ae2:ItemMaterial.Cell4096kPart ae2:ItemMaterial.LogicProcessor ae2:ItemMaterial.Cell4096kPart, + oredictionary:dustGlowstone ae2:ItemMaterial.Cell4096kPart oredictionary:dustGlowstone + -> ae2:ItemMaterial.Cell16384kPart diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage.recipe b/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage.recipe index 2aa8ecc694a..7fddb16eca2 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage.recipe +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/cells/storage.recipe @@ -9,7 +9,19 @@ shapeless= shapeless= ae2:ItemMaterial.Cell64kPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemBasicStorageCell.64k - + +shapeless= + ae2:ItemMaterial.Cell256kPart ae2:ItemMaterial.EmptyAdvancedStorageCell -> ae2:ItemAdvancedStorageCell.256k + +shapeless= + ae2:ItemMaterial.Cell1024kPart ae2:ItemMaterial.EmptyAdvancedStorageCell -> ae2:ItemAdvancedStorageCell.1024k + +shapeless= + ae2:ItemMaterial.Cell4096kPart ae2:ItemMaterial.EmptyAdvancedStorageCell -> ae2:ItemAdvancedStorageCell.4096k + +shapeless= + ae2:ItemMaterial.Cell16384kPart ae2:ItemMaterial.EmptyAdvancedStorageCell -> ae2:ItemAdvancedStorageCell.16384k + shaped= ae2:BlockQuartzGlass oredictionary:dustRedstone ae2:BlockQuartzGlass, oredictionary:dustRedstone ae2:ItemMaterial.Cell1kPart oredictionary:dustRedstone, @@ -33,3 +45,28 @@ shaped= oredictionary:dustRedstone ae2:ItemMaterial.Cell64kPart oredictionary:dustRedstone, oredictionary:ingotIron oredictionary:ingotIron oredictionary:ingotIron -> ae2:ItemBasicStorageCell.64k + +shaped= + ae2:BlockQuartzGlass oredictionary:dustFluix ae2:BlockQuartzGlass, + oredictionary:dustFluix ae2:ItemMaterial.Cell256kPart oredictionary:dustFluix, + oredictionary:gemDiamond oredictionary:gemDiamond oredictionary:gemDiamond + -> ae2:ItemAdvancedStorageCell.256k + +shaped= + ae2:BlockQuartzGlass oredictionary:dustFluix ae2:BlockQuartzGlass, + oredictionary:dustFluix ae2:ItemMaterial.Cell1024kPart oredictionary:dustFluix, + oredictionary:gemDiamond oredictionary:gemDiamond oredictionary:gemDiamond + -> ae2:ItemAdvancedStorageCell.1024k + +shaped= + ae2:BlockQuartzGlass oredictionary:dustFluix ae2:BlockQuartzGlass, + oredictionary:dustFluix ae2:ItemMaterial.Cell4096kPart oredictionary:dustFluix, + oredictionary:gemDiamond oredictionary:gemDiamond oredictionary:gemDiamond + -> ae2:ItemAdvancedStorageCell.4096k + +shaped= + ae2:BlockQuartzGlass oredictionary:dustFluix ae2:BlockQuartzGlass, + oredictionary:dustFluix ae2:ItemMaterial.Cell16384kPart oredictionary:dustFluix, + oredictionary:gemDiamond oredictionary:gemDiamond oredictionary:gemDiamond + -> ae2:ItemAdvancedStorageCell.16384k + diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.1024k.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.1024k.png new file mode 100644 index 0000000000000000000000000000000000000000..14a83dc1616674dff1c0a9ef5007526b56a14a55 GIT binary patch literal 1110 zcmaJ=X-E`N93Q)=?2e$qXd3N;c8*=gZ6-Ha_pk}qY+G>cLpaVn-AQNOIP+|0g($*` zA}CBKDWW2xs3iRmq(KoKR1gJG;nxm|5`&WHqTZNmeP|na^A3K$-~V{Ox39XYV*1pD zQwf5YF0Bj4@jS~NlPBT-;*URNJS{+xB-#WUP+GPC5maG4ASGRH1aTm%nU;H?lpw}0 z(Gp3Nj8%#X)M?qp(2j0mHbIn@Ii{>M0Yuh=M$HINL;cq&Qd0v|4Ig7;W(cITb!`^d z)K-;H+L{zWrOMWlrH+UNbbw^i(VGohbOO|fu87y}F+-6f5Y!Z)ekYZTRg)oT0g|VA zkHUI6(l5{)Uo3FkD$>hxK89l%ui)W0vDhziCFJNw;b@lHAjZSd(O7sFpi&5#BEzK9 zX*%trq1DK6f*>%gm+^W%7~!!q29h0*VHaiK{ii1D-{!`daWK6)sfel+N1z%i4p&QB+Ll%$` zv=R_DXS-OPf(Y6vXp*52xuQlhRG79`j=*CvQ8H{K8w!xZ0SXJynx=|DAIAm#tT)23 zxYZHgYCgmY#pS#Z@kjmTf;Y`;1!`rFl3xr?Yfu(3lrce1@qstiuqJFBSc%$$@{P$4bL%uRmy(pl6s;r+OoEBean zuWns_cH)cM9fQ}e9C~NxKg}z-)mxJPY2f+7;Wdj+Pr5kpjNj}@HZ|XWyQSN|qhQAC zm*0l(oZ91i^*Op&?HKI7P}hE!zxMg{&z;)~PaN!@Qsa4Ztn!C)d)e_9OK%XB=Z_5X Rk4usJ(xpgMxVyY=*Dv1}cA)?O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.16384k.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.16384k.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f4c7028519fbb11a191895bc4e486127c543fd GIT binary patch literal 1354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc$WX!DQqR!T z#M01EN5ROz&{*HlK;Otx*U-?)#N5izOaTg%fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|-$Hxow#6DLS7S#5OG{Tnb4ybL za}#3&6HAz0m;B_?+|;}hnBEkGUT2(oK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-2${9 zms=ouQ*gV*5vN{#pkwqw@ro4BFd<;#0WsmJ7RZ68`_w#OVlM)w>W~RX8WTK)KBy_o_d2t~FCzC;X+x@p?mFJ&-R+@f# zW50efJ6pt$HF0Vg+i&XxtGz6-s%iWByVmvC&CfPd8@gZouQHMA*PQ5a;c@rr^y7sm z40ybj22DAcV)5+a&u!QF;C z_~*JXG$khPEIN4KY*NYp4@-0(o1U2QerrwN9Iwcfug{(;#(cLH=VE1y{%-xB(|}>- W3IE4TY9b3krJJX#pUXO@geCx8@9dla literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.256k.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemAdvancedStorageCell.256k.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3aff1eb68f9d7c97afc137e006f8a39caf563f GIT binary patch literal 1124 zcmaJ=TSyd97#^*(G@%=kU2vKTjM|;cx~?<2*}Ai=%ElhqptSQHgM)#_`dJIobL=aH`Nst zY$_lKq9{@?#_+tx87uSfzjS(5!cz$fB~cu9qO@cJBA~zyKt?pF3&en=^!Gji)daC@ zo0>?XWOTnEL(MHY7`Lq%m`xDXHMSwi-2jmtpi9;L)c1#vC{k7YREsytM2#Rwsr3UU zhz~R+pEa~IjthbzJ**zr3upXLaXpVQWtWfR~*a~vtqi{4+=@epOcp(y%Q#FtZb<$CkI$$62Q#jN45;S8` zR<{<~gd0ZNl0ma>#wjTSj7I+t)wD&lg<@bS-+u~QiGBmnF<`+yQ^pt9x!nn62tgA_ z2$~59doo>YPC*2%6g0?SkSuFabp@uaU32hgREX#nl5`nFL_dWE+^VVwUfv_t27|s3 z%ivarJOK|M3UlSPJR9aXHXvrWB9!|yprZ^|S>je^;Ymrg{V@VH0ZPT*ZQ# zJr{3Qy#=n4J(r5CTpA}sJNNq6J!g)vd7R~2$_dv&HH?ga~UK{+5U&QN(7)aP} z&c%1H%Vk$JveU}EU-fz*z=ebU6LXJtzI>;+Wodq3UDy^Z`jG(Ftf z*3er#HPOu65PDrXJ3d|7wP$U7-*C;~Nbc|!`N|zJoa<_>Y8>+AoIX0Xp`da3gZ0(z z&u312xv{x&t9d+;oM|b%biMd);nW&%^Puf79UcGh8O;K2yoUL(7PE1ahZeGy` z6*iE0$AJh6zBs4iWlT`#1qOoP!;lFRAJiA|f_O*tWUkW(YvANu_`dJIobMcr*RCp= zI&UgL5GB#oQUcGV?wC@D|MNfml<_ndMH)~YY(kD~0V1rz6d7k!q_x!@ z7O3l}O)4EN3a?TtmXpD(fCY4bWHPI_8n%!PQDeFSUc1LMMUFvGONjcNR6{IIiqHaN zz#H%=49AjHyq695d6umpIfnJoEJJg=hh+tSmB3b#;~#~iS!$DzkZQ(b;a!MIBV-CR z?KqCt@p+-uOtU=C(+o#*oChO3cDsS(tjDm+a|#l$6-zUb1`X0xlv6N+LKM#QcL};V zA#2#K`tfm+Lw~H*sVMSXvuUYb>afV-*Wp z-dwmyUcGUynl~4&CNG!9$hHaSckqjN6qUls z>_}&KXnMhd(wdW9T}MA|deVF0X?p1Wd48JHclp!g;o0|Qey!~8d)Flt6&2q+{&nNw z1h=VYUESd0H*+@3A}Y>Ali`xxhvVUr{iVmwMTKzjm7SiAMP;vh){JgnU(mL%>*}$} zB@fcl*=5h(Jb2jIs9stbfB5sro-a((!p50}&fd1xk+PvGm@4iYIIUD@!!Ite(=*P+ z>jRr#mjAf=x&Qf%yQjYGNYCHeeK(k4st*;O3MB5|oN@8hzQHX;`l9|_ohJqtjuuQK XZhyMQpGXA{xUW4Lsg-)G8~6SK5&w4` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell1024kPart.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell1024kPart.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9eafb4da2775b1e4c886991f9163b9d8418a58 GIT binary patch literal 1382 zcmaJ>drTX39KTX1NP!WiZlK6fGJ}!!9_^L&q(IkF+GVZSk*tYX(rfRax6-@Y-LW3b znL>?WVH)BvZe}<$oMK!|1%pvE1e8RiE(^wqljw{HCXS$EKG-Am$|&;>@shjWBcIRb z`}sa{$D7=Z`MD*z0087W9X5}=7N*`DmHaJRO%n1_EH-$>{cMXEA$SU~kgT5qonfMt z@=yfXad?`l0RUw=-Ru>;u6=lb4eN*$Mkj?inGFCnbrMGeLX-&lsaBdXYgWd_H6Trz zH3u*k?Bc9ckal$P)c#I)bD%R6Fp-+NTChgKWq~jy5}*`rV+33>Yu0sfd7rw5G~hZ! z44E}|O?h2Spq1q*5Yu7W0E{AFwMmCy1`~o*fhdgVAq0j{lNLd6Lp6>V!Hq{FN8`yB z++(wE#F9^DO;8j$9D*W|h%Tbnv3x6pm`o-JMj;f{$_TB{!H9&UWrT{ff{hXaJk5zT z%YZ3G!q2vgW{vFhZVF*;QC#59+@ z$HlhfrY0fG$&qaoPamO3JI{u}^^9?PYcJ@QdK+AFYcKjOxsYrIO7-<$eNJD=!;{)> zPOW^{oO_Cqhn<(Fy1w*IBLFDAbJ{G;(iQ*hWU@}VE1G44QFJn^W+0IqKblk|++S2? ze6`wgql+%LDB{#C-&}KwhFD_uyzjl`hhB+IJ$Ytq;`8onXG<-V z@1q;D`18}Be3^H7iGh0*YbReY?5r;zF;Rh&=kR5!>)|9K<^-_W9XxumT>Ur5o^yEO-k41e28HZjAW!*oLQIa!EeoywpzRc4P z53{;c%HG=57wsx@@an{8*LGl&b0;dhr0bWC#OtR9V^^hTTi;gvS&&ngWv_5lt<8Dj rS7L|%_${GyJNn5-?R!V`^-%?|;9mIY1b)h%`tvy(+_rc3_`3fAuBGUo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell16384kPart.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell16384kPart.png new file mode 100644 index 0000000000000000000000000000000000000000..dba18000d0cc56ec0e401f49b6f98b4c69f8a4de GIT binary patch literal 1378 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc$WX!DQqR!T z#M01EN5ROz&{*HlK;Otx*U-?)#N5izOaTg%fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f08`V>4$<0~c3A17|}+S7Qr919L}nXJaR4 z17{Oc3j>&5m;B_?+|;}hnBEkGURRuYK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtAP zJgD9j+-`BksaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(`-A-*T0|VoAPZ!6K zid##9eKlMHMeO=-@)}Oonex>qNO*SOlYEzL8D`1Ov!>|$nKE_iELkxf6Ib5kg@1TG z#g;g(=#1Dqm38Ci`_5+{?YLk2e&5XW*H_22Fi%=Cx*`;B@Ad zLJa3Rd>=fS7;ZPC+0>5ju5tgS%=NWK*VE^v@+3`kN&0wjv#3N9%h{?hrcfo7h7~FY zZm2GJwlK=Rmt8C4XY-2fGcpu5r|sXQzt`)b(xTkvj6=_-Zd~QR?vLCV^PisHF~JYt zs-5-q5BxjT@980Xb%qJO1ugTM>e#uZ<_Y#6mpr?x%jLxxF1CuOHJJ;aJ8jpg5A>R@ zZ^YBQ=;DfJ2@jtsrcdXz6}+XfMN3~T;AgtP2d1k!8M8AYjAl+L^O1QMp>yDR_D!$G z(k}@gBFr^Kmre++_F8i|dGe*_f7MRSdnJI zZFe>{yG=bHr=k*BV}4LV=?uf0z3XLebd~Z59b7nR#q7ZCuh>oG*9duteJDQjt>nUq wUyWvxt2Uoz4h>MXaOTN5a=ZA0{7=yY29>yMV~+mdKI;Vst0N{oDHvj+t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell256kPart.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell256kPart.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8cfcef081a68a893df7a44dada83195aca3195 GIT binary patch literal 1246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc$WX!DQqR!T z#M01EN5ROz&{*HlK;Otx*U-?)#N5izOaTg%fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|N4Cj&D_GhUI2$*<4On9mVa^UGcH4m8Bi-4&*HNmZkfq^mD)5S5Q z;#Sh1|NrfoT^a5+%rs8_XKo(Co-80ew}0Jq&d3D|7e2H%H#eWdpS1Y1W7dSP22DPR zDJd=9D^{#9xU;jE-S4pw^D6e&sg0J>X~Em~C_8ITn3pVcZo;7rLON#m^=2tfOw>GF z!t3AW)AqJteUl7>+0jED%sIQ4*Q*5T-Pl)X8S&@HPU#+vM1~*(SA7nj`Q3eNmlgi7 zoQjiXTWEMF;o6$W1bv0uOpD&%-+%tVkt0VG^!57{zkhul-nM0niJMqW;Ge(0%QrBx zTxQgnH(e+4)BUFx>kaOHlXq(Vpr&EX=5_eW;bcZOhjZQxZDu!SdQVqk5j#$0is|PA7?(_Mb1`;VAIT*a&CYW~VZpPVVHbH$I&c?tXCF*-nA&orWlE1^ zVordK|GV5acjXS=?&^}QFDe@apP2|SY`pmM#H@#L3s@LfBp6=(`s-Bl_r*?7iR0<& K=d#Wzp$PyVkgRk7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell4096kPart.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.Cell4096kPart.png new file mode 100644 index 0000000000000000000000000000000000000000..6376d827efca1ae690a59dd629541fbce64e9f96 GIT binary patch literal 1434 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc$WX!DQqR!T z#M01EN5ROz&{*HlK;Otx*U-?)#N5izOaTg%fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~k>LkkN>BUe{L17|}+S7S#LMh! zCr1+tM;Dl0m;B_?+|;}hnBEkGUN@Y2K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtYX zJgD9j+-`BfsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)xMbu*w0|OJkr;B4q z#jT`2|Nq-Ft2VH@7#JBHVzrrj=Kucc|BPq+PH8Y*{+#xuF;mfzal@y#zx|qiDx97< z!MB^Q?6>^fDcsMCi;J5LW8^f{RZjeuU%{t$tYuAP==H9J(f1}QK7YW=cJ67o#Jf8? znUC2>=NpK~?mB1?dw4SA61Eh}GXi2WHrp~kJ}_(I!N!g(wlqC4k&SolcJj>B(&F)c z?)#7bo9zjCF*m6P6IgEk;Xm6bTD7-%!{np^w&_5(NITu_a0G;&!;mvB~lIg=B-c zA20vcpO+Vq`6AzBUjO(1{f}}i%~zVfC@gnz3z*XSW;XY;KaFYppZna{_8xQd=xSb8 z_S?1h!3)-99&S^na2P%L_B5GCw4cxDOwomeiu9F?e7OR3Ts_CsvU%H{BzsFbWI1F7 zPBPLdZcu5^&UHx3vIVCg!0J*0F A+W-In literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.EmptyAdvancedStorageCell.png b/src/main/resources/assets/appliedenergistics2/textures/items/ItemMaterial.EmptyAdvancedStorageCell.png new file mode 100644 index 0000000000000000000000000000000000000000..c89fec81a2481be94cd9222b7c5ef2da370925e9 GIT binary patch literal 1315 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc$WX!DQqR!T z#M01EN5ROz&{*HlK;Otx*U-?)#N5izOaTg%fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|})S63rbb2nE*0~bR>S7S>jV^a$YLnjww zM`uSjBWIXim;B_?+|;}hnBEk)UJC=9dO;~6w*Y9fOKMSOS!#+~QGTuh*vD3xxZUD{ z(>$o&6r64`cg3k!ALtl;P`o0=GfW7WctA{ess(c3={_|NnAnSesoJmPktYKK;|xz1 z$B>F!CBfGIOpXHcZ2JVXvo&%yPIXImP1ISp$w2HMcQ$u&;#>I($8P=NIdUXo#m+7X zEpCqrxrc&D95IIt@0l0!hrd&s`R3l4n)^0oeKTfWN~vFe;)03&hHd`}Vy_p(#m9Yk zeO&!%k)@T!+fP@|uKo48T*lo`yHoPP^zBlqnZ@LFIxfED3KKqHIQy)M2G@iCOwj@?HuKLvK6uR8g>6ot z*hQ0rHVn6JopYaIW8lT3FvCY}O|(S+acNzJ&3TL)_t$lCwjEyRXe8CUBQrjGa5*Dnvu%#HMTOo)&3t+dMhB)AO#&`Oh5I z?`33z)FyYn-Ep|=`-c?*#s9bb%NIEna7saS%8pf@_|-H!w2%OJ1;S%avcVLB*D*tDnm{r-UW|t2Nph literal 0 HcmV?d00001