Have NEI plugin iterate over possible fuel stacks, register sulfur dust in oredict

This commit is contained in:
Aidan Brady 2014-01-02 13:00:09 -05:00
parent a5e33d0158
commit 3990ab4f42
9 changed files with 69 additions and 29 deletions

View file

@ -1,6 +1,10 @@
package mekanism.client.nei; package mekanism.client.nei;
import static codechicken.core.gui.GuiDraw.changeTexture;
import static codechicken.core.gui.GuiDraw.drawTexturedModalRect;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
@ -13,17 +17,15 @@ import codechicken.nei.NEIServerUtils;
import codechicken.nei.PositionedStack; import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler; import codechicken.nei.recipe.TemplateRecipeHandler;
import static codechicken.core.gui.GuiDraw.*;
public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler
{ {
private int ticksPassed; private int ticksPassed;
public abstract String getRecipeId(); public abstract String getRecipeId();
public abstract ItemStack getFuelStack();
public abstract Set<Entry<ItemStack, ItemStack>> getRecipes(); public abstract Set<Entry<ItemStack, ItemStack>> getRecipes();
public abstract List<ItemStack> getFuelStacks();
@Override @Override
public void drawBackground(int i) public void drawBackground(int i)
@ -67,7 +69,7 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler
{ {
for(Map.Entry irecipe : getRecipes()) for(Map.Entry irecipe : getRecipes())
{ {
arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); arecipes.add(new CachedIORecipe(irecipe, getFuelStacks()));
} }
} }
else { else {
@ -82,7 +84,7 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler
{ {
if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getValue(), result)) 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)) 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 class CachedIORecipe extends TemplateRecipeHandler.CachedRecipe
{ {
public List<ItemStack> fuelStacks;
public PositionedStack inputStack; public PositionedStack inputStack;
public PositionedStack outputStack; public PositionedStack outputStack;
public PositionedStack fuelStack;
@Override @Override
public PositionedStack getIngredient() public PositionedStack getIngredient()
@ -120,20 +123,20 @@ public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler
@Override @Override
public PositionedStack getOtherStack() 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<ItemStack> fuels)
{ {
super(); super();
inputStack = new PositionedStack(input, 40, 12); inputStack = new PositionedStack(input, 40, 12);
outputStack = new PositionedStack(output, 100, 30); 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<ItemStack> fuels)
{ {
this((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue(), fuel); this((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue(), fuels);
} }
} }
} }

View file

@ -1,9 +1,13 @@
package mekanism.client.nei; package mekanism.client.nei;
import java.util.List;
import java.util.Set; import java.util.Set;
import mekanism.api.gas.GasRegistry;
import mekanism.client.gui.GuiChemicalInjectionChamber; import mekanism.client.gui.GuiChemicalInjectionChamber;
import mekanism.common.RecipeHandler.Recipe; import mekanism.common.RecipeHandler.Recipe;
import mekanism.common.util.ListUtils;
import mekanism.common.util.MekanismUtils;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -40,9 +44,9 @@ public class ChemicalInjectionChamberRecipeHandler extends AdvancedMachineRecipe
} }
@Override @Override
public ItemStack getFuelStack() public List<ItemStack> getFuelStacks()
{ {
return new ItemStack(Item.gunpowder); return ListUtils.asList(new ItemStack(Item.gunpowder), MekanismUtils.getFullGasTank(GasRegistry.getGas("sulfuricAcid")));
} }
@Override @Override

View file

@ -1,11 +1,13 @@
package mekanism.client.nei; package mekanism.client.nei;
import java.util.List;
import java.util.Set; import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import mekanism.client.gui.GuiCombiner; import mekanism.client.gui.GuiCombiner;
import mekanism.common.RecipeHandler.Recipe; 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 public class CombinerRecipeHandler extends AdvancedMachineRecipeHandler
{ {
@ -40,9 +42,9 @@ public class CombinerRecipeHandler extends AdvancedMachineRecipeHandler
} }
@Override @Override
public ItemStack getFuelStack() public List<ItemStack> getFuelStacks()
{ {
return new ItemStack(Block.cobblestone); return ListUtils.asList(new ItemStack(Block.cobblestone));
} }
@Override @Override

View file

@ -1,11 +1,13 @@
package mekanism.client.nei; package mekanism.client.nei;
import java.util.List;
import java.util.Set; import java.util.Set;
import net.minecraft.item.ItemStack;
import mekanism.client.gui.GuiOsmiumCompressor; import mekanism.client.gui.GuiOsmiumCompressor;
import mekanism.common.Mekanism; import mekanism.common.Mekanism;
import mekanism.common.RecipeHandler.Recipe; import mekanism.common.RecipeHandler.Recipe;
import mekanism.common.util.ListUtils;
import net.minecraft.item.ItemStack;
public class OsmiumCompressorRecipeHandler extends AdvancedMachineRecipeHandler public class OsmiumCompressorRecipeHandler extends AdvancedMachineRecipeHandler
{ {
@ -40,9 +42,9 @@ public class OsmiumCompressorRecipeHandler extends AdvancedMachineRecipeHandler
} }
@Override @Override
public ItemStack getFuelStack() public List<ItemStack> getFuelStacks()
{ {
return new ItemStack(Mekanism.Ingot, 1, 1); return ListUtils.asList(new ItemStack(Mekanism.Ingot, 1, 1), new ItemStack(Mekanism.BasicBlock, 1, 0));
} }
@Override @Override

View file

@ -1,9 +1,13 @@
package mekanism.client.nei; package mekanism.client.nei;
import java.util.List;
import java.util.Set; import java.util.Set;
import mekanism.api.gas.GasRegistry;
import mekanism.client.gui.GuiPurificationChamber; import mekanism.client.gui.GuiPurificationChamber;
import mekanism.common.RecipeHandler.Recipe; import mekanism.common.RecipeHandler.Recipe;
import mekanism.common.util.ListUtils;
import mekanism.common.util.MekanismUtils;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -40,9 +44,9 @@ public class PurificationChamberRecipeHandler extends AdvancedMachineRecipeHandl
} }
@Override @Override
public ItemStack getFuelStack() public List<ItemStack> getFuelStacks()
{ {
return new ItemStack(Item.flint); return ListUtils.asList(new ItemStack(Item.flint), MekanismUtils.getFullGasTank(GasRegistry.getGas("oxygen")));
} }
@Override @Override

View file

@ -761,6 +761,7 @@ public class Mekanism
OreDictionary.registerOre("dustTin", new ItemStack(Dust, 1, 7)); OreDictionary.registerOre("dustTin", new ItemStack(Dust, 1, 7));
OreDictionary.registerOre("dustSilver", new ItemStack(Dust, 1, 8)); OreDictionary.registerOre("dustSilver", new ItemStack(Dust, 1, 8));
OreDictionary.registerOre("dustLead", new ItemStack(Dust, 1, 9)); 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("ingotRefinedObsidian", new ItemStack(Ingot, 1, 0));
OreDictionary.registerOre("ingotOsmium", new ItemStack(Ingot, 1, 1)); OreDictionary.registerOre("ingotOsmium", new ItemStack(Ingot, 1, 1));

View file

@ -33,7 +33,7 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr
@Override @Override
public int getFuelTicks(ItemStack itemstack) 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 && if(itemstack.itemID == Mekanism.GasTank.blockID && ((IGasItem)itemstack.getItem()).getGas(itemstack) != null &&
((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("sulfuricAcid")) return 1; ((IGasItem)itemstack.getItem()).getGas(itemstack).getGas() == GasRegistry.getGas("sulfuricAcid")) return 1;

View file

@ -25,18 +25,26 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin
@Override @Override
public int getFuelTicks(ItemStack itemstack) public int getFuelTicks(ItemStack itemstack)
{ {
boolean hasOsmium = false; int amount = 0;
for(ItemStack ore : OreDictionary.getOres("ingotOsmium")) for(ItemStack ore : OreDictionary.getOres("ingotOsmium"))
{ {
if(ore.isItemEqual(itemstack)) if(ore.isItemEqual(itemstack))
{ {
hasOsmium = true; amount = 200;
break; break;
} }
} }
if(hasOsmium) return 200; for(ItemStack ore : OreDictionary.getOres("blockOsmium"))
return 0; {
if(ore.isItemEqual(itemstack))
{
amount = 1800;
break;
}
}
return amount;
} }
} }

View file

@ -16,6 +16,8 @@ import java.util.Map;
import mekanism.api.Coord4D; import mekanism.api.Coord4D;
import mekanism.api.EnumColor; import mekanism.api.EnumColor;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasStack;
import mekanism.common.DynamicTankCache; import mekanism.common.DynamicTankCache;
import mekanism.common.EnergyDisplay; import mekanism.common.EnergyDisplay;
import mekanism.common.EnergyDisplay.ElectricUnit; import mekanism.common.EnergyDisplay.ElectricUnit;
@ -1175,6 +1177,20 @@ public final class MekanismUtils
return ret; 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 public static enum ResourceType
{ {
GUI("gui"), GUI("gui"),