diff --git a/src/main/java/com/glodblock/github/common/item/ItemBaseInfinityStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemBaseInfinityStorageCell.java new file mode 100644 index 000000000..2488e1fbd --- /dev/null +++ b/src/main/java/com/glodblock/github/common/item/ItemBaseInfinityStorageCell.java @@ -0,0 +1,123 @@ +package com.glodblock.github.common.item; + +import java.util.List; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +import com.glodblock.github.api.FluidCraftAPI; +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.util.NameConst; + +import appeng.api.AEApi; +import appeng.api.config.FuzzyMode; +import appeng.api.storage.IMEInventoryHandler; +import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEFluidStack; +import appeng.items.AEBaseItem; +import appeng.items.contents.CellUpgrades; +import appeng.tile.inventory.AppEngInternalInventory; + +public abstract class ItemBaseInfinityStorageCell extends AEBaseItem implements IStorageFluidCell { + + protected static class InfinityConfig extends AppEngInternalInventory { + + public InfinityConfig(final ItemStack is) { + super(null, 1); + this.setInventorySlotContents(0, is); + } + + @Override + public void markDirty() {} + } + + @Override + public long getBytes(ItemStack cellItem) { + return Integer.MAX_VALUE; + } + + @Override + public int getBytesPerType(ItemStack cellItem) { + return 1; + } + + @Override + public boolean isBlackListed(ItemStack cellItem, IAEFluidStack requestedAddition) { + return requestedAddition == null || requestedAddition.getFluid() == null + || FluidCraftAPI.instance().isBlacklistedInStorage(requestedAddition.getFluid().getClass()); + } + + @Override + public abstract IInventory getConfigInventory(ItemStack is); + + @Override + public boolean storableInStorageCell() { + return false; + } + + @Override + public boolean isStorageCell(ItemStack i) { + return true; + } + + @Override + public double getIdleDrain(ItemStack is) { + return 0; + } + + @Override + public int getTotalTypes(ItemStack cellItem) { + return 0; + } + + @Override + public boolean isEditable(ItemStack is) { + return false; + } + + @Override + public IInventory getUpgradesInventory(ItemStack is) { + return new CellUpgrades(is, 0); + } + + @Override + public FuzzyMode getFuzzyMode(ItemStack is) { + return null; + } + + @Override + public void setFuzzyMode(ItemStack is, FuzzyMode fzMode) { + + } + + @Override + public void addCheckedInformation(final ItemStack stack, final EntityPlayer player, final List lines, + final boolean displayMoreInfo) { + final IMEInventoryHandler inventory = AEApi.instance().registries().cell() + .getCellInventory(stack, null, StorageChannel.FLUIDS); + + if (inventory instanceof final IFluidCellInventoryHandler handler) { + final IFluidCellInventory cellInventory = handler.getCellInv(); + + if (GuiScreen.isCtrlKeyDown()) { + if (!cellInventory.getContents().isEmpty()) { + lines.add(StatCollector.translateToLocal(NameConst.TT_CELL_CONTENTS)); + for (IAEFluidStack fluid : cellInventory.getContents()) { + if (fluid != null) { + lines.add(String.format(" %s", fluid.getFluidStack().getLocalizedName())); + } + } + } else { + lines.add(StatCollector.translateToLocal(NameConst.TT_CELL_EMPTY)); + } + } else { + lines.add(StatCollector.translateToLocal(NameConst.TT_CTRL_FOR_MORE)); + } + } + } +} diff --git a/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java index 11df908ad..f417fca63 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java @@ -1,36 +1,23 @@ package com.glodblock.github.common.item; import java.util.EnumSet; -import java.util.List; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; -import net.minecraft.util.StatCollector; import com.glodblock.github.FluidCraft; -import com.glodblock.github.api.FluidCraftAPI; -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.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; -import appeng.api.AEApi; import appeng.api.config.FuzzyMode; -import appeng.api.storage.IMEInventoryHandler; -import appeng.api.storage.StorageChannel; -import appeng.api.storage.data.IAEFluidStack; import appeng.core.features.AEFeature; -import appeng.items.AEBaseItem; import appeng.items.contents.CellConfig; -import appeng.items.contents.CellUpgrades; import appeng.util.Platform; import cpw.mods.fml.common.registry.GameRegistry; -public class ItemCreativeFluidStorageCell extends AEBaseItem +public class ItemCreativeFluidStorageCell extends ItemBaseInfinityStorageCell implements IStorageFluidCell, IRegister { public ItemCreativeFluidStorageCell() { @@ -41,52 +28,6 @@ public ItemCreativeFluidStorageCell() { this.setMaxStackSize(1); } - @Override - public long getBytes(ItemStack cellItem) { - return 0; - } - - @Override - public int getBytesPerType(ItemStack cellItem) { - return 0; - } - - @Override - public boolean isBlackListed(ItemStack cellItem, IAEFluidStack requestedAddition) { - return requestedAddition == null || requestedAddition.getFluid() == null - || FluidCraftAPI.instance().isBlacklistedInStorage(requestedAddition.getFluid().getClass()); - } - - @Override - public boolean storableInStorageCell() { - return false; - } - - @Override - public boolean isStorageCell(ItemStack i) { - return true; - } - - @Override - public double getIdleDrain(ItemStack is) { - return 0; - } - - @Override - public int getTotalTypes(ItemStack cellItem) { - return 0; - } - - @Override - public boolean isEditable(ItemStack is) { - return true; - } - - @Override - public IInventory getUpgradesInventory(ItemStack is) { - return new CellUpgrades(is, 0); - } - @Override public IInventory getConfigInventory(ItemStack is) { return new CellConfig(is); @@ -103,29 +44,8 @@ public FuzzyMode getFuzzyMode(ItemStack is) { } @Override - public void addCheckedInformation(final ItemStack stack, final EntityPlayer player, final List lines, - final boolean displayMoreInfo) { - final IMEInventoryHandler inventory = AEApi.instance().registries().cell() - .getCellInventory(stack, null, StorageChannel.FLUIDS); - - if (inventory instanceof final IFluidCellInventoryHandler handler) { - final IFluidCellInventory cellInventory = handler.getCellInv(); - - if (GuiScreen.isCtrlKeyDown()) { - if (cellInventory.getContents().size() > 0) { - lines.add(StatCollector.translateToLocal(NameConst.TT_CELL_CONTENTS)); - for (IAEFluidStack fluid : cellInventory.getContents()) { - if (fluid != null) { - lines.add(String.format(" %s", fluid.getFluidStack().getLocalizedName())); - } - } - } else { - lines.add(StatCollector.translateToLocal(NameConst.TT_CELL_EMPTY)); - } - } else { - lines.add(StatCollector.translateToLocal(NameConst.TT_CTRL_FOR_MORE)); - } - } + public boolean isEditable(ItemStack is) { + return true; } @Override diff --git a/src/main/java/com/glodblock/github/common/item/ItemInfinityLavaStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemInfinityLavaStorageCell.java new file mode 100644 index 000000000..2641cb9a4 --- /dev/null +++ b/src/main/java/com/glodblock/github/common/item/ItemInfinityLavaStorageCell.java @@ -0,0 +1,41 @@ +package com.glodblock.github.common.item; + +import static com.glodblock.github.util.Util.FluidUtil.lava_bucket; + +import java.util.EnumSet; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +import com.glodblock.github.FluidCraft; +import com.glodblock.github.common.storage.IStorageFluidCell; +import com.glodblock.github.common.tabs.FluidCraftingTabs; +import com.glodblock.github.loader.IRegister; +import com.glodblock.github.util.NameConst; + +import appeng.core.features.AEFeature; +import cpw.mods.fml.common.registry.GameRegistry; + +public class ItemInfinityLavaStorageCell extends ItemBaseInfinityStorageCell + implements IStorageFluidCell, IRegister { + + @Override + public IInventory getConfigInventory(ItemStack is) { + return new InfinityConfig(lava_bucket); + } + + public ItemInfinityLavaStorageCell() { + super(); + setUnlocalizedName(NameConst.ITEM_INFINITY_LAVA_FLUID_STORAGE); + setTextureName(FluidCraft.resource(NameConst.ITEM_INFINITY_FLUID_STORAGE).toString()); + this.setFeature(EnumSet.of(AEFeature.StorageCells)); + this.setMaxStackSize(1); + } + + @Override + public ItemInfinityLavaStorageCell register() { + GameRegistry.registerItem(this, NameConst.ITEM_INFINITY_LAVA_FLUID_STORAGE, FluidCraft.MODID); + setCreativeTab(FluidCraftingTabs.INSTANCE); + return this; + } +} diff --git a/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java new file mode 100644 index 000000000..3308b8f0d --- /dev/null +++ b/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java @@ -0,0 +1,41 @@ +package com.glodblock.github.common.item; + +import static com.glodblock.github.util.Util.FluidUtil.water_bucket; + +import java.util.EnumSet; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +import com.glodblock.github.FluidCraft; +import com.glodblock.github.common.storage.IStorageFluidCell; +import com.glodblock.github.common.tabs.FluidCraftingTabs; +import com.glodblock.github.loader.IRegister; +import com.glodblock.github.util.NameConst; + +import appeng.core.features.AEFeature; +import cpw.mods.fml.common.registry.GameRegistry; + +public class ItemInfinityWaterStorageCell extends ItemBaseInfinityStorageCell + implements IStorageFluidCell, IRegister { + + @Override + public IInventory getConfigInventory(ItemStack is) { + return new InfinityConfig(water_bucket); + } + + public ItemInfinityWaterStorageCell() { + super(); + setUnlocalizedName(NameConst.ITEM_INFINITY_WATER_FLUID_STORAGE); + setTextureName(FluidCraft.resource(NameConst.ITEM_INFINITY_FLUID_STORAGE).toString()); + this.setFeature(EnumSet.of(AEFeature.StorageCells)); + this.setMaxStackSize(1); + } + + @Override + public ItemInfinityWaterStorageCell register() { + GameRegistry.registerItem(this, NameConst.ITEM_INFINITY_WATER_FLUID_STORAGE, FluidCraft.MODID); + setCreativeTab(FluidCraftingTabs.INSTANCE); + return this; + } +} diff --git a/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java b/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java index 4bd476c56..758661710 100644 --- a/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java +++ b/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java @@ -12,7 +12,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidStack; -import com.glodblock.github.common.item.ItemCreativeFluidStorageCell; +import com.glodblock.github.common.item.ItemBaseInfinityStorageCell; import com.glodblock.github.crossmod.extracells.storage.ProxyFluidCellInventory; import com.glodblock.github.crossmod.extracells.storage.ProxyFluidStorageCell; @@ -82,7 +82,7 @@ public FluidCellInventory(final ItemStack o, final ISaveProvider container) thro public static IMEInventoryHandler getCell(final ItemStack o, final ISaveProvider container2) { try { - if (o.getItem() instanceof ItemCreativeFluidStorageCell) { + if (o.getItem() instanceof ItemBaseInfinityStorageCell) { return new FluidCellInventoryHandler(new CreativeFluidCellInventory(o, container2)); } else if (o.getItem() instanceof ProxyFluidStorageCell) { return new FluidCellInventoryHandler(new ProxyFluidCellInventory(o, container2)); diff --git a/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java b/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java index 81c04d8cb..6903e192b 100644 --- a/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java +++ b/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java @@ -29,6 +29,8 @@ import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.common.item.ItemFluidStorageHousing; import com.glodblock.github.common.item.ItemFluidStorageMonitor; +import com.glodblock.github.common.item.ItemInfinityLavaStorageCell; +import com.glodblock.github.common.item.ItemInfinityWaterStorageCell; import com.glodblock.github.common.item.ItemMagnetCard; import com.glodblock.github.common.item.ItemMultiFluidStorageCell; import com.glodblock.github.common.item.ItemPartFluidInterface; @@ -138,6 +140,8 @@ public static void init() {} 1, 5).register(); public static ItemCreativeFluidStorageCell CREATIVE_CELL = new ItemCreativeFluidStorageCell().register(); + public static ItemInfinityWaterStorageCell INFINITY_WATER_CELL = new ItemInfinityWaterStorageCell().register(); + public static ItemInfinityLavaStorageCell INFINITY_LAVA_CELL = new ItemInfinityLavaStorageCell().register(); public static ItemBasicFluidStoragePart CELL_PART = new ItemBasicFluidStoragePart().register(); public static ItemFluidStorageHousing CELL_HOUSING = new ItemFluidStorageHousing().register(); diff --git a/src/main/java/com/glodblock/github/loader/RecipeLoader.java b/src/main/java/com/glodblock/github/loader/RecipeLoader.java index 9eee004c4..bfb32e906 100644 --- a/src/main/java/com/glodblock/github/loader/RecipeLoader.java +++ b/src/main/java/com/glodblock/github/loader/RecipeLoader.java @@ -651,6 +651,8 @@ public static void addTestItem() { AE2_FLUIX_PEARL, 'R', AE2_WIRELESS_RECEIVER)); + GameRegistry.addRecipe( + new ShapelessOreRecipe(INFINITY_WATER_CELL, CELL_HOUSING.stack(1, 1), CellType.Cell64kPart.stack(1))); } public static void runTerminalRecipe() { diff --git a/src/main/java/com/glodblock/github/util/NameConst.java b/src/main/java/com/glodblock/github/util/NameConst.java index 90cca2a9b..d4c41d5fe 100644 --- a/src/main/java/com/glodblock/github/util/NameConst.java +++ b/src/main/java/com/glodblock/github/util/NameConst.java @@ -40,6 +40,9 @@ public class NameConst { 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_INFINITY_FLUID_STORAGE = ITEM_FLUID_STORAGE + ".infinity"; + public static final String ITEM_INFINITY_WATER_FLUID_STORAGE = ITEM_INFINITY_FLUID_STORAGE + ".water"; + public static final String ITEM_INFINITY_LAVA_FLUID_STORAGE = ITEM_INFINITY_FLUID_STORAGE + ".lava"; public static final String ITEM_CREATIVE_FLUID_STORAGE = "creative_" + ITEM_FLUID_STORAGE; public static final String ITEM_FLUID_PORTABLE_CELL = "portable_fluid_cell"; public static final String ITEM_WIRELESS_FLUID_TERMINAL = "wireless_fluid_terminal"; diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index 541ab1cbd..88918ba96 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemPotion; @@ -499,7 +500,9 @@ public static int clamp(int value, int min, int max) { public static class FluidUtil { - private static final ItemStack glassBottle = new ItemStack(glass_bottle, 1); + public static final ItemStack glassBottle = new ItemStack(glass_bottle, 1); + public static final ItemStack water_bucket = new ItemStack(Items.water_bucket, 1); + public static final ItemStack lava_bucket = new ItemStack(Items.lava_bucket, 1); public static ItemStack getPotion(FluidStack fs) { if (fs == null) return null; diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index 70b387b54..e742a0bc8 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -47,6 +47,8 @@ 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_storage.infinity.water.name=ME Fluid Infinity Water Storage Cell +item.fluid_storage.infinity.lava.name=ME Fluid Infinity Lava Storage Cell item.fluid_part.0.name=%s1k%s ME Fluid Storage Component item.fluid_part.1.name=%s4k%s ME Fluid Storage Component item.fluid_part.2.name=%s16k%s ME Fluid Storage Component diff --git a/src/main/resources/assets/ae2fc/textures/items/fluid_storage.infinity.png b/src/main/resources/assets/ae2fc/textures/items/fluid_storage.infinity.png new file mode 100644 index 000000000..654f88a43 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/fluid_storage.infinity.png differ