From 3990ab4f423ddbd452d0b75d8a7afbbfcb5a8e41 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Thu, 2 Jan 2014 13:00:09 -0500 Subject: [PATCH] Have NEI plugin iterate over possible fuel stacks, register sulfur dust in oredict --- .../nei/AdvancedMachineRecipeHandler.java | 29 ++++++++++--------- ...ChemicalInjectionChamberRecipeHandler.java | 8 +++-- .../client/nei/CombinerRecipeHandler.java | 10 ++++--- .../nei/OsmiumCompressorRecipeHandler.java | 8 +++-- .../nei/PurificationChamberRecipeHandler.java | 8 +++-- common/mekanism/common/Mekanism.java | 1 + .../TileEntityChemicalInjectionChamber.java | 2 +- .../TileEntityOsmiumCompressor.java | 16 +++++++--- .../mekanism/common/util/MekanismUtils.java | 16 ++++++++++ 9 files changed, 69 insertions(+), 29 deletions(-) diff --git a/common/mekanism/client/nei/AdvancedMachineRecipeHandler.java b/common/mekanism/client/nei/AdvancedMachineRecipeHandler.java index 89ff93c5b..c84336551 100644 --- a/common/mekanism/client/nei/AdvancedMachineRecipeHandler.java +++ b/common/mekanism/client/nei/AdvancedMachineRecipeHandler.java @@ -1,6 +1,10 @@ package mekanism.client.nei; +import static codechicken.core.gui.GuiDraw.changeTexture; +import static codechicken.core.gui.GuiDraw.drawTexturedModalRect; + import java.awt.Rectangle; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -13,17 +17,15 @@ import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; -import static codechicken.core.gui.GuiDraw.*; - public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler { private int ticksPassed; public abstract String getRecipeId(); - - public abstract ItemStack getFuelStack(); public abstract Set> getRecipes(); + + public abstract List getFuelStacks(); @Override public void drawBackground(int i) @@ -67,7 +69,7 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler { for(Map.Entry irecipe : getRecipes()) { - arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); + arecipes.add(new CachedIORecipe(irecipe, getFuelStacks())); } } else { @@ -82,7 +84,7 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler { if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getValue(), result)) { - arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); + arecipes.add(new CachedIORecipe(irecipe, getFuelStacks())); } } } @@ -94,16 +96,17 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler { if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getKey(), ingredient)) { - arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); + arecipes.add(new CachedIORecipe(irecipe, getFuelStacks())); } } } public class CachedIORecipe extends TemplateRecipeHandler.CachedRecipe { + public List fuelStacks; + public PositionedStack inputStack; public PositionedStack outputStack; - public PositionedStack fuelStack; @Override public PositionedStack getIngredient() @@ -120,20 +123,20 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler @Override public PositionedStack getOtherStack() { - return fuelStack; + return new PositionedStack(fuelStacks.get(cycleticks/40 % fuelStacks.size()), 40, 48); } - public CachedIORecipe(ItemStack input, ItemStack output, ItemStack fuel) + public CachedIORecipe(ItemStack input, ItemStack output, List fuels) { super(); inputStack = new PositionedStack(input, 40, 12); outputStack = new PositionedStack(output, 100, 30); - fuelStack = new PositionedStack(fuel, 40, 48); + fuelStacks = fuels; } - public CachedIORecipe(Map.Entry recipe, ItemStack fuel) + public CachedIORecipe(Map.Entry recipe, List fuels) { - this((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue(), fuel); + this((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue(), fuels); } } } diff --git a/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java b/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java index 657bf86a8..9ba1c413d 100644 --- a/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java +++ b/common/mekanism/client/nei/ChemicalInjectionChamberRecipeHandler.java @@ -1,9 +1,13 @@ package mekanism.client.nei; +import java.util.List; import java.util.Set; +import mekanism.api.gas.GasRegistry; import mekanism.client.gui.GuiChemicalInjectionChamber; import mekanism.common.RecipeHandler.Recipe; +import mekanism.common.util.ListUtils; +import mekanism.common.util.MekanismUtils; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -40,9 +44,9 @@ public class ChemicalInjectionChamberRecipeHandler extends AdvancedMachineRecipe } @Override - public ItemStack getFuelStack() + public List getFuelStacks() { - return new ItemStack(Item.gunpowder); + return ListUtils.asList(new ItemStack(Item.gunpowder), MekanismUtils.getFullGasTank(GasRegistry.getGas("sulfuricAcid"))); } @Override diff --git a/common/mekanism/client/nei/CombinerRecipeHandler.java b/common/mekanism/client/nei/CombinerRecipeHandler.java index 1cd00556c..6b78dcf50 100644 --- a/common/mekanism/client/nei/CombinerRecipeHandler.java +++ b/common/mekanism/client/nei/CombinerRecipeHandler.java @@ -1,11 +1,13 @@ package mekanism.client.nei; +import java.util.List; import java.util.Set; -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; import mekanism.client.gui.GuiCombiner; import mekanism.common.RecipeHandler.Recipe; +import mekanism.common.util.ListUtils; +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; public class CombinerRecipeHandler extends AdvancedMachineRecipeHandler { @@ -40,9 +42,9 @@ public class CombinerRecipeHandler extends AdvancedMachineRecipeHandler } @Override - public ItemStack getFuelStack() + public List getFuelStacks() { - return new ItemStack(Block.cobblestone); + return ListUtils.asList(new ItemStack(Block.cobblestone)); } @Override diff --git a/common/mekanism/client/nei/OsmiumCompressorRecipeHandler.java b/common/mekanism/client/nei/OsmiumCompressorRecipeHandler.java index 670cf4341..010a70505 100644 --- a/common/mekanism/client/nei/OsmiumCompressorRecipeHandler.java +++ b/common/mekanism/client/nei/OsmiumCompressorRecipeHandler.java @@ -1,11 +1,13 @@ package mekanism.client.nei; +import java.util.List; import java.util.Set; -import net.minecraft.item.ItemStack; import mekanism.client.gui.GuiOsmiumCompressor; import mekanism.common.Mekanism; import mekanism.common.RecipeHandler.Recipe; +import mekanism.common.util.ListUtils; +import net.minecraft.item.ItemStack; public class OsmiumCompressorRecipeHandler extends AdvancedMachineRecipeHandler { @@ -40,9 +42,9 @@ public class OsmiumCompressorRecipeHandler extends AdvancedMachineRecipeHandler } @Override - public ItemStack getFuelStack() + public List getFuelStacks() { - return new ItemStack(Mekanism.Ingot, 1, 1); + return ListUtils.asList(new ItemStack(Mekanism.Ingot, 1, 1), new ItemStack(Mekanism.BasicBlock, 1, 0)); } @Override diff --git a/common/mekanism/client/nei/PurificationChamberRecipeHandler.java b/common/mekanism/client/nei/PurificationChamberRecipeHandler.java index e05caa08f..dd9a22bbf 100644 --- a/common/mekanism/client/nei/PurificationChamberRecipeHandler.java +++ b/common/mekanism/client/nei/PurificationChamberRecipeHandler.java @@ -1,9 +1,13 @@ package mekanism.client.nei; +import java.util.List; import java.util.Set; +import mekanism.api.gas.GasRegistry; import mekanism.client.gui.GuiPurificationChamber; import mekanism.common.RecipeHandler.Recipe; +import mekanism.common.util.ListUtils; +import mekanism.common.util.MekanismUtils; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -40,9 +44,9 @@ public class PurificationChamberRecipeHandler extends AdvancedMachineRecipeHandl } @Override - public ItemStack getFuelStack() + public List getFuelStacks() { - return new ItemStack(Item.flint); + return ListUtils.asList(new ItemStack(Item.flint), MekanismUtils.getFullGasTank(GasRegistry.getGas("oxygen"))); } @Override diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 70e071ff6..b8ec763b6 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -761,6 +761,7 @@ public class Mekanism OreDictionary.registerOre("dustTin", new ItemStack(Dust, 1, 7)); OreDictionary.registerOre("dustSilver", new ItemStack(Dust, 1, 8)); OreDictionary.registerOre("dustLead", new ItemStack(Dust, 1, 9)); + OreDictionary.registerOre("dustSulfur", new ItemStack(Dust, 1, 10)); OreDictionary.registerOre("ingotRefinedObsidian", new ItemStack(Ingot, 1, 0)); OreDictionary.registerOre("ingotOsmium", new ItemStack(Ingot, 1, 1)); diff --git a/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java b/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java index cbb92caed..d98796ec2 100644 --- a/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java +++ b/common/mekanism/common/tileentity/TileEntityChemicalInjectionChamber.java @@ -33,7 +33,7 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr @Override public int getFuelTicks(ItemStack itemstack) { - if(itemstack.isItemEqual(new ItemStack(Item.gunpowder))) return 20; + if(itemstack.isItemEqual(new ItemStack(Item.gunpowder))) return 5; if(itemstack.itemID == Mekanism.GasTank.blockID && ((IGasItem)itemstack.getItem()).getGas(itemstack) != null && ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("sulfuricAcid")) return 1; diff --git a/common/mekanism/common/tileentity/TileEntityOsmiumCompressor.java b/common/mekanism/common/tileentity/TileEntityOsmiumCompressor.java index 035cdc86d..45d2ee95f 100644 --- a/common/mekanism/common/tileentity/TileEntityOsmiumCompressor.java +++ b/common/mekanism/common/tileentity/TileEntityOsmiumCompressor.java @@ -25,18 +25,26 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin @Override public int getFuelTicks(ItemStack itemstack) { - boolean hasOsmium = false; + int amount = 0; for(ItemStack ore : OreDictionary.getOres("ingotOsmium")) { if(ore.isItemEqual(itemstack)) { - hasOsmium = true; + amount = 200; break; } } - if(hasOsmium) return 200; - return 0; + for(ItemStack ore : OreDictionary.getOres("blockOsmium")) + { + if(ore.isItemEqual(itemstack)) + { + amount = 1800; + break; + } + } + + return amount; } } diff --git a/common/mekanism/common/util/MekanismUtils.java b/common/mekanism/common/util/MekanismUtils.java index e28c79787..ea1f35e22 100644 --- a/common/mekanism/common/util/MekanismUtils.java +++ b/common/mekanism/common/util/MekanismUtils.java @@ -16,6 +16,8 @@ import java.util.Map; import mekanism.api.Coord4D; import mekanism.api.EnumColor; +import mekanism.api.gas.Gas; +import mekanism.api.gas.GasStack; import mekanism.common.DynamicTankCache; import mekanism.common.EnergyDisplay; import mekanism.common.EnergyDisplay.ElectricUnit; @@ -1175,6 +1177,20 @@ public final class MekanismUtils return ret; } + /** + * Creates and returns a full gas tank with the specified gas type. + * @param gas - gas to fill the tank with + * @return filled gas tank + */ + public static ItemStack getFullGasTank(Gas gas) + { + ItemStack tank = getEmptyGasTank(); + ItemBlockGasTank item = (ItemBlockGasTank)tank.getItem(); + item.setGas(tank, new GasStack(gas, item.MAX_GAS)); + + return tank; + } + public static enum ResourceType { GUI("gui"),