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 feca225d..474f5f9f 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStorageCell.java @@ -52,6 +52,10 @@ public class ItemBasicFluidStorageCell extends FCBaseItemCell return component.stack(1); } + public ItemStack getHousing() { + return component.getHousing(1); + } + @Override public String getItemStackDisplayName(ItemStack stack) { return StatCollector.translateToLocalFormatted( @@ -114,12 +118,9 @@ public class ItemBasicFluidStorageCell extends FCBaseItemCell } // drop empty storage cell case - for (final ItemStack storageCellStack : AEApi.instance().definitions().materials() - .emptyStorageCell().maybeStack(1).asSet()) { - final ItemStack extraA = ia.addItems(storageCellStack); - if (extraA != null) { - player.dropPlayerItemWithRandomChoice(extraA, false); - } + 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(); @@ -140,9 +141,8 @@ public class ItemBasicFluidStorageCell extends FCBaseItemCell @Override public ItemStack getContainerItem(final ItemStack itemStack) { - for (final ItemStack stack : AEApi.instance().definitions().materials().emptyStorageCell().maybeStack(1) - .asSet()) { - return stack; + if (this.getHousing() != null) { + return this.getHousing(); } throw new MissingDefinition("Tried to use empty storage cells while basic storage cells are defined."); } diff --git a/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStoragePart.java b/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStoragePart.java index bbbfd526..04f70eaa 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStoragePart.java +++ b/src/main/java/com/glodblock/github/common/item/ItemBasicFluidStoragePart.java @@ -34,7 +34,7 @@ public class ItemBasicFluidStoragePart extends FCBaseItem { @Override @SideOnly(Side.CLIENT) - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) public void getSubItems(Item item, CreativeTabs tab, List list) { for (int i = 0; i < types; ++i) { list.add(new ItemStack(item, 1, i)); diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java new file mode 100644 index 00000000..aed9a268 --- /dev/null +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageHousing.java @@ -0,0 +1,70 @@ +package com.glodblock.github.common.item; + +import java.util.HashMap; +import java.util.List; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; + +import com.glodblock.github.FluidCraft; +import com.glodblock.github.common.Config; +import com.glodblock.github.common.tabs.FluidCraftingTabs; +import com.glodblock.github.util.NameConst; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemFluidStorageHousing extends FCBaseItem { + + public static final int types = 2; + private static final HashMap icon = new HashMap<>(); + + public ItemFluidStorageHousing() { + super(); + setHasSubtypes(true); + setUnlocalizedName(NameConst.ITEM_FLUID_STORAGE_HOUSING); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for (int i = 0; i < types; ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + int meta = stack.getItemDamage(); + return StatCollector.translateToLocalFormatted("item.fluid_storage_housing." + meta + ".name"); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + for (int i = 0; i < types; i++) { + icon.put(i, iconRegister.registerIcon(NameConst.RES_KEY + NameConst.ITEM_FLUID_STORAGE_HOUSING + "." + i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + return icon.get(meta); + } + + @Override + public ItemFluidStorageHousing register() { + if (!Config.fluidCells) return null; + GameRegistry.registerItem(this, NameConst.ITEM_FLUID_STORAGE_HOUSING, 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 6b997088..3b1412f2 100644 --- a/src/main/java/com/glodblock/github/common/storage/CellType.java +++ b/src/main/java/com/glodblock/github/common/storage/CellType.java @@ -8,6 +8,8 @@ import net.minecraft.util.EnumChatFormatting; import appeng.core.features.AEFeature; +import com.glodblock.github.loader.ItemAndBlockHolder; + public enum CellType { Cell1kPart(0, AEFeature.StorageCells), @@ -22,6 +24,7 @@ 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); @@ -36,6 +39,14 @@ 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; } @@ -44,6 +55,10 @@ 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 dbda6a09..17d52188 100644 --- a/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java +++ b/src/main/java/com/glodblock/github/loader/ItemAndBlockHolder.java @@ -67,6 +67,7 @@ public class ItemAndBlockHolder { 5).register(); public static ItemCreativeFluidStorageCell CREATIVE_CELL = new ItemCreativeFluidStorageCell().register(); public static ItemBasicFluidStoragePart CELL_PART = new ItemBasicFluidStoragePart().register(); + public static ItemFluidStorageHousing CELL_HOUSING = new ItemFluidStorageHousing().register(); public static void loadSetting() { if (!Config.fluidCells) return; @@ -78,5 +79,13 @@ 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 4a3ede8c..1ae8de36 100644 --- a/src/main/java/com/glodblock/github/loader/RecipeLoader.java +++ b/src/main/java/com/glodblock/github/loader/RecipeLoader.java @@ -66,10 +66,6 @@ public class RecipeLoader implements Runnable { .findItemStack("appliedenergistics2", "tile.BlockQuartzGlass", 1); public static final ItemStack AE2_LAMP_GLASS = GameRegistry .findItemStack("appliedenergistics2", "tile.BlockQuartzLamp", 1); - public static final ItemStack AE2_CELL_HOUSING = new ItemStack( - GameRegistry.findItem("appliedenergistics2", "item.ItemMultiMaterial"), - 1, - 39); public static final ItemStack AE2_CELL_1K = new ItemStack( GameRegistry.findItem("appliedenergistics2", "item.ItemMultiMaterial"), 1, @@ -422,22 +418,63 @@ public class RecipeLoader implements Runnable { 'M', AE2_MATTER_CONDENSER)); for (ItemBasicFluidStorageCell cell : cells) { - GameRegistry.addRecipe( - new ShapedOreRecipe( - cell, - "GDG", - "DCD", - "III", - 'D', - "dustRedstone", - 'G', - AE2_QUARTZ_GLASS, - 'C', - cell.getComponent(), - 'I', - "ingotIron")); - GameRegistry.addRecipe(new ShapelessOreRecipe(cell, AE2_CELL_HOUSING, cell.getComponent())); + if (cell.getHousing().getItemDamage() == 0) { + GameRegistry.addRecipe( + new ShapedOreRecipe( + cell, + "GDG", + "DCD", + "III", + 'D', + "dyeRed", + 'G', + AE2_QUARTZ_GLASS, + 'C', + cell.getComponent(), + 'I', + "ingotIron")); + } else if (cell.getHousing().getItemDamage() == 1) { + GameRegistry.addRecipe( + new ShapedOreRecipe( + cell, + "GDG", + "DCD", + "III", + 'D', + "dustRedstone", + 'G', + AE2_QUARTZ_GLASS, + 'C', + cell.getComponent(), + 'I', + "gemDiamond")); + } + GameRegistry.addRecipe(new ShapelessOreRecipe(cell, cell.getHousing(), cell.getComponent())); } + GameRegistry.addRecipe( + new ShapedOreRecipe( + CELL_HOUSING.stack(1, 0), + "GDG", + "D D", + "III", + 'D', + "dyeRed", + 'G', + AE2_QUARTZ_GLASS, + 'I', + "ingotIron")); + GameRegistry.addRecipe( + new ShapedOreRecipe( + CELL_HOUSING.stack(1, 1), + "GDG", + "D D", + "III", + 'D', + "dustRedstone", + 'G', + AE2_QUARTZ_GLASS, + 'I', + "gemDiamond")); } if (Config.fluidIOBus) { diff --git a/src/main/java/com/glodblock/github/util/NameConst.java b/src/main/java/com/glodblock/github/util/NameConst.java index af6ba8ae..f73a536a 100644 --- a/src/main/java/com/glodblock/github/util/NameConst.java +++ b/src/main/java/com/glodblock/github/util/NameConst.java @@ -44,6 +44,7 @@ public class NameConst { public static final String ITEM_WIRELESS_ULTRA_TERMINAL = "wireless_ultra_terminal"; public static final String ITEM_WIRELESS_FLUID_PATTERN_TERMINAL = "wireless_fluid_pattern_terminal"; public static final String ITEM_FLUID_PART = "fluid_part"; + public static final String ITEM_FLUID_STORAGE_HOUSING = "fluid_storage_housing"; public static final String TT_KEY = FluidCraft.MODID + ".tooltip."; public static final String TT_FLUID_TERMINAL = TT_KEY + "fluid_terminal"; diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index b0c4bd90..f3068aff 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -40,6 +40,8 @@ item.fluid_part.4.name=%s256k%s ME Fluid Storage Component item.fluid_part.5.name=%s1024k%s ME Fluid Storage Component 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 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_housing.0.png b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.0.png new file mode 100644 index 00000000..7a6f14b1 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.0.png differ diff --git a/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.1.png b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.1.png new file mode 100644 index 00000000..5a0a8010 Binary files /dev/null and b/src/main/resources/assets/ae2fc/textures/items/fluid_storage_housing.1.png differ