merged blast furnace recipe handling, BF explosion crash fix, textures
@ -45,7 +45,7 @@ public class ExplosionBalefire
|
|||||||
lastposZ = nbt.getInteger(name + "lastposZ");
|
lastposZ = nbt.getInteger(name + "lastposZ");
|
||||||
radius = nbt.getInteger(name + "radius");
|
radius = nbt.getInteger(name + "radius");
|
||||||
radius2 = nbt.getInteger(name + "radius2");
|
radius2 = nbt.getInteger(name + "radius2");
|
||||||
n = nbt.getInteger(name + "n");
|
n = Math.max(nbt.getInteger(name + "n"), 1); //prevents invalid read operation
|
||||||
nlimit = nbt.getInteger(name + "nlimit");
|
nlimit = nbt.getInteger(name + "nlimit");
|
||||||
shell = nbt.getInteger(name + "shell");
|
shell = nbt.getInteger(name + "shell");
|
||||||
leg = nbt.getInteger(name + "leg");
|
leg = nbt.getInteger(name + "leg");
|
||||||
@ -66,11 +66,16 @@ public class ExplosionBalefire
|
|||||||
this.nlimit = this.radius2 * 4;
|
this.nlimit = this.radius2 * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean update()
|
public boolean update() {
|
||||||
{
|
|
||||||
|
if(n == 0) return true;
|
||||||
|
|
||||||
breakColumn(this.lastposX, this.lastposZ);
|
breakColumn(this.lastposX, this.lastposZ);
|
||||||
this.shell = (int) Math.floor((Math.sqrt(n) + 1) / 2);
|
this.shell = (int) Math.floor((Math.sqrt(n) + 1) / 2);
|
||||||
int shell2 = this.shell * 2;
|
int shell2 = this.shell * 2;
|
||||||
|
|
||||||
|
if(shell2 == 0) return true;
|
||||||
|
|
||||||
this.leg = (int) Math.floor((this.n - (shell2 - 1) * (shell2 - 1)) / shell2);
|
this.leg = (int) Math.floor((this.n - (shell2 - 1) * (shell2 - 1)) / shell2);
|
||||||
this.element = (this.n - (shell2 - 1) * (shell2 - 1)) - shell2 * this.leg - this.shell + 1;
|
this.element = (this.n - (shell2 - 1) * (shell2 - 1)) - shell2 * this.leg - this.shell + 1;
|
||||||
this.lastposX = this.leg == 0 ? this.shell : this.leg == 1 ? -this.element : this.leg == 2 ? -this.shell : this.element;
|
this.lastposX = this.leg == 0 ? this.shell : this.leg == 1 ? -this.element : this.leg == 2 ? -this.shell : this.element;
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import com.hbm.entity.projectile.EntityRainbow;
|
|||||||
import com.hbm.entity.projectile.EntityRocket;
|
import com.hbm.entity.projectile.EntityRocket;
|
||||||
import com.hbm.entity.projectile.EntityRubble;
|
import com.hbm.entity.projectile.EntityRubble;
|
||||||
import com.hbm.entity.projectile.EntitySchrab;
|
import com.hbm.entity.projectile.EntitySchrab;
|
||||||
|
import com.hbm.interfaces.Spaghetti;
|
||||||
import com.hbm.lib.ModDamageSource;
|
import com.hbm.lib.ModDamageSource;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
import com.hbm.util.ArmorRegistry;
|
import com.hbm.util.ArmorRegistry;
|
||||||
@ -42,6 +43,7 @@ import net.minecraft.util.MathHelper;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
@Spaghetti("no")
|
||||||
public class ExplosionChaos {
|
public class ExplosionChaos {
|
||||||
|
|
||||||
private final static Random random = new Random();
|
private final static Random random = new Random();
|
||||||
|
|||||||
81
src/main/java/com/hbm/handler/imc/IMCBlastFurnace.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package com.hbm.handler.imc;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
|
import com.hbm.util.Tuple.Triplet;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.nbt.NBTTagList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author UFFR
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class IMCBlastFurnace extends IMCHandler {
|
||||||
|
public static final ArrayList<Triplet<Object, Object, ItemStack>> buffer = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(IMCMessage message) {
|
||||||
|
|
||||||
|
final NBTTagCompound data = message.getNBTValue();
|
||||||
|
final NBTTagCompound outputData = data.getCompoundTag("output");
|
||||||
|
final ItemStack output = ItemStack.loadItemStackFromNBT(outputData);
|
||||||
|
|
||||||
|
if(output == null) {
|
||||||
|
printError(message, "Output stack could not be read!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Object input1;
|
||||||
|
final Object input2;
|
||||||
|
|
||||||
|
switch(data.getString("inputType1")) {
|
||||||
|
case "ore":
|
||||||
|
input1 = data.getString("input1");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "orelist":
|
||||||
|
final NBTTagList list = data.getTagList("input1", 8);
|
||||||
|
final ArrayList<String> ores = new ArrayList<String>(list.tagCount());
|
||||||
|
for(int i = 0; i < list.tagCount(); i++)
|
||||||
|
ores.add(list.getStringTagAt(i));
|
||||||
|
input1 = ores;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "itemstack":
|
||||||
|
input1 = new ComparableStack(ItemStack.loadItemStackFromNBT(data.getCompoundTag("input1")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printError(message, "Unhandled input type!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(data.getString("inputType2")) {
|
||||||
|
case "ore":
|
||||||
|
input2 = data.getString("input2");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "orelist":
|
||||||
|
final NBTTagList list = data.getTagList("input2", 9);
|
||||||
|
final ArrayList<String> ores = new ArrayList<String>(list.tagCount());
|
||||||
|
for(int i = 0; i < list.tagCount(); i++)
|
||||||
|
ores.add(list.getStringTagAt(i));
|
||||||
|
input2 = ores;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "itemstack":
|
||||||
|
input2 = new ComparableStack(ItemStack.loadItemStackFromNBT(data.getCompoundTag("input2")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printError(message, "Unhandled input type!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer.add(new Triplet<Object, Object, ItemStack>(input1, input2, output));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,8 +5,10 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import com.hbm.inventory.gui.GUITestDiFurnace;
|
import com.hbm.inventory.gui.GUITestDiFurnace;
|
||||||
|
import com.hbm.inventory.recipes.BlastFurnaceRecipes;
|
||||||
import com.hbm.inventory.recipes.MachineRecipes;
|
import com.hbm.inventory.recipes.MachineRecipes;
|
||||||
|
|
||||||
import codechicken.nei.NEIServerUtils;
|
import codechicken.nei.NEIServerUtils;
|
||||||
@ -17,47 +19,43 @@ import net.minecraft.item.ItemStack;
|
|||||||
|
|
||||||
public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler {
|
public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler {
|
||||||
|
|
||||||
public static ArrayList<Fuel> fuels;
|
public static ArrayList<Fuel> fuels;
|
||||||
|
|
||||||
public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe
|
public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe {
|
||||||
{
|
PositionedStack input1;
|
||||||
PositionedStack input1;
|
|
||||||
PositionedStack input2;
|
PositionedStack input2;
|
||||||
PositionedStack result;
|
PositionedStack result;
|
||||||
|
|
||||||
public SmeltingSet(ItemStack input1, ItemStack input2, ItemStack result) {
|
public SmeltingSet(List<ItemStack> list, List<ItemStack> list2, ItemStack result) {
|
||||||
input1.stackSize = 1;
|
this.input1 = new PositionedStack(list, 75, 7);
|
||||||
input2.stackSize = 1;
|
this.input2 = new PositionedStack(list2, 75, 43);
|
||||||
this.input1 = new PositionedStack(input1, 75, 7);
|
this.result = new PositionedStack(result, 129, 25);
|
||||||
this.input2 = new PositionedStack(input2, 75, 43);
|
}
|
||||||
this.result = new PositionedStack(result, 129, 25);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PositionedStack> getIngredients() {
|
public List<PositionedStack> getIngredients() {
|
||||||
return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] {input1, input2}));
|
return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] { input1, input2 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PositionedStack getOtherStack() {
|
public PositionedStack getOtherStack() {
|
||||||
return fuels.get((cycleticks / 48) % fuels.size()).stack;
|
return fuels.get((cycleticks / 48) % fuels.size()).stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PositionedStack getResult() {
|
public PositionedStack getResult() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Fuel
|
public static class Fuel {
|
||||||
{
|
public Fuel(ItemStack ingred) {
|
||||||
public Fuel(ItemStack ingred) {
|
|
||||||
|
|
||||||
this.stack = new PositionedStack(ingred, 3, 25, false);
|
this.stack = new PositionedStack(ingred, 3, 25, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PositionedStack stack;
|
public PositionedStack stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRecipeName() {
|
public String getRecipeName() {
|
||||||
@ -71,10 +69,10 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||||
if ((outputId.equals("alloysmelting")) && getClass() == AlloyFurnaceRecipeHandler.class) {
|
if((outputId.equals("alloysmelting")) && getClass() == AlloyFurnaceRecipeHandler.class) {
|
||||||
Map<Object[], Object> recipes = MachineRecipes.instance().getAlloyRecipes();
|
Map<List<ItemStack>[], ItemStack> recipes = BlastFurnaceRecipes.getRecipesForNEI();
|
||||||
for (Map.Entry<Object[], Object> recipe : recipes.entrySet()) {
|
for(Entry<List<ItemStack>[], ItemStack> recipe : recipes.entrySet()) {
|
||||||
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue()));
|
this.arecipes.add(new SmeltingSet(recipe.getKey()[0], recipe.getKey()[1], recipe.getValue()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
super.loadCraftingRecipes(outputId, results);
|
super.loadCraftingRecipes(outputId, results);
|
||||||
@ -83,16 +81,16 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadCraftingRecipes(ItemStack result) {
|
public void loadCraftingRecipes(ItemStack result) {
|
||||||
Map<Object[], Object> recipes = MachineRecipes.instance().getAlloyRecipes();
|
Map<List<ItemStack>[], ItemStack> recipes = BlastFurnaceRecipes.getRecipesForNEI();
|
||||||
for (Map.Entry<Object[], Object> recipe : recipes.entrySet()) {
|
for(Entry<List<ItemStack>[], ItemStack> recipe : recipes.entrySet()) {
|
||||||
if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result))
|
if(NEIServerUtils.areStacksSameType(recipe.getValue(), result))
|
||||||
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue()));
|
this.arecipes.add(new SmeltingSet(recipe.getKey()[0], recipe.getKey()[1], recipe.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadUsageRecipes(String inputId, Object... ingredients) {
|
public void loadUsageRecipes(String inputId, Object... ingredients) {
|
||||||
if ((inputId.equals("alloysmelting")) && getClass() == AlloyFurnaceRecipeHandler.class) {
|
if((inputId.equals("alloysmelting")) && getClass() == AlloyFurnaceRecipeHandler.class) {
|
||||||
loadCraftingRecipes("alloysmelting", new Object[0]);
|
loadCraftingRecipes("alloysmelting", new Object[0]);
|
||||||
} else {
|
} else {
|
||||||
super.loadUsageRecipes(inputId, ingredients);
|
super.loadUsageRecipes(inputId, ingredients);
|
||||||
@ -101,41 +99,43 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadUsageRecipes(ItemStack ingredient) {
|
public void loadUsageRecipes(ItemStack ingredient) {
|
||||||
Map<Object[], Object> recipes = MachineRecipes.instance().getAlloyRecipes();
|
Map<List<ItemStack>[], ItemStack> recipes = BlastFurnaceRecipes.getRecipesForNEI();
|
||||||
for (Map.Entry<Object[], Object> recipe : recipes.entrySet()) {
|
for(Entry<List<ItemStack>[], ItemStack> recipe : recipes.entrySet()) {
|
||||||
if (NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[0]) || NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[1]))
|
List<ItemStack> combined = new ArrayList<ItemStack>();
|
||||||
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue()));
|
combined.addAll(recipe.getKey()[0]);
|
||||||
|
combined.addAll(recipe.getKey()[1]);
|
||||||
|
for(ItemStack combinedStack : combined)
|
||||||
|
if(NEIServerUtils.areStacksSameType(ingredient, combinedStack) || NEIServerUtils.areStacksSameType(ingredient, combinedStack))
|
||||||
|
this.arecipes.add(new SmeltingSet(recipe.getKey()[0], recipe.getKey()[1], recipe.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<? extends GuiContainer> getGuiClass() {
|
public Class<? extends GuiContainer> getGuiClass() {
|
||||||
return GUITestDiFurnace.class;
|
return GUITestDiFurnace.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadTransferRects() {
|
public void loadTransferRects() {
|
||||||
transferRects.add(new RecipeTransferRect(new Rectangle(96, 25, 24, 18), "alloysmelting"));
|
transferRects.add(new RecipeTransferRect(new Rectangle(96, 25, 24, 18), "alloysmelting"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawExtras(int recipe) {
|
public void drawExtras(int recipe) {
|
||||||
drawProgressBar(57, 26, 176, 0, 14, 14, 48, 7);
|
drawProgressBar(57, 26, 176, 0, 14, 14, 48, 7);
|
||||||
|
|
||||||
drawProgressBar(96, 24, 176, 14, 24, 16, 48, 0);
|
drawProgressBar(96, 24, 176, 14, 24, 16, 48, 0);
|
||||||
|
|
||||||
drawProgressBar(39, 7, 201, 0, 16, 52, 480, 7);
|
drawProgressBar(39, 7, 201, 0, 16, 52, 480, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TemplateRecipeHandler newInstance() {
|
|
||||||
if (fuels == null || fuels.isEmpty())
|
|
||||||
fuels = new ArrayList<Fuel>();
|
|
||||||
for(ItemStack i : MachineRecipes.instance().getAlloyFuels())
|
|
||||||
{
|
|
||||||
fuels.add(new Fuel(i));
|
|
||||||
}
|
|
||||||
return super.newInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TemplateRecipeHandler newInstance() {
|
||||||
|
if(fuels == null || fuels.isEmpty())
|
||||||
|
fuels = new ArrayList<Fuel>();
|
||||||
|
for(ItemStack i : MachineRecipes.instance().getAlloyFuels()) {
|
||||||
|
fuels.add(new Fuel(i));
|
||||||
|
}
|
||||||
|
return super.newInstance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
171
src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
package com.hbm.inventory.recipes;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.CheckForNull;
|
||||||
|
|
||||||
|
import static com.hbm.inventory.OreDictManager.*;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.config.GeneralConfig;
|
||||||
|
import com.hbm.handler.imc.IMCBlastFurnace;
|
||||||
|
import com.hbm.inventory.RecipesCommon.AStack;
|
||||||
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
|
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
import com.hbm.util.Tuple.Triplet;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magic!
|
||||||
|
*
|
||||||
|
* @author UFFR
|
||||||
|
*/
|
||||||
|
public class BlastFurnaceRecipes {
|
||||||
|
|
||||||
|
private static final ArrayList<Triplet<Object, Object, ItemStack>> blastFurnaceRecipes = new ArrayList<Triplet<Object, Object, ItemStack>>();
|
||||||
|
private static final ArrayList<ItemStack> hiddenRecipes = new ArrayList<ItemStack>();
|
||||||
|
|
||||||
|
private static void addRecipe(Object in1, Object in2, ItemStack out) {
|
||||||
|
blastFurnaceRecipes.add(new Triplet<Object, Object, ItemStack>(in1, in2, out));
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
addRecipe(IRON, COAL, new ItemStack(ModItems.ingot_steel, 2));
|
||||||
|
addRecipe(IRON, ANY_COKE, new ItemStack(ModItems.ingot_steel, 2));
|
||||||
|
addRecipe(CU, REDSTONE, new ItemStack(ModItems.ingot_red_copper, 2));
|
||||||
|
addRecipe(STEEL, MINGRADE, new ItemStack(ModItems.ingot_advanced_alloy, 2));
|
||||||
|
addRecipe(W, COAL, new ItemStack(ModItems.neutron_reflector, 2));
|
||||||
|
addRecipe(W, ANY_COKE, new ItemStack(ModItems.neutron_reflector, 2));
|
||||||
|
addRecipe(ModItems.canister_fuel, "slimeball", new ItemStack(ModItems.canister_napalm));
|
||||||
|
addRecipe(STEEL, CO, new ItemStack(ModItems.ingot_dura_steel, 2));
|
||||||
|
addRecipe(STEEL, W, new ItemStack(ModItems.ingot_dura_steel, 2));
|
||||||
|
addRecipe(STEEL, U238, new ItemStack(ModItems.ingot_ferrouranium));
|
||||||
|
addRecipe(W, SA326.nugget(), new ItemStack(ModItems.ingot_magnetized_tungsten));
|
||||||
|
addRecipe(STEEL, TC99.nugget(), new ItemStack(ModItems.ingot_tcalloy));
|
||||||
|
addRecipe(GOLD.plate(), ModItems.plate_mixed, new ItemStack(ModItems.plate_paa, 2));
|
||||||
|
addRecipe(BIGMT, ModItems.powder_meteorite, new ItemStack(ModItems.ingot_starmetal, 2));
|
||||||
|
addRecipe(CO, ModBlocks.block_meteor, new ItemStack(ModItems.ingot_meteorite));
|
||||||
|
addRecipe(ModItems.meteorite_sword_hardened, CO, new ItemStack(ModItems.meteorite_sword_alloyed));
|
||||||
|
addRecipe(ModBlocks.block_meteor, CO, new ItemStack(ModItems.ingot_meteorite));
|
||||||
|
|
||||||
|
if(GeneralConfig.enableLBSMSimpleChemsitry)
|
||||||
|
addRecipe(ModItems.canister_empty, COAL, new ItemStack(ModItems.canister_oil));
|
||||||
|
|
||||||
|
if(!IMCBlastFurnace.buffer.isEmpty()) {
|
||||||
|
blastFurnaceRecipes.addAll(IMCBlastFurnace.buffer);
|
||||||
|
MainRegistry.logger.info("Fetched " + IMCBlastFurnace.buffer.size() + " IMC blast furnace recipes!");
|
||||||
|
IMCBlastFurnace.buffer.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
hiddenRecipes.add(new ItemStack(ModItems.meteorite_sword_alloyed));
|
||||||
|
}
|
||||||
|
|
||||||
|
@CheckForNull
|
||||||
|
public static ItemStack getOutput(ItemStack in1, ItemStack in2) {
|
||||||
|
for(Triplet<Object, Object, ItemStack> recipe : blastFurnaceRecipes) {
|
||||||
|
final AStack[] recipeItem1 = getRecipeStacks(recipe.getX());
|
||||||
|
final AStack[] recipeItem2 = getRecipeStacks(recipe.getY());
|
||||||
|
|
||||||
|
if((doStacksMatch(recipeItem1, in1) && doStacksMatch(recipeItem2, in2)) || (doStacksMatch(recipeItem2, in1) && doStacksMatch(recipeItem1, in2)))
|
||||||
|
return recipe.getZ().copy();
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean doStacksMatch(AStack[] recipe, ItemStack in) {
|
||||||
|
boolean flag = false;
|
||||||
|
byte i = 0;
|
||||||
|
while(!flag && i < recipe.length) {
|
||||||
|
flag = recipe[i].matchesRecipe(in, true);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static AStack[] getRecipeStacks(Object in) {
|
||||||
|
final AStack[] recipeItem1;
|
||||||
|
if(in instanceof DictFrame) {
|
||||||
|
DictFrame recipeItem = (DictFrame) in;
|
||||||
|
recipeItem1 = new AStack[] { new OreDictStack(recipeItem.ingot()), new OreDictStack(recipeItem.dust()), new OreDictStack(recipeItem.plate()), new OreDictStack(recipeItem.gem()) };
|
||||||
|
} else if(in instanceof AStack)
|
||||||
|
recipeItem1 = new AStack[] { (AStack) in };
|
||||||
|
else if(in instanceof String)
|
||||||
|
recipeItem1 = new AStack[] { new OreDictStack((String) in) };
|
||||||
|
else if(in instanceof Block)
|
||||||
|
recipeItem1 = new AStack[] { new ComparableStack((Block) in) };
|
||||||
|
else if(in instanceof List<?>) {
|
||||||
|
List<?> oreList = (List<?>) in;
|
||||||
|
recipeItem1 = new AStack[oreList.size()];
|
||||||
|
for(int i = 0; i < oreList.size(); i++)
|
||||||
|
recipeItem1[i] = new OreDictStack((String) oreList.get(i));
|
||||||
|
} else
|
||||||
|
recipeItem1 = new AStack[] { new ComparableStack((Item) in) };
|
||||||
|
|
||||||
|
return recipeItem1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<List<ItemStack>[], ItemStack> getRecipesForNEI() {
|
||||||
|
final HashMap<List<ItemStack>[], ItemStack> recipes = new HashMap<>();
|
||||||
|
|
||||||
|
for(Triplet<Object, Object, ItemStack> recipe : blastFurnaceRecipes) {
|
||||||
|
if(!hiddenRecipes.contains(recipe.getZ())) {
|
||||||
|
final ItemStack nothing = new ItemStack(ModItems.nothing).setStackDisplayName("If you're reading this, an error has occured! Check the console.");
|
||||||
|
final List<ItemStack> in1 = new ArrayList<ItemStack>();
|
||||||
|
final List<ItemStack> in2 = new ArrayList<ItemStack>();
|
||||||
|
in1.add(nothing);
|
||||||
|
in2.add(nothing);
|
||||||
|
|
||||||
|
for(AStack stack : getRecipeStacks(recipe.getX())) {
|
||||||
|
if(stack.extractForNEI().isEmpty())
|
||||||
|
continue;
|
||||||
|
else {
|
||||||
|
in1.remove(nothing);
|
||||||
|
in1.addAll(stack.extractForNEI());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(in1.contains(nothing)) {
|
||||||
|
MainRegistry.logger.error("Blast furnace cannot compile recipes for NEI: apparent nonexistent item #1 in recipe for item: " + recipe.getZ().getDisplayName());
|
||||||
|
}
|
||||||
|
for(AStack stack : getRecipeStacks(recipe.getY())) {
|
||||||
|
if(stack.extractForNEI().isEmpty()) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
in2.remove(nothing);
|
||||||
|
in2.addAll(stack.extractForNEI());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(in2.contains(nothing)) {
|
||||||
|
MainRegistry.logger.error("Blast furnace cannot compile recipes for NEI: apparent nonexistent item #2 in recipe for item: " + recipe.getZ().getDisplayName());
|
||||||
|
}
|
||||||
|
|
||||||
|
final List<ItemStack>[] inputs = new List[2];
|
||||||
|
inputs[0] = in1;
|
||||||
|
inputs[1] = in2;
|
||||||
|
recipes.put(inputs, recipe.getZ());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ImmutableMap.copyOf(recipes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Triplet<AStack[], AStack[], ItemStack>> getRecipes() {
|
||||||
|
|
||||||
|
final List<Triplet<AStack[], AStack[], ItemStack>> subRecipes = new ArrayList<>();
|
||||||
|
for(Triplet<Object, Object, ItemStack> recipe : blastFurnaceRecipes)
|
||||||
|
subRecipes.add(new Triplet<AStack[], AStack[], ItemStack>(getRecipeStacks(recipe.getX()), getRecipeStacks(recipe.getY()), recipe.getZ()));
|
||||||
|
return ImmutableList.copyOf(subRecipes);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,22 +2,14 @@ package com.hbm.inventory.recipes;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.hbm.blocks.ModBlocks;
|
|
||||||
import com.hbm.config.GeneralConfig;
|
|
||||||
import com.hbm.interfaces.Spaghetti;
|
import com.hbm.interfaces.Spaghetti;
|
||||||
import com.hbm.inventory.FluidContainer;
|
import com.hbm.inventory.FluidContainer;
|
||||||
import com.hbm.inventory.FluidContainerRegistry;
|
import com.hbm.inventory.FluidContainerRegistry;
|
||||||
import com.hbm.inventory.fluid.FluidType;
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
import com.hbm.inventory.fluid.Fluids;
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.weapon.ItemGunBase;
|
|
||||||
import com.hbm.main.MainRegistry;
|
|
||||||
import com.hbm.util.EnchantmentUtil;
|
|
||||||
|
|
||||||
import net.minecraft.enchantment.Enchantment;
|
|
||||||
import net.minecraft.enchantment.EnchantmentHelper;
|
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
@ -26,139 +18,13 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
//TODO: clean this shit up
|
//TODO: clean this shit up
|
||||||
@Spaghetti("everything")
|
@Spaghetti("i cannot sleep well at night knowing that this class still exists")
|
||||||
public class MachineRecipes {
|
public class MachineRecipes {
|
||||||
|
|
||||||
public MachineRecipes() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MachineRecipes instance() {
|
public static MachineRecipes instance() {
|
||||||
return new MachineRecipes();
|
return new MachineRecipes();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack getFurnaceProcessingResult(ItemStack item, ItemStack item2) {
|
|
||||||
return getFurnaceOutput(item, item2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Spaghetti("i am an affront to god and i desire to be cremated")
|
|
||||||
public static ItemStack getFurnaceOutput(ItemStack item, ItemStack item2) {
|
|
||||||
|
|
||||||
if(item == null || item2 == null)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
if (GeneralConfig.enableDebugMode) {
|
|
||||||
if (item.getItem() == Items.iron_ingot && item2.getItem() == Items.quartz
|
|
||||||
|| item.getItem() == Items.quartz && item2.getItem() == Items.iron_ingot) {
|
|
||||||
return new ItemStack(ModBlocks.test_render, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotTungsten", "dustTungsten"}) && mODE(item2, "gemCoal")
|
|
||||||
|| mODE(item, "gemCoal") && mODE(item2, new String[] {"ingotTungsten", "dustTungsten"})) {
|
|
||||||
return new ItemStack(ModItems.neutron_reflector, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotIron", "dustIron"}) && mODE(item2, new String[] {"gemCoal", "dustCoal"})
|
|
||||||
|| mODE(item, new String[] {"gemCoal", "dustCoal"}) && mODE(item2, new String[] {"ingotIron", "dustIron"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_steel, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotCopper", "dustCopper"}) && item2.getItem() == Items.redstone
|
|
||||||
|| item.getItem() == Items.redstone && mODE(item2, new String[] {"ingotCopper", "dustCopper"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_red_copper, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.getItem() == ModItems.canister_full && item.getItemDamage() == Fluids.DIESEL.getID() && item2.getItem() == Items.slime_ball
|
|
||||||
|| item.getItem() == Items.slime_ball && item2.getItem() == ModItems.canister_full && item2.getItemDamage() == Fluids.DIESEL.getID()) {
|
|
||||||
return new ItemStack(ModItems.canister_napalm, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotMingrade", "dustMingrade"}) && mODE(item2, new String[] {"ingotSteel", "dustSteel"})
|
|
||||||
|| mODE(item, new String[] {"ingotSteel", "dustSteel"}) && mODE(item2, new String[] {"ingotMingrade", "dustMingrade"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_advanced_alloy, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotTungsten", "dustTungsten"}) && mODE(item2, "nuggetSchrabidium")
|
|
||||||
|| mODE(item, "nuggetSchrabidium") && mODE(item2, new String[] {"ingotTungsten", "dustTungsten"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_magnetized_tungsten, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotSteel", "dustSteel"}) && mODE(item2, new String[] {"nuggetTechnetium99", "tinyTc99"})
|
|
||||||
|| mODE(item, new String[] {"nuggetTechnetium99", "tinyTc99"}) && mODE(item2, new String[] {"ingotSteel", "dustSteel"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_tcalloy, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.getItem() == ModItems.plate_mixed && mODE(item2, "plateGold")
|
|
||||||
|| mODE(item, "plateGold") && item2.getItem() == ModItems.plate_mixed) {
|
|
||||||
return new ItemStack(ModItems.plate_paa, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotSteel", "dustSteel"}) && mODE(item2, new String[] {"ingotTungsten", "dustTungsten"})
|
|
||||||
|| mODE(item, new String[] {"ingotTungsten", "dustTungsten"}) && mODE(item2, new String[] {"ingotSteel", "dustSteel"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_dura_steel, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotSteel", "dustSteel"}) && mODE(item2, new String[] {"ingotCobalt", "dustCobalt"})
|
|
||||||
|| mODE(item, new String[] {"ingotCobalt", "dustCobalt"}) && mODE(item2, new String[] {"ingotSteel", "dustSteel"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_dura_steel, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, new String[] {"ingotSaturnite", "dustSaturnite"}) && item2.getItem() == ModItems.powder_meteorite
|
|
||||||
|| item.getItem() == ModItems.powder_meteorite && mODE(item2, new String[] {"ingotSaturnite", "dustSaturnite"})) {
|
|
||||||
return new ItemStack(ModItems.ingot_starmetal, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleAlloy) {
|
|
||||||
if(mODE(item, new String[] { "gemCoal", "dustCoal" }) && item2.getItem() == ModItems.canister_empty
|
|
||||||
|| item.getItem() == ModItems.canister_empty && mODE(item2, new String[] { "gemCoal", "dustCoal" })) {
|
|
||||||
return new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID());
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor_cobble) && mODE(item2, new String[] { "ingotSteel", "dustSteel" })
|
|
||||||
|| mODE(item, new String[] { "ingotSteel", "dustSteel" }) && item2.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor_cobble)) {
|
|
||||||
return new ItemStack(ModItems.ingot_meteorite);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor) && mODE(item2, new String[] {"ingotCobalt", "dustCobalt"})
|
|
||||||
|| mODE(item, new String[] {"ingotCobalt", "dustCobalt"}) && item2.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor)) {
|
|
||||||
return new ItemStack(ModItems.ingot_meteorite);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mODE(item, "ingotUranium238") && mODE(item2, new String[] {"ingotSteel", "dustSteel"})
|
|
||||||
|| mODE(item, new String[] {"ingotSteel", "dustSteel"}) && mODE(item2, "ingotUranium238")) {
|
|
||||||
return new ItemStack(ModItems.ingot_ferrouranium, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.getItem() == ModItems.meteorite_sword_hardened && mODE(item2, new String[] {"ingotCobalt", "dustCobalt"})
|
|
||||||
|| mODE(item, new String[] {"ingotCobalt", "dustCobalt"}) && item2.getItem() == ModItems.meteorite_sword_hardened) {
|
|
||||||
return new ItemStack(ModItems.meteorite_sword_alloyed, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() instanceof ItemGunBase && item2.getItem() == Items.enchanted_book) {
|
|
||||||
|
|
||||||
ItemStack result = item.copy();
|
|
||||||
|
|
||||||
Map mapright = EnchantmentHelper.getEnchantments(item2);
|
|
||||||
Iterator itr = mapright.keySet().iterator();
|
|
||||||
|
|
||||||
while (itr.hasNext()) {
|
|
||||||
|
|
||||||
int i = ((Integer)itr.next()).intValue();
|
|
||||||
int j = ((Integer)mapright.get(Integer.valueOf(i))).intValue();
|
|
||||||
Enchantment e = Enchantment.enchantmentsList[i];
|
|
||||||
|
|
||||||
EnchantmentUtil.removeEnchantment(result, e);
|
|
||||||
EnchantmentUtil.addEnchantment(result, e, j);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
//return: FluidType, amount produced, amount required, heat required (°C * 100)
|
//return: FluidType, amount produced, amount required, heat required (°C * 100)
|
||||||
public static Object[] getBoilerOutput(FluidType type) {
|
public static Object[] getBoilerOutput(FluidType type) {
|
||||||
|
|
||||||
@ -402,54 +268,6 @@ public class MachineRecipes {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Object[], Object> getAlloyRecipes() {
|
|
||||||
Map<Object[], Object> recipes = new HashMap<Object[], Object>();
|
|
||||||
|
|
||||||
if (GeneralConfig.enableDebugMode) {
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(Items.iron_ingot), new ItemStack(Items.quartz) },
|
|
||||||
new ItemStack(Item.getItemFromBlock(ModBlocks.test_render)));
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(Items.iron_ingot), new ItemStack(Items.coal) },
|
|
||||||
getFurnaceOutput(new ItemStack(Items.iron_ingot), new ItemStack(Items.coal)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_tungsten), new ItemStack(Items.coal) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_tungsten), new ItemStack(Items.coal)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_copper), new ItemStack(Items.redstone) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_copper), new ItemStack(Items.redstone)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_red_copper), new ItemStack(ModItems.ingot_steel) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_red_copper), new ItemStack(ModItems.ingot_steel)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_full, 1, Fluids.DIESEL.getID()), new ItemStack(Items.slime_ball) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.canister_full, 1, Fluids.DIESEL.getID()), new ItemStack(Items.slime_ball)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_tungsten), new ItemStack(ModItems.nugget_schrabidium) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_tungsten), new ItemStack(ModItems.nugget_schrabidium)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.plate_mixed), new ItemStack(ModItems.plate_gold) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.plate_mixed), new ItemStack(ModItems.plate_gold)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.ingot_tungsten) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.ingot_tungsten)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.ingot_cobalt) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.ingot_cobalt)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_saturnite), new ItemStack(ModItems.powder_meteorite) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_saturnite), new ItemStack(ModItems.powder_meteorite)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.nugget_technetium) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.nugget_technetium)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_cobalt), new ItemStack(ModBlocks.block_meteor) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_cobalt), new ItemStack(ModBlocks.block_meteor)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.ingot_u238) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.ingot_u238)).copy());
|
|
||||||
|
|
||||||
if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleAlloy) {
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_empty), new ItemStack(Items.coal) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModItems.canister_empty), new ItemStack(Items.coal)).copy());
|
|
||||||
recipes.put(new ItemStack[] { new ItemStack(ModBlocks.block_meteor_cobble), new ItemStack(ModItems.ingot_steel) },
|
|
||||||
getFurnaceOutput(new ItemStack(ModBlocks.block_meteor_cobble), new ItemStack(ModItems.ingot_steel)).copy());
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception x) {
|
|
||||||
MainRegistry.logger.error("Unable to register alloy recipes for NEI!");
|
|
||||||
}
|
|
||||||
return recipes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<ItemStack> getAlloyFuels() {
|
public ArrayList<ItemStack> getAlloyFuels() {
|
||||||
ArrayList<ItemStack> fuels = new ArrayList<ItemStack>();
|
ArrayList<ItemStack> fuels = new ArrayList<ItemStack>();
|
||||||
fuels.add(new ItemStack(Items.coal));
|
fuels.add(new ItemStack(Items.coal));
|
||||||
@ -466,19 +284,7 @@ public class MachineRecipes {
|
|||||||
return fuels;
|
return fuels;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<ItemStack> getCentrifugeFuels() {
|
@Spaghetti("why did i do this?")
|
||||||
ArrayList<ItemStack> fuels = new ArrayList<ItemStack>();
|
|
||||||
fuels.add(new ItemStack(Items.coal));
|
|
||||||
fuels.add(new ItemStack(Item.getItemFromBlock(Blocks.coal_block)));
|
|
||||||
fuels.add(new ItemStack(Items.lava_bucket));
|
|
||||||
fuels.add(new ItemStack(Items.redstone));
|
|
||||||
fuels.add(new ItemStack(Item.getItemFromBlock(Blocks.redstone_block)));
|
|
||||||
fuels.add(new ItemStack(Item.getItemFromBlock(Blocks.netherrack)));
|
|
||||||
fuels.add(new ItemStack(Items.blaze_rod));
|
|
||||||
fuels.add(new ItemStack(Items.blaze_powder));
|
|
||||||
return fuels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<Object[], Object> getCyclotronRecipes() {
|
public Map<Object[], Object> getCyclotronRecipes() {
|
||||||
Map<Object[], Object> recipes = new HashMap<Object[], Object>();
|
Map<Object[], Object> recipes = new HashMap<Object[], Object>();
|
||||||
Item part = ModItems.part_lithium;
|
Item part = ModItems.part_lithium;
|
||||||
@ -796,240 +602,9 @@ public class MachineRecipes {
|
|||||||
return recipes;
|
return recipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
//keep this
|
/*
|
||||||
//like in a museum or something
|
* this is the smoldering crater where once the 2016 shredder recipe code was
|
||||||
//this is a testament of my incompetence
|
*/
|
||||||
//look at it
|
|
||||||
//look at how horrifying it is
|
|
||||||
//children, never do this
|
|
||||||
/*public class ShredderRecipe {
|
|
||||||
|
|
||||||
public ItemStack input;
|
|
||||||
public ItemStack output;
|
|
||||||
|
|
||||||
public void registerEverythingImSrs() {
|
|
||||||
|
|
||||||
String[] names = OreDictionary.getOreNames();
|
|
||||||
List<ItemStack> stacks = new ArrayList<ItemStack>();
|
|
||||||
|
|
||||||
for(int i = 0; i < names.length; i++) {
|
|
||||||
stacks.addAll(OreDictionary.getOres(names[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < stacks.size(); i++) {
|
|
||||||
|
|
||||||
int[] ids = OreDictionary.getOreIDs(stacks.get(i));
|
|
||||||
|
|
||||||
List<String> oreNames = new ArrayList<String>();
|
|
||||||
|
|
||||||
for(int j = 0; j < ids.length; j++) {
|
|
||||||
oreNames.add(OreDictionary.getOreName(ids[j]));
|
|
||||||
}
|
|
||||||
|
|
||||||
theWholeThing.add(new DictCouple(stacks.get(i), oreNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
MainRegistry.logger.info("Added " + theWholeThing.size() + " elements from the Ore Dict!");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean doesExist(ItemStack stack) {
|
|
||||||
|
|
||||||
for(DictCouple dic : theWholeThing) {
|
|
||||||
if(dic.item.getItem() == stack.getItem() && dic.item.getItemDamage() == stack.getItemDamage())
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addRecipes() {
|
|
||||||
|
|
||||||
// Not very efficient, I know, but at least it works AND it's
|
|
||||||
// somewhat smart!
|
|
||||||
|
|
||||||
for(int i = 0; i < theWholeThing.size(); i++)
|
|
||||||
{
|
|
||||||
for(int j = 0; j < theWholeThing.get(i).list.size(); j++)
|
|
||||||
{
|
|
||||||
String s = theWholeThing.get(i).list.get(j);
|
|
||||||
|
|
||||||
if (s.length() > 5 && s.substring(0, 5).equals("ingot")) {
|
|
||||||
ItemStack stack = canFindDustByName(s.substring(5));
|
|
||||||
if (stack != null) {
|
|
||||||
setRecipe(theWholeThing.get(i).item, stack);
|
|
||||||
} else {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
}
|
|
||||||
} else if (s.length() > 3 && s.substring(0, 3).equals("ore")) {
|
|
||||||
ItemStack stack = canFindDustByName(s.substring(3));
|
|
||||||
if (stack != null) {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(stack.getItem(), 2, stack.getItemDamage()));
|
|
||||||
} else {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
}
|
|
||||||
} else if (s.length() > 5 && s.substring(0, 5).equals("block")) {
|
|
||||||
ItemStack stack = canFindDustByName(s.substring(5));
|
|
||||||
if (stack != null) {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(stack.getItem(), 9, stack.getItemDamage()));
|
|
||||||
} else {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
}
|
|
||||||
} else if (s.length() > 3 && s.substring(0, 3).equals("gem")) {
|
|
||||||
ItemStack stack = canFindDustByName(s.substring(3));
|
|
||||||
if (stack != null) {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(stack.getItem(), 1, stack.getItemDamage()));
|
|
||||||
} else {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
}
|
|
||||||
} else if (s.length() > 4 && s.substring(0, 4).equals("dust")) {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.dust));
|
|
||||||
} else if (s.length() > 6 && s.substring(0, 6).equals("powder")) {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.dust));
|
|
||||||
} else {
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(theWholeThing.get(i).list.isEmpty())
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
if(!theWholeThing.get(i).list.isEmpty() && theWholeThing.get(i).list.get(0).equals("Unknown"))
|
|
||||||
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
|
|
||||||
}
|
|
||||||
|
|
||||||
MainRegistry.logger.info("Added " + recipesShredder.size() + " in total.");
|
|
||||||
MainRegistry.logger.info("Added " + dustCount + " ore dust recipes.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack canFindDustByName(String s) {
|
|
||||||
|
|
||||||
for(DictCouple d : theWholeThing)
|
|
||||||
{
|
|
||||||
for(String s1 : d.list)
|
|
||||||
{
|
|
||||||
if(s1.length() > 4 && s1.substring(0, 4).equals("dust") && s1.substring(4).equals(s))
|
|
||||||
{
|
|
||||||
dustCount++;
|
|
||||||
return d.item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecipe(ItemStack inp, ItemStack outp) {
|
|
||||||
ShredderRecipe recipe = new ShredderRecipe();
|
|
||||||
|
|
||||||
recipe.input = inp;
|
|
||||||
recipe.output = outp;
|
|
||||||
|
|
||||||
recipesShredder.add(recipe);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void overridePreSetRecipe(ItemStack inp, ItemStack outp) {
|
|
||||||
|
|
||||||
boolean flag = false;
|
|
||||||
|
|
||||||
for(int i = 0; i < recipesShredder.size(); i++)
|
|
||||||
{
|
|
||||||
if(recipesShredder.get(i) != null &&
|
|
||||||
recipesShredder.get(i).input != null &&
|
|
||||||
recipesShredder.get(i).output != null &&
|
|
||||||
inp != null &&
|
|
||||||
outp != null &&
|
|
||||||
recipesShredder.get(i).input.getItem() == inp.getItem() &&
|
|
||||||
recipesShredder.get(i).input.getItemDamage() == inp.getItemDamage()) {
|
|
||||||
recipesShredder.get(i).output = outp;
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!flag) {
|
|
||||||
ShredderRecipe rec = new ShredderRecipe();
|
|
||||||
rec.input = inp;
|
|
||||||
rec.output = outp;
|
|
||||||
recipesShredder.add(rec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeDuplicates() {
|
|
||||||
List<ShredderRecipe> newList = new ArrayList<ShredderRecipe>();
|
|
||||||
|
|
||||||
for(ShredderRecipe piv : recipesShredder)
|
|
||||||
{
|
|
||||||
boolean flag = false;
|
|
||||||
|
|
||||||
if(newList.size() == 0)
|
|
||||||
{
|
|
||||||
newList.add(piv);
|
|
||||||
} else {
|
|
||||||
for(ShredderRecipe rec : newList) {
|
|
||||||
if(piv != null && rec != null && piv.input != null && rec.input != null && rec.input.getItem() != null && piv.input.getItem() != null && rec.input.getItemDamage() == piv.input.getItemDamage() && rec.input.getItem() == piv.input.getItem())
|
|
||||||
flag = true;
|
|
||||||
if(piv == null || rec == null || piv.input == null || rec.input == null)
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!flag)
|
|
||||||
{
|
|
||||||
newList.add(piv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PrintRecipes() {
|
|
||||||
|
|
||||||
MainRegistry.logger.debug("TWT: " + theWholeThing.size() + ", REC: " + recipesShredder.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class DictCouple {
|
|
||||||
|
|
||||||
public ItemStack item;
|
|
||||||
public List<String> list;
|
|
||||||
|
|
||||||
public DictCouple(ItemStack item, List<String> list) {
|
|
||||||
this.item = item;
|
|
||||||
this.list = list;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> findWithStack(ItemStack stack) {
|
|
||||||
for(DictCouple couple : theWholeThing) {
|
|
||||||
if(couple.item == stack);
|
|
||||||
return couple.list;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<ShredderRecipe> recipesShredder = new ArrayList<ShredderRecipe>();
|
|
||||||
public static List<DictCouple> theWholeThing = new ArrayList<DictCouple>();
|
|
||||||
public static int dustCount = 0;
|
|
||||||
|
|
||||||
public static ItemStack getShredderResult(ItemStack stack) {
|
|
||||||
for(ShredderRecipe rec : recipesShredder)
|
|
||||||
{
|
|
||||||
if(stack != null &&
|
|
||||||
rec.input.getItem() == stack.getItem() &&
|
|
||||||
rec.input.getItemDamage() == stack.getItemDamage())
|
|
||||||
return rec.output.copy();
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ItemStack(ModItems.scrap);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<Object, Object> getShredderRecipes() {
|
|
||||||
Map<Object, Object> recipes = new HashMap<Object, Object>();
|
|
||||||
|
|
||||||
for(int i = 0; i < MachineRecipes.recipesShredder.size(); i++) {
|
|
||||||
if(MachineRecipes.recipesShredder.get(i) != null && MachineRecipes.recipesShredder.get(i).output.getItem() != ModItems.scrap)
|
|
||||||
recipes.put(MachineRecipes.recipesShredder.get(i).input, getShredderResult(MachineRecipes.recipesShredder.get(i).input));
|
|
||||||
}
|
|
||||||
|
|
||||||
return recipes;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public Map<Object[], Object> getCMBRecipes() {
|
public Map<Object[], Object> getCMBRecipes() {
|
||||||
Map<Object[], Object> recipes = new HashMap<Object[], Object>();
|
Map<Object[], Object> recipes = new HashMap<Object[], Object>();
|
||||||
|
|||||||
@ -48,7 +48,6 @@ import com.hbm.entity.EntityMappings;
|
|||||||
import com.hbm.entity.grenade.*;
|
import com.hbm.entity.grenade.*;
|
||||||
import com.hbm.entity.logic.*;
|
import com.hbm.entity.logic.*;
|
||||||
import com.hbm.entity.mob.siege.*;
|
import com.hbm.entity.mob.siege.*;
|
||||||
import com.hbm.entity.qic.EntitySPV;
|
|
||||||
import com.hbm.handler.*;
|
import com.hbm.handler.*;
|
||||||
import com.hbm.handler.imc.*;
|
import com.hbm.handler.imc.*;
|
||||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||||
@ -83,7 +82,6 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
|||||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||||
import cpw.mods.fml.common.event.FMLServerStartingEvent;
|
import cpw.mods.fml.common.event.FMLServerStartingEvent;
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||||
import cpw.mods.fml.common.registry.EntityRegistry;
|
|
||||||
import cpw.mods.fml.common.registry.GameRegistry;
|
import cpw.mods.fml.common.registry.GameRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|
||||||
@ -744,6 +742,7 @@ public class MainRegistry {
|
|||||||
BobmazonOfferFactory.init();
|
BobmazonOfferFactory.init();
|
||||||
OreDictManager.registerOres();
|
OreDictManager.registerOres();
|
||||||
|
|
||||||
|
IMCHandler.registerHandler("blastfurnace", new IMCBlastFurnace());
|
||||||
IMCHandler.registerHandler("crystallizer", new IMCCrystallizer());
|
IMCHandler.registerHandler("crystallizer", new IMCCrystallizer());
|
||||||
IMCHandler.registerHandler("centrifuge", new IMCCentrifuge());
|
IMCHandler.registerHandler("centrifuge", new IMCCentrifuge());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.hbm.tileentity.machine;
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
import com.hbm.blocks.machine.MachineDiFurnace;
|
import com.hbm.blocks.machine.MachineDiFurnace;
|
||||||
import com.hbm.inventory.recipes.MachineRecipes;
|
import com.hbm.inventory.recipes.BlastFurnaceRecipes;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.machine.ItemRTGPellet;
|
import com.hbm.items.machine.ItemRTGPellet;
|
||||||
import com.hbm.util.RTGUtil;
|
import com.hbm.util.RTGUtil;
|
||||||
@ -25,9 +25,9 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
public static final int maxPower = 12800;
|
public static final int maxPower = 12800;
|
||||||
public static final int processingSpeed = 400;
|
public static final int processingSpeed = 400;
|
||||||
|
|
||||||
private static final int[] slots_top = new int[] {0};
|
private static final int[] slots_top = new int[] { 0 };
|
||||||
private static final int[] slots_bottom = new int[] {3};
|
private static final int[] slots_bottom = new int[] { 3 };
|
||||||
private static final int[] slots_side = new int[] {1};
|
private static final int[] slots_side = new int[] { 1 };
|
||||||
|
|
||||||
private String customName;
|
private String customName;
|
||||||
|
|
||||||
@ -47,21 +47,19 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlotOnClosing(int i) {
|
public ItemStack getStackInSlotOnClosing(int i) {
|
||||||
if(slots[i] != null)
|
if(slots[i] != null) {
|
||||||
{
|
|
||||||
ItemStack itemStack = slots[i];
|
ItemStack itemStack = slots[i];
|
||||||
slots[i] = null;
|
slots[i] = null;
|
||||||
return itemStack;
|
return itemStack;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setInventorySlotContents(int i, ItemStack itemStack) {
|
public void setInventorySlotContents(int i, ItemStack itemStack) {
|
||||||
slots[i] = itemStack;
|
slots[i] = itemStack;
|
||||||
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit())
|
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
|
||||||
{
|
|
||||||
itemStack.stackSize = getInventoryStackLimit();
|
itemStack.stackSize = getInventoryStackLimit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,24 +85,25 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUseableByPlayer(EntityPlayer player) {
|
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||||
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this)
|
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}else{
|
} else {
|
||||||
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64;
|
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//You scrubs aren't needed for anything (right now)
|
// You scrubs aren't needed for anything (right now)
|
||||||
@Override
|
@Override
|
||||||
public void openInventory() {}
|
public void openInventory() {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeInventory() {}
|
public void closeInventory() {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack itemStack) {
|
public boolean isItemValidForSlot(int i, ItemStack itemStack) {
|
||||||
if(i == 3)
|
if(i == 3) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,11 +114,11 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
return getItemPower(itemStack) > 0;
|
return getItemPower(itemStack) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: replace this terribleness
|
||||||
private static int getItemPower(ItemStack itemStack) {
|
private static int getItemPower(ItemStack itemStack) {
|
||||||
if(itemStack == null)
|
if(itemStack == null) {
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}else{
|
} else {
|
||||||
Item item = itemStack.getItem();
|
Item item = itemStack.getItem();
|
||||||
|
|
||||||
if(item == Items.coal) return 200;
|
if(item == Items.coal) return 200;
|
||||||
@ -140,17 +139,14 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack decrStackSize(int i, int j) {
|
public ItemStack decrStackSize(int i, int j) {
|
||||||
if(slots[i] != null)
|
if(slots[i] != null) {
|
||||||
{
|
if(slots[i].stackSize <= j) {
|
||||||
if(slots[i].stackSize <= j)
|
|
||||||
{
|
|
||||||
ItemStack itemStack = slots[i];
|
ItemStack itemStack = slots[i];
|
||||||
slots[i] = null;
|
slots[i] = null;
|
||||||
return itemStack;
|
return itemStack;
|
||||||
}
|
}
|
||||||
ItemStack itemStack1 = slots[i].splitStack(j);
|
ItemStack itemStack1 = slots[i].splitStack(j);
|
||||||
if (slots[i].stackSize == 0)
|
if(slots[i].stackSize == 0) {
|
||||||
{
|
|
||||||
slots[i] = null;
|
slots[i] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,12 +165,10 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
this.dualCookTime = nbt.getShort("cookTime");
|
this.dualCookTime = nbt.getShort("cookTime");
|
||||||
slots = new ItemStack[getSizeInventory()];
|
slots = new ItemStack[getSizeInventory()];
|
||||||
|
|
||||||
for(int i = 0; i < list.tagCount(); i++)
|
for(int i = 0; i < list.tagCount(); i++) {
|
||||||
{
|
|
||||||
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
||||||
byte b0 = nbt1.getByte("slot");
|
byte b0 = nbt1.getByte("slot");
|
||||||
if(b0 >= 0 && b0 < slots.length)
|
if(b0 >= 0 && b0 < slots.length) {
|
||||||
{
|
|
||||||
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
|
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -187,12 +181,10 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
nbt.setShort("cookTime", (short) dualCookTime);
|
nbt.setShort("cookTime", (short) dualCookTime);
|
||||||
NBTTagList list = new NBTTagList();
|
NBTTagList list = new NBTTagList();
|
||||||
|
|
||||||
for(int i = 0; i < slots.length; i++)
|
for(int i = 0; i < slots.length; i++) {
|
||||||
{
|
if(slots[i] != null) {
|
||||||
if(slots[i] != null)
|
|
||||||
{
|
|
||||||
NBTTagCompound nbt1 = new NBTTagCompound();
|
NBTTagCompound nbt1 = new NBTTagCompound();
|
||||||
nbt1.setByte("slot", (byte)i);
|
nbt1.setByte("slot", (byte) i);
|
||||||
slots[i].writeToNBT(nbt1);
|
slots[i].writeToNBT(nbt1);
|
||||||
list.appendTag(nbt1);
|
list.appendTag(nbt1);
|
||||||
}
|
}
|
||||||
@ -201,10 +193,9 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getAccessibleSlotsFromSide(int p_94128_1_)
|
public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
|
||||||
{
|
return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side);
|
||||||
return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
|
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
|
||||||
@ -225,18 +216,15 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean canProcess() {
|
public boolean canProcess() {
|
||||||
if(slots[0] == null || slots[1] == null)
|
if(slots[0] == null || slots[1] == null) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ItemStack itemStack = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]);
|
ItemStack itemStack = BlastFurnaceRecipes.getOutput(slots[0], slots[1]);
|
||||||
if(itemStack == null)
|
if(itemStack == null) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(slots[3] == null)
|
if(slots[3] == null) {
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,32 +234,28 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
|
|
||||||
if(slots[3].stackSize < getInventoryStackLimit() && slots[3].stackSize < slots[3].getMaxStackSize()) {
|
if(slots[3].stackSize < getInventoryStackLimit() && slots[3].stackSize < slots[3].getMaxStackSize()) {
|
||||||
return true;
|
return true;
|
||||||
}else{
|
} else {
|
||||||
return slots[3].stackSize < itemStack.getMaxStackSize();
|
return slots[3].stackSize < itemStack.getMaxStackSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processItem() {
|
private void processItem() {
|
||||||
if(canProcess()) {
|
if(canProcess()) {
|
||||||
ItemStack itemStack = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]);
|
ItemStack itemStack = BlastFurnaceRecipes.getOutput(slots[0], slots[1]);
|
||||||
|
|
||||||
if(slots[3] == null)
|
if(slots[3] == null) {
|
||||||
{
|
|
||||||
slots[3] = itemStack.copy();
|
slots[3] = itemStack.copy();
|
||||||
}else if(slots[3].isItemEqual(itemStack)) {
|
} else if(slots[3].isItemEqual(itemStack)) {
|
||||||
slots[3].stackSize += itemStack.stackSize;
|
slots[3].stackSize += itemStack.stackSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 2; i++)
|
for(int i = 0; i < 2; i++) {
|
||||||
{
|
if(slots[i].stackSize <= 0) {
|
||||||
if(slots[i].stackSize <= 0)
|
|
||||||
{
|
|
||||||
slots[i] = new ItemStack(slots[i].getItem().setFull3D());
|
slots[i] = new ItemStack(slots[i].getItem().setFull3D());
|
||||||
}else{
|
} else {
|
||||||
slots[i].stackSize--;
|
slots[i].stackSize--;
|
||||||
}
|
}
|
||||||
if(slots[i].stackSize <= 0)
|
if(slots[i].stackSize <= 0) {
|
||||||
{
|
|
||||||
slots[i] = null;
|
slots[i] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -291,31 +275,28 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
this.hasPower();
|
this.hasPower();
|
||||||
boolean flag1 = false;
|
boolean flag1 = false;
|
||||||
|
|
||||||
if(hasPower() && isProcessing())
|
if(hasPower() && isProcessing()) {
|
||||||
{
|
|
||||||
this.dualPower = this.dualPower - 1;
|
this.dualPower = this.dualPower - 1;
|
||||||
|
|
||||||
if(this.dualPower < 0)
|
if(this.dualPower < 0) {
|
||||||
{
|
|
||||||
this.dualPower = 0;
|
this.dualPower = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.hasItemPower(this.slots[2])
|
if(this.hasItemPower(this.slots[2]) && this.dualPower <= (TileEntityDiFurnace.maxPower - TileEntityDiFurnace.getItemPower(this.slots[2]))) {
|
||||||
&& this.dualPower <= (TileEntityDiFurnace.maxPower - TileEntityDiFurnace.getItemPower(this.slots[2]))) {
|
|
||||||
this.dualPower += getItemPower(this.slots[2]);
|
this.dualPower += getItemPower(this.slots[2]);
|
||||||
if (this.slots[2] != null) {
|
if(this.slots[2] != null) {
|
||||||
flag1 = true;
|
flag1 = true;
|
||||||
this.slots[2].stackSize--;
|
this.slots[2].stackSize--;
|
||||||
if (this.slots[2].stackSize == 0) {
|
if(this.slots[2].stackSize == 0) {
|
||||||
this.slots[2] = this.slots[2].getItem().getContainerItem(this.slots[2]);
|
this.slots[2] = this.slots[2].getItem().getContainerItem(this.slots[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasPower() && canProcess()) {
|
if(hasPower() && canProcess()) {
|
||||||
dualCookTime++;
|
dualCookTime++;
|
||||||
|
|
||||||
if (this.dualCookTime == TileEntityDiFurnace.processingSpeed) {
|
if(this.dualCookTime == TileEntityDiFurnace.processingSpeed) {
|
||||||
this.dualCookTime = 0;
|
this.dualCookTime = 0;
|
||||||
this.processItem();
|
this.processItem();
|
||||||
flag1 = true;
|
flag1 = true;
|
||||||
@ -324,30 +305,26 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory {
|
|||||||
dualCookTime = 0;
|
dualCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!worldObj.isRemote)
|
if(!worldObj.isRemote) {
|
||||||
{
|
|
||||||
boolean trigger = true;
|
boolean trigger = true;
|
||||||
|
|
||||||
if(hasPower() && canProcess() && this.dualCookTime == 0)
|
if(hasPower() && canProcess() && this.dualCookTime == 0) {
|
||||||
{
|
|
||||||
trigger = false;
|
trigger = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.slots[2] != null && (this.slots[2].getItem() instanceof ItemRTGPellet)) {
|
if(this.slots[2] != null && (this.slots[2].getItem() instanceof ItemRTGPellet)) {
|
||||||
this.dualPower += RTGUtil.updateRTGs(slots, new int[] { 2 });
|
this.dualPower += RTGUtil.updateRTGs(slots, new int[] { 2 });
|
||||||
if(this.dualPower > maxPower)
|
if(this.dualPower > maxPower)
|
||||||
this.dualPower = maxPower;
|
this.dualPower = maxPower;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(trigger)
|
if(trigger) {
|
||||||
{
|
flag1 = true;
|
||||||
flag1 = true;
|
MachineDiFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
||||||
MachineDiFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flag1)
|
if(flag1) {
|
||||||
{
|
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.hbm.tileentity.machine;
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
import com.hbm.blocks.machine.MachineDiFurnaceRTG;
|
import com.hbm.blocks.machine.MachineDiFurnaceRTG;
|
||||||
import com.hbm.inventory.recipes.MachineRecipes;
|
import com.hbm.inventory.recipes.BlastFurnaceRecipes;
|
||||||
import com.hbm.util.RTGUtil;
|
import com.hbm.util.RTGUtil;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase
|
|||||||
if ((slots[0] == null || slots[1] == null) && !hasPower())
|
if ((slots[0] == null || slots[1] == null) && !hasPower())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ItemStack recipeResult = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]);
|
ItemStack recipeResult = BlastFurnaceRecipes.getOutput(slots[0], slots[1]);
|
||||||
if (recipeResult == null)
|
if (recipeResult == null)
|
||||||
return false;
|
return false;
|
||||||
else if (slots[2] == null)
|
else if (slots[2] == null)
|
||||||
@ -73,7 +73,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase
|
|||||||
private void processItem() {
|
private void processItem() {
|
||||||
|
|
||||||
if(canProcess()) {
|
if(canProcess()) {
|
||||||
ItemStack recipeOut = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]);
|
ItemStack recipeOut = BlastFurnaceRecipes.getOutput(slots[0], slots[1]);
|
||||||
if(slots[2] == null)
|
if(slots[2] == null)
|
||||||
slots[2] = recipeOut.copy();
|
slots[2] = recipeOut.copy();
|
||||||
else if(slots[2].isItemEqual(recipeOut))
|
else if(slots[2].isItemEqual(recipeOut))
|
||||||
|
|||||||
@ -423,7 +423,7 @@ container.bombMulti=Multi Purpose Bomb
|
|||||||
container.centrifuge=Centrifuge
|
container.centrifuge=Centrifuge
|
||||||
container.chemplant=Chemical Plant
|
container.chemplant=Chemical Plant
|
||||||
container.compactLauncher=Compact Launch Pad
|
container.compactLauncher=Compact Launch Pad
|
||||||
container.craneExtractor=Conveyor Extractor
|
container.craneExtractor=Conveyor Ejector
|
||||||
container.craneInserter=Conveyor Inserter
|
container.craneInserter=Conveyor Inserter
|
||||||
container.crateDesh=Desh Crate
|
container.crateDesh=Desh Crate
|
||||||
container.crateIron=Iron Crate
|
container.crateIron=Iron Crate
|
||||||
|
|||||||
|
After Width: | Height: | Size: 642 B |
|
After Width: | Height: | Size: 805 B |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 495 B |
|
Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 498 B |
|
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 459 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 662 B |
|
Before Width: | Height: | Size: 475 B After Width: | Height: | Size: 527 B |
|
Before Width: | Height: | Size: 483 B After Width: | Height: | Size: 527 B |
|
Before Width: | Height: | Size: 444 B After Width: | Height: | Size: 493 B |
|
Before Width: | Height: | Size: 230 B |
|
Before Width: | Height: | Size: 302 B |