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;
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<Entry<ItemStack, ItemStack>> getRecipes();
public abstract List<ItemStack> 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<ItemStack> 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<ItemStack> 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<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;
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<ItemStack> getFuelStacks()
{
return new ItemStack(Item.gunpowder);
return ListUtils.asList(new ItemStack(Item.gunpowder), MekanismUtils.getFullGasTank(GasRegistry.getGas("sulfuricAcid")));
}
@Override

View file

@ -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<ItemStack> getFuelStacks()
{
return new ItemStack(Block.cobblestone);
return ListUtils.asList(new ItemStack(Block.cobblestone));
}
@Override

View file

@ -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<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

View file

@ -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<ItemStack> getFuelStacks()
{
return new ItemStack(Item.flint);
return ListUtils.asList(new ItemStack(Item.flint), MekanismUtils.getFullGasTank(GasRegistry.getGas("oxygen")));
}
@Override

View file

@ -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));

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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"),