diff --git a/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java b/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java index c013e6d0..d0d7b232 100644 --- a/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java +++ b/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java @@ -6,22 +6,28 @@ import java.util.List; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import appeng.api.AEApi; import appeng.api.config.FuzzyMode; import appeng.api.config.IncludeExclude; +import appeng.api.implementations.items.IUpgradeModule; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; +import appeng.api.storage.data.IItemList; import appeng.core.features.AEFeature; import appeng.core.localization.GuiText; import appeng.items.AEBaseItem; import appeng.items.contents.CellConfig; import appeng.items.contents.CellUpgrades; +import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.ReadableNumberConverter; @@ -30,74 +36,43 @@ import com.glodblock.github.common.storage.CellType; import com.glodblock.github.common.storage.IFluidCellInventory; import com.glodblock.github.common.storage.IFluidCellInventoryHandler; import com.glodblock.github.common.storage.IStorageFluidCell; +import com.glodblock.github.loader.ItemAndBlockHolder; import com.glodblock.github.util.ModAndClassUtil; import com.glodblock.github.util.NameConst; import com.google.common.base.Optional; public abstract class FCBaseItemCell extends AEBaseItem implements IStorageFluidCell { - protected final CellType component; - protected final long totalBytes; - protected final int perType; - protected final double idleDrain; + protected CellType component; + protected long totalBytes; + protected int perType; + protected double idleDrain; + protected int maxType = 1; private final ReadableNumberConverter format = ReadableNumberConverter.INSTANCE; @SuppressWarnings("Guava") - public FCBaseItemCell(long bytes, int perType, double drain) { + public FCBaseItemCell(long bytes, int perType, int totalType, double drain) { super(Optional.of(bytes / 1024 + "k")); this.setFeature(EnumSet.of(AEFeature.StorageCells)); this.setMaxStackSize(1); this.totalBytes = bytes; this.perType = perType; this.idleDrain = drain; + this.maxType = totalType; this.component = null; } - @SuppressWarnings("Guava") - public FCBaseItemCell(final CellType whichCell, final long kilobytes) { - super(Optional.of(kilobytes + "k")); - this.setFeature(EnumSet.of(AEFeature.StorageCells)); - this.setMaxStackSize(1); - this.totalBytes = kilobytes * 1024; - this.component = whichCell; + @SuppressWarnings("all") + public FCBaseItemCell(final Optional subName) { + super(subName); + } - switch (this.component) { - case Cell1kPart: - this.idleDrain = 0.5; - this.perType = 8; - break; - case Cell4kPart: - this.idleDrain = 1.0; - this.perType = 8; - break; - case Cell16kPart: - this.idleDrain = 1.5; - this.perType = 8; - break; - case Cell64kPart: - this.idleDrain = 2.0; - this.perType = 8; - break; - case Cell256kPart: - this.idleDrain = 2.5; - this.perType = 8; - break; - case Cell1024kPart: - this.idleDrain = 3.0; - this.perType = 8; - break; - case Cell4096kPart: - this.idleDrain = 3.5; - this.perType = 8; - break; - case Cell16384kPart: - this.idleDrain = 4.0; - this.perType = 8; - break; - default: - this.idleDrain = 0.0; - this.perType = 8; - } + public ItemStack getHousing() { + return ItemAndBlockHolder.CELL_HOUSING.stack(); + } + + public ItemStack getComponent() { + return component.stack(1); } @Override @@ -206,7 +181,7 @@ public abstract class FCBaseItemCell extends AEBaseItem implements IStorageFluid @Override public int getTotalTypes(final ItemStack cellItem) { - return 1; + return this.maxType; } @Override @@ -239,6 +214,52 @@ public abstract class FCBaseItemCell extends AEBaseItem implements IStorageFluid Platform.openNbtData(is).setString("FuzzyMode", fzMode.name()); } + @SuppressWarnings("unchecked") + protected boolean disassembleDrive(final ItemStack stack, final World world, final EntityPlayer player) { + if (player.isSneaking()) { + if (Platform.isClient()) { + return false; + } + final InventoryPlayer playerInventory = player.inventory; + final IMEInventoryHandler inv = AEApi.instance().registries().cell() + .getCellInventory(stack, null, StorageChannel.FLUIDS); + if (inv != null && playerInventory.getCurrentItem() == stack) { + final InventoryAdaptor ia = InventoryAdaptor.getAdaptor(player, ForgeDirection.UNKNOWN); + final IItemList list = inv.getAvailableItems(StorageChannel.FLUIDS.createList()); + if (list.isEmpty() && ia != null) { + playerInventory.setInventorySlotContents(playerInventory.currentItem, null); + + // drop core + final ItemStack extraB = ia.addItems(this.component.stack(1)); + if (extraB != null) { + player.dropPlayerItemWithRandomChoice(extraB, false); + } + + // drop upgrades + final IInventory upgradesInventory = this.getUpgradesInventory(stack); + for (int upgradeIndex = 0; upgradeIndex < upgradesInventory.getSizeInventory(); upgradeIndex++) { + final ItemStack upgradeStack = upgradesInventory.getStackInSlot(upgradeIndex); + final ItemStack leftStack = ia.addItems(upgradeStack); + if (leftStack != null && upgradeStack.getItem() instanceof IUpgradeModule) { + player.dropPlayerItemWithRandomChoice(upgradeStack, false); + } + } + + // drop empty storage cell case + final ItemStack extraA = ia.addItems(this.getHousing()); + if (extraA != null) { + player.dropPlayerItemWithRandomChoice(this.getHousing(), false); + } + if (player.inventoryContainer != null) { + player.inventoryContainer.detectAndSendChanges(); + } + return true; + } + } + } + return false; + } + public ItemStack stack(int size) { return new ItemStack(this, size); } diff --git a/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStorageCell.java index 474f5f9f..e3aa3926 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStorageCell.java @@ -1,30 +1,20 @@ package com.glodblock.github.common.item; +import java.util.EnumSet; import java.util.HashMap; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.ForgeEventFactory; -import appeng.api.AEApi; import appeng.api.exceptions.MissingDefinition; -import appeng.api.implementations.items.IUpgradeModule; -import appeng.api.storage.IMEInventoryHandler; -import appeng.api.storage.StorageChannel; -import appeng.api.storage.data.IAEFluidStack; -import appeng.api.storage.data.IItemList; import appeng.core.AEConfig; import appeng.core.features.AEFeature; -import appeng.util.InventoryAdaptor; -import appeng.util.Platform; import com.glodblock.github.FluidCraft; import com.glodblock.github.common.Config; @@ -32,7 +22,9 @@ import com.glodblock.github.common.storage.CellType; import com.glodblock.github.common.storage.IStorageFluidCell; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; +import com.glodblock.github.loader.ItemAndBlockHolder; import com.glodblock.github.util.NameConst; +import com.google.common.base.Optional; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @@ -42,18 +34,60 @@ public class ItemBasicFluidStorageCell extends FCBaseItemCell implements IStorageFluidCell, IRegister { private static final HashMap icon = new HashMap<>(); + private final int housingValue; - public ItemBasicFluidStorageCell(final CellType whichCell, final long kilobytes) { - super(whichCell, kilobytes); + @SuppressWarnings("Guava") + public ItemBasicFluidStorageCell(final CellType whichCell, final int housingValue, final long kilobytes) { + super(Optional.of(kilobytes + "k")); + this.setFeature(EnumSet.of(AEFeature.StorageCells)); + this.setMaxStackSize(1); + this.totalBytes = kilobytes * 1024; + this.component = whichCell; + this.housingValue = housingValue; setUnlocalizedName(NameConst.ITEM_FLUID_STORAGE + kilobytes); + + switch (this.component) { + case Cell1kPart: + this.idleDrain = 0.5; + this.perType = 8; + break; + case Cell4kPart: + this.idleDrain = 1.0; + this.perType = 8; + break; + case Cell16kPart: + this.idleDrain = 1.5; + this.perType = 8; + break; + case Cell64kPart: + this.idleDrain = 2.0; + this.perType = 8; + break; + case Cell256kPart: + this.idleDrain = 2.5; + this.perType = 8; + break; + case Cell1024kPart: + this.idleDrain = 3.0; + this.perType = 8; + break; + case Cell4096kPart: + this.idleDrain = 3.5; + this.perType = 8; + break; + case Cell16384kPart: + this.idleDrain = 4.0; + this.perType = 8; + break; + default: + this.idleDrain = 0.0; + this.perType = 8; + } } - public ItemStack getComponent() { - return component.stack(1); - } - + @Override public ItemStack getHousing() { - return component.getHousing(1); + return ItemAndBlockHolder.CELL_HOUSING.stack(1, this.housingValue); } @Override @@ -86,52 +120,6 @@ public class ItemBasicFluidStorageCell extends FCBaseItemCell return stack; } - @SuppressWarnings("unchecked") - private boolean disassembleDrive(final ItemStack stack, final World world, final EntityPlayer player) { - if (player.isSneaking()) { - if (Platform.isClient()) { - return false; - } - final InventoryPlayer playerInventory = player.inventory; - final IMEInventoryHandler inv = AEApi.instance().registries().cell() - .getCellInventory(stack, null, StorageChannel.FLUIDS); - if (inv != null && playerInventory.getCurrentItem() == stack) { - final InventoryAdaptor ia = InventoryAdaptor.getAdaptor(player, ForgeDirection.UNKNOWN); - final IItemList list = inv.getAvailableItems(StorageChannel.FLUIDS.createList()); - if (list.isEmpty() && ia != null) { - playerInventory.setInventorySlotContents(playerInventory.currentItem, null); - - // drop core - final ItemStack extraB = ia.addItems(this.component.stack(1)); - if (extraB != null) { - player.dropPlayerItemWithRandomChoice(extraB, false); - } - - // drop upgrades - final IInventory upgradesInventory = this.getUpgradesInventory(stack); - for (int upgradeIndex = 0; upgradeIndex < upgradesInventory.getSizeInventory(); upgradeIndex++) { - final ItemStack upgradeStack = upgradesInventory.getStackInSlot(upgradeIndex); - final ItemStack leftStack = ia.addItems(upgradeStack); - if (leftStack != null && upgradeStack.getItem() instanceof IUpgradeModule) { - player.dropPlayerItemWithRandomChoice(upgradeStack, false); - } - } - - // drop empty storage cell case - final ItemStack extraA = ia.addItems(this.component.getHousing(1)); - if (extraA != null) { - player.dropPlayerItemWithRandomChoice(this.component.getHousing(1), false); - } - if (player.inventoryContainer != null) { - player.inventoryContainer.detectAndSendChanges(); - } - return true; - } - } - } - return false; - } - @Override public boolean onItemUseFirst(final ItemStack stack, final EntityPlayer player, final World world, final int x, final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ) { diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidExtremeStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemFluidExtremeStorageCell.java index bb775378..03679cf5 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidExtremeStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidExtremeStorageCell.java @@ -16,8 +16,8 @@ public class ItemFluidExtremeStorageCell extends FCBaseItemCell private final String name; - public ItemFluidExtremeStorageCell(String name, long bytes, int perType, double drain) { - super(bytes, perType, drain); + public ItemFluidExtremeStorageCell(String name, long bytes, int perType, int totalTypes, double drain) { + super(bytes, perType, totalTypes, drain); setUnlocalizedName(name); this.name = name; setTextureName(FluidCraft.resource(name).toString()); diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java index aed9a268..1b555336 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java @@ -21,7 +21,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class ItemFluidStorageHousing extends FCBaseItem { - public static final int types = 2; + public static final int types = 4; private static final HashMap icon = new HashMap<>(); public ItemFluidStorageHousing() { diff --git a/src/main/java/com/glodblock/github/common/item/ItemMultiFluidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemMultiFluidStorageCell.java new file mode 100644 index 00000000..45911a1e --- /dev/null +++ b/src/main/java/com/glodblock/github/common/item/ItemMultiFluidStorageCell.java @@ -0,0 +1,151 @@ +package com.glodblock.github.common.item; + +import java.util.EnumSet; +import java.util.HashMap; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.event.ForgeEventFactory; + +import appeng.api.exceptions.MissingDefinition; +import appeng.core.AEConfig; +import appeng.core.features.AEFeature; + +import com.glodblock.github.FluidCraft; +import com.glodblock.github.common.Config; +import com.glodblock.github.common.storage.CellType; +import com.glodblock.github.common.storage.IStorageFluidCell; +import com.glodblock.github.common.tabs.FluidCraftingTabs; +import com.glodblock.github.loader.IRegister; +import com.glodblock.github.loader.ItemAndBlockHolder; +import com.glodblock.github.util.NameConst; +import com.google.common.base.Optional; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemMultiFluidStorageCell extends FCBaseItemCell + implements IStorageFluidCell, IRegister { + + private static final HashMap icon = new HashMap<>(); + private final int housingValue; + + @SuppressWarnings("Guava") + public ItemMultiFluidStorageCell(final CellType whichCell, final int housingValue, final long kilobytes) { + super(Optional.of(kilobytes + "k")); + this.setFeature(EnumSet.of(AEFeature.StorageCells)); + this.setMaxStackSize(1); + this.totalBytes = kilobytes * 1024; + this.component = whichCell; + this.housingValue = housingValue; + this.maxType = 5; + setUnlocalizedName(NameConst.ITEM_MULTI_FLUID_STORAGE + kilobytes); + + switch (this.component) { + case Cell1kPart: + this.idleDrain = 0.5; + this.perType = 8; + break; + case Cell4kPart: + this.idleDrain = 1.0; + this.perType = 32; + break; + case Cell16kPart: + this.idleDrain = 1.5; + this.perType = 128; + break; + case Cell64kPart: + this.idleDrain = 2.0; + this.perType = 512; + break; + 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 + public ItemStack getHousing() { + return ItemAndBlockHolder.CELL_HOUSING.stack(1, this.housingValue); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + return StatCollector.translateToLocalFormatted( + "item.multi_fluid_storage." + this.totalBytes / 1024 + ".name", + CellType.getTypeColor(this.component), + EnumChatFormatting.RESET); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + icon.put( + (int) (this.totalBytes / 1024), + iconRegister.registerIcon( + NameConst.RES_KEY + NameConst.ITEM_MULTI_FLUID_STORAGE + "." + this.totalBytes / 1024)); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + int id = (int) (this.totalBytes / 1024); + return icon.get(id); + } + + @Override + public ItemStack onItemRightClick(final ItemStack stack, final World world, final EntityPlayer player) { + this.disassembleDrive(stack, world, player); + return stack; + } + + @Override + public boolean onItemUseFirst(final ItemStack stack, final EntityPlayer player, final World world, final int x, + final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ) { + if (ForgeEventFactory.onItemUseStart(player, stack, 1) <= 0) return true; + return this.disassembleDrive(stack, world, player); + } + + @Override + public boolean hasContainerItem(final ItemStack stack) { + return AEConfig.instance.isFeatureEnabled(AEFeature.EnableDisassemblyCrafting); + } + + @Override + public ItemStack getContainerItem(final ItemStack itemStack) { + if (this.getHousing() != null) { + return this.getHousing(); + } + throw new MissingDefinition("Tried to use empty storage cells while basic storage cells are defined."); + } + + @Override + public ItemMultiFluidStorageCell register() { + if (!Config.fluidCells) return null; + GameRegistry.registerItem(this, NameConst.ITEM_MULTI_FLUID_STORAGE + this.totalBytes / 1024, FluidCraft.MODID); + setCreativeTab(FluidCraftingTabs.INSTANCE); + return this; + } +} diff --git a/src/main/java/com/glodblock/github/common/storage/CellType.java b/src/main/java/com/glodblock/github/common/storage/CellType.java index 3b1412f2..6b997088 100644 --- a/src/main/java/com/glodblock/github/common/storage/CellType.java +++ b/src/main/java/com/glodblock/github/common/storage/CellType.java @@ -8,8 +8,6 @@ import net.minecraft.util.EnumChatFormatting; import appeng.core.features.AEFeature; -import com.glodblock.github.loader.ItemAndBlockHolder; - public enum CellType { Cell1kPart(0, AEFeature.StorageCells), @@ -24,7 +22,6 @@ public enum CellType { private final EnumSet features; private int damageValue; private Item itemInstance; - private int housingValue; CellType(final int metaValue, final AEFeature part) { this.setDamageValue(metaValue); @@ -39,14 +36,6 @@ public enum CellType { this.damageValue = damageValue; } - public int getHousingValue() { - return this.housingValue; - } - - public void setHousingValue(final int housingValue) { - this.housingValue = housingValue; - } - EnumSet getFeature() { return this.features; } @@ -55,10 +44,6 @@ public enum CellType { return new ItemStack(this.getItemInstance(), size, this.getDamageValue()); } - public ItemStack getHousing(final int size) { - return new ItemStack(ItemAndBlockHolder.CELL_HOUSING, size, this.getHousingValue()); - } - public Item getItemInstance() { return this.itemInstance; } diff --git a/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java b/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java index 17d52188..1067fb30 100644 --- a/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java +++ b/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java @@ -41,29 +41,53 @@ public class ItemAndBlockHolder { public static ItemWirelessInterfaceTerminal WIRELESS_INTERFACE_TERM = new ItemWirelessInterfaceTerminal() .register(); public static ItemFluidPacket PACKET = new ItemFluidPacket().register(); - public static ItemBasicFluidStorageCell CELL1K = new ItemBasicFluidStorageCell(CellType.Cell1kPart, 1).register(); - public static ItemBasicFluidStorageCell CELL4K = new ItemBasicFluidStorageCell(CellType.Cell4kPart, 4).register(); - public static ItemBasicFluidStorageCell CELL16K = new ItemBasicFluidStorageCell(CellType.Cell16kPart, 16) + public static ItemBasicFluidStorageCell CELL1K = new ItemBasicFluidStorageCell(CellType.Cell1kPart, 0, 1) .register(); - public static ItemBasicFluidStorageCell CELL64K = new ItemBasicFluidStorageCell(CellType.Cell64kPart, 64) + public static ItemBasicFluidStorageCell CELL4K = new ItemBasicFluidStorageCell(CellType.Cell4kPart, 0, 4) .register(); - public static ItemBasicFluidStorageCell CELL256K = new ItemBasicFluidStorageCell(CellType.Cell256kPart, 256) + public static ItemBasicFluidStorageCell CELL16K = new ItemBasicFluidStorageCell(CellType.Cell16kPart, 0, 16) .register(); - public static ItemBasicFluidStorageCell CELL1024K = new ItemBasicFluidStorageCell(CellType.Cell1024kPart, 1024) + public static ItemBasicFluidStorageCell CELL64K = new ItemBasicFluidStorageCell(CellType.Cell64kPart, 0, 64) .register(); - public static ItemBasicFluidStorageCell CELL4096K = new ItemBasicFluidStorageCell(CellType.Cell4096kPart, 4096) + public static ItemBasicFluidStorageCell CELL256K = new ItemBasicFluidStorageCell(CellType.Cell256kPart, 1, 256) .register(); - public static ItemBasicFluidStorageCell CELL16384K = new ItemBasicFluidStorageCell(CellType.Cell16384kPart, 16384) + public static ItemBasicFluidStorageCell CELL1024K = new ItemBasicFluidStorageCell(CellType.Cell1024kPart, 1, 1024) .register(); + public static ItemBasicFluidStorageCell CELL4096K = new ItemBasicFluidStorageCell(CellType.Cell4096kPart, 1, 4096) + .register(); + public static ItemBasicFluidStorageCell CELL16384K = new ItemBasicFluidStorageCell( + CellType.Cell16384kPart, + 1, + 16384).register(); + public static ItemMultiFluidStorageCell CELL1KM = new ItemMultiFluidStorageCell(CellType.Cell1kPart, 2, 1) + .register(); + public static ItemMultiFluidStorageCell CELL4KM = new ItemMultiFluidStorageCell(CellType.Cell4kPart, 2, 4) + .register(); + public static ItemMultiFluidStorageCell CELL16KM = new ItemMultiFluidStorageCell(CellType.Cell16kPart, 2, 16) + .register(); + public static ItemMultiFluidStorageCell CELL64KM = new ItemMultiFluidStorageCell(CellType.Cell64kPart, 2, 64) + .register(); + public static ItemMultiFluidStorageCell CELL256KM = new ItemMultiFluidStorageCell(CellType.Cell256kPart, 3, 256) + .register(); + public static ItemMultiFluidStorageCell CELL1024KM = new ItemMultiFluidStorageCell(CellType.Cell1024kPart, 3, 1024) + .register(); + public static ItemMultiFluidStorageCell CELL4096KM = new ItemMultiFluidStorageCell(CellType.Cell4096kPart, 3, 4096) + .register(); + public static ItemMultiFluidStorageCell CELL16384KM = new ItemMultiFluidStorageCell( + CellType.Cell16384kPart, + 3, + 16384).register(); public static ItemFluidExtremeStorageCell QUANTUM_CELL = new ItemFluidExtremeStorageCell( NameConst.ITEM_QUANTUM_FLUID_STORAGE, Integer.MAX_VALUE / 16, 8, + 5, 4.5).register(); public static ItemFluidExtremeStorageCell SINGULARITY_CELL = new ItemFluidExtremeStorageCell( NameConst.ITEM_SINGULARITY_FLUID_STORAGE, Long.MAX_VALUE / (singleByteAmount * 2), 8, + 1, 5).register(); public static ItemCreativeFluidStorageCell CREATIVE_CELL = new ItemCreativeFluidStorageCell().register(); public static ItemBasicFluidStoragePart CELL_PART = new ItemBasicFluidStoragePart().register(); @@ -79,13 +103,5 @@ public class ItemAndBlockHolder { CellType.Cell1024kPart.setItemInstance(CELL_PART); CellType.Cell4096kPart.setItemInstance(CELL_PART); CellType.Cell16384kPart.setItemInstance(CELL_PART); - CellType.Cell1kPart.setHousingValue(0); - CellType.Cell4kPart.setHousingValue(0); - CellType.Cell16kPart.setHousingValue(0); - CellType.Cell64kPart.setHousingValue(0); - CellType.Cell256kPart.setHousingValue(1); - CellType.Cell1024kPart.setHousingValue(1); - CellType.Cell4096kPart.setHousingValue(1); - CellType.Cell16384kPart.setHousingValue(1); } } diff --git a/src/main/java/com/glodblock/github/loader/RecipeLoader.java b/src/main/java/com/glodblock/github/loader/RecipeLoader.java index 1ae8de36..ca0e9df5 100644 --- a/src/main/java/com/glodblock/github/loader/RecipeLoader.java +++ b/src/main/java/com/glodblock/github/loader/RecipeLoader.java @@ -2,6 +2,7 @@ package com.glodblock.github.loader; import static com.glodblock.github.common.storage.CellType.Cell16384kPart; import static com.glodblock.github.loader.ItemAndBlockHolder.*; +import static com.glodblock.github.loader.ItemAndBlockHolder.CELL4KM; import static net.minecraft.init.Blocks.redstone_torch; import static net.minecraft.init.Items.fish; @@ -16,7 +17,7 @@ import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; import com.glodblock.github.common.Config; -import com.glodblock.github.common.item.ItemBasicFluidStorageCell; +import com.glodblock.github.common.item.FCBaseItemCell; import com.glodblock.github.common.storage.CellType; import com.glodblock.github.loader.recipe.WirelessTerminalRecipe; import com.glodblock.github.util.ModAndClassUtil; @@ -393,8 +394,9 @@ public class RecipeLoader implements Runnable { 'G', AE2_LAMP_GLASS)); - ItemBasicFluidStorageCell[] cells = new ItemBasicFluidStorageCell[] { CELL1K, CELL4K, CELL16K, CELL64K, - CELL256K, CELL1024K, CELL4096K, CELL16384K }; + FCBaseItemCell[] cells = new FCBaseItemCell[] { CELL1K, CELL4K, CELL16K, CELL64K, CELL256K, CELL1024K, + CELL4096K, CELL16384K, CELL1KM, CELL4KM, CELL16KM, CELL64KM, CELL256KM, CELL1024KM, CELL4096KM, + CELL16384KM }; GameRegistry.addRecipe( new ShapedOreRecipe( QUANTUM_CELL.stack(), @@ -417,7 +419,7 @@ public class RecipeLoader implements Runnable { QUANTUM_CELL, 'M', AE2_MATTER_CONDENSER)); - for (ItemBasicFluidStorageCell cell : cells) { + for (FCBaseItemCell cell : cells) { if (cell.getHousing().getItemDamage() == 0) { GameRegistry.addRecipe( new ShapedOreRecipe( @@ -443,10 +445,40 @@ public class RecipeLoader implements Runnable { 'D', "dustRedstone", 'G', + AE2_LAMP_GLASS, + 'C', + cell.getComponent(), + 'I', + "gemDiamond")); + } else if (cell.getHousing().getItemDamage() == 2) { + GameRegistry.addRecipe( + new ShapedOreRecipe( + cell, + "GDG", + "DCD", + "III", + 'D', + "dyeBlue", + 'G', AE2_QUARTZ_GLASS, 'C', cell.getComponent(), 'I', + "ingotIron")); + } else if (cell.getHousing().getItemDamage() == 3) { + GameRegistry.addRecipe( + new ShapedOreRecipe( + cell, + "GDG", + "DCD", + "III", + 'D', + "dustGlowstone", + 'G', + AE2_LAMP_GLASS, + 'C', + cell.getComponent(), + 'I', "gemDiamond")); } GameRegistry.addRecipe(new ShapelessOreRecipe(cell, cell.getHousing(), cell.getComponent())); @@ -472,8 +504,32 @@ public class RecipeLoader implements Runnable { 'D', "dustRedstone", 'G', + AE2_LAMP_GLASS, + 'I', + "gemDiamond")); + GameRegistry.addRecipe( + new ShapedOreRecipe( + CELL_HOUSING.stack(1, 2), + "GDG", + "D D", + "III", + 'D', + "dyeBlue", + 'G', AE2_QUARTZ_GLASS, 'I', + "ingotIron")); + GameRegistry.addRecipe( + new ShapedOreRecipe( + CELL_HOUSING.stack(1, 3), + "GDG", + "D D", + "III", + 'D', + "dustGlowstone", + 'G', + AE2_LAMP_GLASS, + 'I', "gemDiamond")); } diff --git a/src/main/java/com/glodblock/github/util/NameConst.java b/src/main/java/com/glodblock/github/util/NameConst.java index f73a536a..72c17295 100644 --- a/src/main/java/com/glodblock/github/util/NameConst.java +++ b/src/main/java/com/glodblock/github/util/NameConst.java @@ -35,6 +35,7 @@ public class NameConst { public static final String ITEM_PART_FLUID_LEVEL_EMITTER = "part_fluid_level_emitter"; public static final String ITEM_FLUID_PACKET = "fluid_packet"; public static final String ITEM_FLUID_STORAGE = "fluid_storage"; + public static final String ITEM_MULTI_FLUID_STORAGE = "multi_fluid_storage"; public static final String ITEM_QUANTUM_FLUID_STORAGE = ITEM_FLUID_STORAGE + ".quantum"; public static final String ITEM_SINGULARITY_FLUID_STORAGE = ITEM_FLUID_STORAGE + ".singularity"; public static final String ITEM_CREATIVE_FLUID_STORAGE = "creative_" + ITEM_FLUID_STORAGE; diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index f3068aff..3f88032f 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -30,6 +30,14 @@ item.fluid_storage.256.name=%s256k%s ME Fluid Storage Cell item.fluid_storage.1024.name=%s1024k%s ME Fluid Storage Cell item.fluid_storage.4096.name=%s4096k%s ME Fluid Storage Cell item.fluid_storage.16384.name=%s16384k%s ME Fluid Storage Cell +item.multi_fluid_storage.1.name=%s1k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.4.name=%s4k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.16.name=%s16k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.64.name=%s64k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.256.name=%s256k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.1024.name=%s1024k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.4096.name=%s4096k%s ME Multi-Fluid Storage Cell +item.multi_fluid_storage.16384.name=%s16384k%s ME Multi-Fluid Storage Cell item.fluid_storage.quantum.name=ME Fluid Quantum Storage Cell item.fluid_storage.singularity.name=ME Fluid Digital Singularity Storage Cell item.fluid_part.0.name=%s1k%s ME Fluid Storage Component @@ -42,6 +50,8 @@ item.fluid_part.6.name=%s4096k%s ME Fluid Storage Component item.fluid_part.7.name=%s16384k%s ME Fluid Storage Component item.fluid_storage_housing.0.name=ME Fluid Storage Housing item.fluid_storage_housing.1.name=ME Advanced Fluid Storage Housing +item.fluid_storage_housing.2.name=ME Multi-Fluid Storage Housing +item.fluid_storage_housing.3.name=ME Advanced Multi-Fluid Storage Housing tile.fluid_discretizer.name=Fluid Discretizer tile.fluid_pattern_encoder.name=Fluid Pattern Encoder diff --git a/src/main/resources/assets/ae2fc/textures/items/fluid_storage.16384.png b/src/main/resources/assets/ae2fc/textures/items/fluid_storage.16384.png index 0b987302..ea485742 100644 Binary files a/src/main/resources/assets/ae2fc/textures/items/fluid_storage.16384.png and b/src/main/resources/assets/ae2fc/textures/items/fluid_storage.16384.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.2.png b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.2.png new file mode 100644 index 00000000..88671238 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.2.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.3.png b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.3.png new file mode 100644 index 00000000..b055b9f7 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.3.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.1.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.1.png new file mode 100644 index 00000000..99a0009d Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.1.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.1024.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.1024.png new file mode 100644 index 00000000..d649d46a Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.1024.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.16.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.16.png new file mode 100644 index 00000000..3c0c367d Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.16.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.16384.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.16384.png new file mode 100644 index 00000000..85026a11 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.16384.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.256.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.256.png new file mode 100644 index 00000000..7e5bca2b Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.256.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.4.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.4.png new file mode 100644 index 00000000..d37d66cb Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.4.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.4096.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.4096.png new file mode 100644 index 00000000..ec78661e Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.4096.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.64.png b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.64.png new file mode 100644 index 00000000..8171533f Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/multi_fluid_storage.64.png differ