From a9d7f9ca20bf4c3813d1d0ffe5780996eb03e457 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 12 Aug 2022 11:50:02 +0200 Subject: [PATCH] merged blast furnace recipe handling, BF explosion crash fix, textures --- .../com/hbm/explosion/ExplosionBalefire.java | 11 +- .../com/hbm/explosion/ExplosionChaos.java | 2 + .../com/hbm/handler/imc/IMCBlastFurnace.java | 81 ++++ .../nei/AlloyFurnaceRecipeHandler.java | 144 +++--- .../recipes/BlastFurnaceRecipes.java | 171 +++++++ .../hbm/inventory/recipes/MachineRecipes.java | 435 +----------------- src/main/java/com/hbm/main/MainRegistry.java | 3 +- .../machine/TileEntityDiFurnace.java | 211 ++++----- .../machine/TileEntityDiFurnaceRTG.java | 6 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../textures/blocks/conveyor_curve_left.png | Bin 0 -> 642 bytes .../blocks/conveyor_double_curve_left.png | Bin 0 -> 805 bytes .../textures/blocks/crane_boxer_side_down.png | Bin 462 -> 495 bytes .../textures/blocks/crane_boxer_side_up.png | Bin 463 -> 498 bytes .../hbm/textures/blocks/crane_boxer_top.png | Bin 426 -> 459 bytes .../textures/blocks/crane_teleporter_side.png | Bin 0 -> 515 bytes .../textures/blocks/crane_teleporter_top.png | Bin 0 -> 662 bytes .../blocks/crane_unboxer_side_down.png | Bin 475 -> 527 bytes .../textures/blocks/crane_unboxer_side_up.png | Bin 483 -> 527 bytes .../hbm/textures/blocks/crane_unboxer_top.png | Bin 444 -> 493 bytes .../textures/blocks/crate_entangled_side.png | Bin 230 -> 0 bytes .../textures/blocks/crate_entangled_top.png | Bin 302 -> 0 bytes 22 files changed, 438 insertions(+), 628 deletions(-) create mode 100644 src/main/java/com/hbm/handler/imc/IMCBlastFurnace.java create mode 100644 src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_curve_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_teleporter_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/crane_teleporter_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/crate_entangled_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/crate_entangled_top.png diff --git a/src/main/java/com/hbm/explosion/ExplosionBalefire.java b/src/main/java/com/hbm/explosion/ExplosionBalefire.java index 73acb4de8..9df326909 100644 --- a/src/main/java/com/hbm/explosion/ExplosionBalefire.java +++ b/src/main/java/com/hbm/explosion/ExplosionBalefire.java @@ -45,7 +45,7 @@ public class ExplosionBalefire lastposZ = nbt.getInteger(name + "lastposZ"); radius = nbt.getInteger(name + "radius"); 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"); shell = nbt.getInteger(name + "shell"); leg = nbt.getInteger(name + "leg"); @@ -66,11 +66,16 @@ public class ExplosionBalefire this.nlimit = this.radius2 * 4; } - public boolean update() - { + public boolean update() { + + if(n == 0) return true; + breakColumn(this.lastposX, this.lastposZ); this.shell = (int) Math.floor((Math.sqrt(n) + 1) / 2); int shell2 = this.shell * 2; + + if(shell2 == 0) return true; + 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.lastposX = this.leg == 0 ? this.shell : this.leg == 1 ? -this.element : this.leg == 2 ? -this.shell : this.element; diff --git a/src/main/java/com/hbm/explosion/ExplosionChaos.java b/src/main/java/com/hbm/explosion/ExplosionChaos.java index 6f9ceaaa1..31067b6c8 100644 --- a/src/main/java/com/hbm/explosion/ExplosionChaos.java +++ b/src/main/java/com/hbm/explosion/ExplosionChaos.java @@ -19,6 +19,7 @@ import com.hbm.entity.projectile.EntityRainbow; import com.hbm.entity.projectile.EntityRocket; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntitySchrab; +import com.hbm.interfaces.Spaghetti; import com.hbm.lib.ModDamageSource; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorRegistry; @@ -42,6 +43,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +@Spaghetti("no") public class ExplosionChaos { private final static Random random = new Random(); diff --git a/src/main/java/com/hbm/handler/imc/IMCBlastFurnace.java b/src/main/java/com/hbm/handler/imc/IMCBlastFurnace.java new file mode 100644 index 000000000..7a99d4349 --- /dev/null +++ b/src/main/java/com/hbm/handler/imc/IMCBlastFurnace.java @@ -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> 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 ores = new ArrayList(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 ores = new ArrayList(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(input1, input2, output)); + } +} diff --git a/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java index f52b39083..c7514eb9b 100644 --- a/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java @@ -5,8 +5,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import com.hbm.inventory.gui.GUITestDiFurnace; +import com.hbm.inventory.recipes.BlastFurnaceRecipes; import com.hbm.inventory.recipes.MachineRecipes; import codechicken.nei.NEIServerUtils; @@ -17,48 +19,44 @@ import net.minecraft.item.ItemStack; public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler { - public static ArrayList fuels; + public static ArrayList fuels; - public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe - { - PositionedStack input1; + public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe { + PositionedStack input1; PositionedStack input2; - PositionedStack result; - - public SmeltingSet(ItemStack input1, ItemStack input2, ItemStack result) { - input1.stackSize = 1; - input2.stackSize = 1; - this.input1 = new PositionedStack(input1, 75, 7); - this.input2 = new PositionedStack(input2, 75, 43); - this.result = new PositionedStack(result, 129, 25); - } + PositionedStack result; - @Override + public SmeltingSet(List list, List list2, ItemStack result) { + this.input1 = new PositionedStack(list, 75, 7); + this.input2 = new PositionedStack(list2, 75, 43); + this.result = new PositionedStack(result, 129, 25); + } + + @Override public List 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() { - return fuels.get((cycleticks / 48) % fuels.size()).stack; - } + return fuels.get((cycleticks / 48) % fuels.size()).stack; + } - @Override + @Override public PositionedStack getResult() { - return result; - } - } + return result; + } + } - public static class Fuel - { - public Fuel(ItemStack ingred) { - - this.stack = new PositionedStack(ingred, 3, 25, false); - } + public static class Fuel { + public Fuel(ItemStack ingred) { + + this.stack = new PositionedStack(ingred, 3, 25, false); + } + + public PositionedStack stack; + } - public PositionedStack stack; - } - @Override public String getRecipeName() { return "Blast Furnace"; @@ -68,13 +66,13 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler { public String getGuiTexture() { return GUITestDiFurnace.texture.toString(); } - + @Override public void loadCraftingRecipes(String outputId, Object... results) { - if ((outputId.equals("alloysmelting")) && getClass() == AlloyFurnaceRecipeHandler.class) { - Map recipes = MachineRecipes.instance().getAlloyRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); + if((outputId.equals("alloysmelting")) && getClass() == AlloyFurnaceRecipeHandler.class) { + Map[], ItemStack> recipes = BlastFurnaceRecipes.getRecipesForNEI(); + for(Entry[], ItemStack> recipe : recipes.entrySet()) { + this.arecipes.add(new SmeltingSet(recipe.getKey()[0], recipe.getKey()[1], recipe.getValue())); } } else { super.loadCraftingRecipes(outputId, results); @@ -83,16 +81,16 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(ItemStack result) { - Map recipes = MachineRecipes.instance().getAlloyRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result)) - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); + Map[], ItemStack> recipes = BlastFurnaceRecipes.getRecipesForNEI(); + for(Entry[], ItemStack> recipe : recipes.entrySet()) { + if(NEIServerUtils.areStacksSameType(recipe.getValue(), result)) + this.arecipes.add(new SmeltingSet(recipe.getKey()[0], recipe.getKey()[1], recipe.getValue())); } } @Override 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]); } else { super.loadUsageRecipes(inputId, ingredients); @@ -101,41 +99,43 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler { @Override public void loadUsageRecipes(ItemStack ingredient) { - Map recipes = MachineRecipes.instance().getAlloyRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - if (NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[0]) || NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[1])) - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); + Map[], ItemStack> recipes = BlastFurnaceRecipes.getRecipesForNEI(); + for(Entry[], ItemStack> recipe : recipes.entrySet()) { + List combined = new ArrayList(); + 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 - public Class getGuiClass() { - return GUITestDiFurnace.class; - } - - @Override - public void loadTransferRects() { - transferRects.add(new RecipeTransferRect(new Rectangle(96, 25, 24, 18), "alloysmelting")); - } + @Override + public Class getGuiClass() { + return GUITestDiFurnace.class; + } - @Override - public void drawExtras(int recipe) { - drawProgressBar(57, 26, 176, 0, 14, 14, 48, 7); - - drawProgressBar(96, 24, 176, 14, 24, 16, 48, 0); + @Override + public void loadTransferRects() { + transferRects.add(new RecipeTransferRect(new Rectangle(96, 25, 24, 18), "alloysmelting")); + } - drawProgressBar(39, 7, 201, 0, 16, 52, 480, 7); - } + @Override + public void drawExtras(int recipe) { + drawProgressBar(57, 26, 176, 0, 14, 14, 48, 7); - @Override - public TemplateRecipeHandler newInstance() { - if (fuels == null || fuels.isEmpty()) - fuels = new ArrayList(); - for(ItemStack i : MachineRecipes.instance().getAlloyFuels()) - { - fuels.add(new Fuel(i)); - } - return super.newInstance(); - } + drawProgressBar(96, 24, 176, 14, 24, 16, 48, 0); + drawProgressBar(39, 7, 201, 0, 16, 52, 480, 7); + } + + @Override + public TemplateRecipeHandler newInstance() { + if(fuels == null || fuels.isEmpty()) + fuels = new ArrayList(); + for(ItemStack i : MachineRecipes.instance().getAlloyFuels()) { + fuels.add(new Fuel(i)); + } + return super.newInstance(); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java new file mode 100644 index 000000000..3921cbfae --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -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> blastFurnaceRecipes = new ArrayList>(); + private static final ArrayList hiddenRecipes = new ArrayList(); + + private static void addRecipe(Object in1, Object in2, ItemStack out) { + blastFurnaceRecipes.add(new Triplet(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 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[], ItemStack> getRecipesForNEI() { + final HashMap[], ItemStack> recipes = new HashMap<>(); + + for(Triplet 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 in1 = new ArrayList(); + final List in2 = new ArrayList(); + 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[] inputs = new List[2]; + inputs[0] = in1; + inputs[1] = in2; + recipes.put(inputs, recipe.getZ()); + } + } + return ImmutableMap.copyOf(recipes); + } + + public static List> getRecipes() { + + final List> subRecipes = new ArrayList<>(); + for(Triplet recipe : blastFurnaceRecipes) + subRecipes.add(new Triplet(getRecipeStacks(recipe.getX()), getRecipeStacks(recipe.getY()), recipe.getZ())); + return ImmutableList.copyOf(subRecipes); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java index 39268a32f..6cfbc51ae 100644 --- a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java @@ -2,22 +2,14 @@ package com.hbm.inventory.recipes; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.FluidContainer; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; 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.Items; import net.minecraft.item.Item; @@ -26,138 +18,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.oredict.OreDictionary; //TODO: clean this shit up -@Spaghetti("everything") +@Spaghetti("i cannot sleep well at night knowing that this class still exists") public class MachineRecipes { - public MachineRecipes() { - - } - public static MachineRecipes instance() { 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) public static Object[] getBoilerOutput(FluidType type) { @@ -402,54 +268,6 @@ public class MachineRecipes { return null; } - public Map getAlloyRecipes() { - Map recipes = new HashMap(); - - 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 getAlloyFuels() { ArrayList fuels = new ArrayList(); fuels.add(new ItemStack(Items.coal)); @@ -465,20 +283,8 @@ public class MachineRecipes { fuels.add(new ItemStack(ModItems.powder_coal)); return fuels; } - - public ArrayList getCentrifugeFuels() { - ArrayList fuels = new ArrayList(); - 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; - } + @Spaghetti("why did i do this?") public Map getCyclotronRecipes() { Map recipes = new HashMap(); Item part = ModItems.part_lithium; @@ -796,240 +602,9 @@ public class MachineRecipes { return recipes; } - //keep this - //like in a museum or something - //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 stacks = new ArrayList(); - - 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 oreNames = new ArrayList(); - - 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 newList = new ArrayList(); - - 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 list; - - public DictCouple(ItemStack item, List list) { - this.item = item; - this.list = list; - } - - public static List findWithStack(ItemStack stack) { - for(DictCouple couple : theWholeThing) { - if(couple.item == stack); - return couple.list; - } - - return null; - } - } - - public static List recipesShredder = new ArrayList(); - public static List theWholeThing = new ArrayList(); - 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 getShredderRecipes() { - Map recipes = new HashMap(); - - 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; - }*/ + /* + * this is the smoldering crater where once the 2016 shredder recipe code was + */ public Map getCMBRecipes() { Map recipes = new HashMap(); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e3320f138..29902a05c 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -48,7 +48,6 @@ import com.hbm.entity.EntityMappings; import com.hbm.entity.grenade.*; import com.hbm.entity.logic.*; import com.hbm.entity.mob.siege.*; -import com.hbm.entity.qic.EntitySPV; import com.hbm.handler.*; import com.hbm.handler.imc.*; 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.FMLServerStartingEvent; 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.relauncher.Side; @@ -744,6 +742,7 @@ public class MainRegistry { BobmazonOfferFactory.init(); OreDictManager.registerOres(); + IMCHandler.registerHandler("blastfurnace", new IMCBlastFurnace()); IMCHandler.registerHandler("crystallizer", new IMCCrystallizer()); IMCHandler.registerHandler("centrifuge", new IMCCentrifuge()); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java index 279812b36..1117c9c65 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.machine; 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.machine.ItemRTGPellet; import com.hbm.util.RTGUtil; @@ -19,18 +19,18 @@ import net.minecraft.tileentity.TileEntity; public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { private ItemStack slots[]; - + public int dualCookTime; public int dualPower; public static final int maxPower = 12800; public static final int processingSpeed = 400; - - private static final int[] slots_top = new int[] {0}; - private static final int[] slots_bottom = new int[] {3}; - private static final int[] slots_side = new int[] {1}; - + + private static final int[] slots_top = new int[] { 0 }; + private static final int[] slots_bottom = new int[] { 3 }; + private static final int[] slots_side = new int[] { 1 }; + private String customName; - + public TileEntityDiFurnace() { slots = new ItemStack[4]; } @@ -47,21 +47,19 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { @Override public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { + if(slots[i] != null) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } else { - return null; + return null; } } @Override public void setInventorySlotContents(int i, ItemStack itemStack) { slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } } @@ -75,7 +73,7 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -87,41 +85,42 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; + } else { + 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 - public void openInventory() {} + public void openInventory() { + } + @Override - public void closeInventory() {} + public void closeInventory() { + } @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 3) - { + if(i == 3) { return false; } - + return true; } - + public boolean hasItemPower(ItemStack itemStack) { return getItemPower(itemStack) > 0; } - + + //TODO: replace this terribleness private static int getItemPower(ItemStack itemStack) { - if(itemStack == null) - { + if(itemStack == null) { return 0; - }else{ + } else { Item item = itemStack.getItem(); - + if(item == Items.coal) return 200; if(item == Item.getItemFromBlock(Blocks.coal_block)) return 2000; if(item == Items.lava_bucket) return 12800; @@ -133,78 +132,70 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { if(item == ModItems.briquette_lignite) return 200; if(item == ModItems.coke) return 400; if(item == ModItems.solid_fuel) return 400; - + return 0; } } - + @Override public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { + if(slots[i] != null) { + if(slots[i].stackSize <= j) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { + if(slots[i].stackSize == 0) { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + this.dualPower = nbt.getInteger("powerTime"); this.dualCookTime = nbt.getShort("cookTime"); 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); byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { + if(b0 >= 0 && b0 < slots.length) { slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setInteger("powerTime", dualPower); nbt.setShort("cookTime", (short) dualCookTime); NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); + nbt1.setByte("slot", (byte) i); slots[i].writeToNBT(nbt1); list.appendTag(nbt1); } } nbt.setTag("items", list); } - + @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); + } @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { @@ -215,107 +206,97 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { public boolean canExtractItem(int i, ItemStack itemStack, int j) { return true; } - + public int getDiFurnaceProgressScaled(int i) { return (dualCookTime * i) / processingSpeed; } - + public int getPowerRemainingScaled(int i) { return (dualPower * i) / maxPower; } - + public boolean canProcess() { - if(slots[0] == null || slots[1] == null) - { + if(slots[0] == null || slots[1] == null) { return false; } - ItemStack itemStack = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]); - if(itemStack == null) - { + ItemStack itemStack = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); + if(itemStack == null) { return false; } - - if(slots[3] == null) - { + + if(slots[3] == null) { return true; } - + if(!slots[3].isItemEqual(itemStack)) { return false; } - + if(slots[3].stackSize < getInventoryStackLimit() && slots[3].stackSize < slots[3].getMaxStackSize()) { return true; - }else{ + } else { return slots[3].stackSize < itemStack.getMaxStackSize(); } } - + private void processItem() { if(canProcess()) { - ItemStack itemStack = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]); - - if(slots[3] == null) - { + ItemStack itemStack = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); + + if(slots[3] == null) { slots[3] = itemStack.copy(); - }else if(slots[3].isItemEqual(itemStack)) { + } else if(slots[3].isItemEqual(itemStack)) { slots[3].stackSize += itemStack.stackSize; } - - for(int i = 0; i < 2; i++) - { - if(slots[i].stackSize <= 0) - { + + for(int i = 0; i < 2; i++) { + if(slots[i].stackSize <= 0) { slots[i] = new ItemStack(slots[i].getItem().setFull3D()); - }else{ + } else { slots[i].stackSize--; } - if(slots[i].stackSize <= 0) - { + if(slots[i].stackSize <= 0) { slots[i] = null; } } } } - + public boolean hasPower() { return dualPower > 0; } - + public boolean isProcessing() { return this.dualCookTime > 0; } - + @Override public void updateEntity() { this.hasPower(); boolean flag1 = false; - - if(hasPower() && isProcessing()) - { + + if(hasPower() && isProcessing()) { this.dualPower = this.dualPower - 1; - - if(this.dualPower < 0) - { + + if(this.dualPower < 0) { this.dualPower = 0; } } - if (this.hasItemPower(this.slots[2]) - && this.dualPower <= (TileEntityDiFurnace.maxPower - TileEntityDiFurnace.getItemPower(this.slots[2]))) { + if(this.hasItemPower(this.slots[2]) && this.dualPower <= (TileEntityDiFurnace.maxPower - TileEntityDiFurnace.getItemPower(this.slots[2]))) { this.dualPower += getItemPower(this.slots[2]); - if (this.slots[2] != null) { + if(this.slots[2] != null) { flag1 = true; 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]); } } } - if (hasPower() && canProcess()) { + if(hasPower() && canProcess()) { dualCookTime++; - if (this.dualCookTime == TileEntityDiFurnace.processingSpeed) { + if(this.dualCookTime == TileEntityDiFurnace.processingSpeed) { this.dualCookTime = 0; this.processItem(); flag1 = true; @@ -324,30 +305,26 @@ public class TileEntityDiFurnace extends TileEntity implements ISidedInventory { dualCookTime = 0; } - if(!worldObj.isRemote) - { + if(!worldObj.isRemote) { boolean trigger = true; - - if(hasPower() && canProcess() && this.dualCookTime == 0) - { + + if(hasPower() && canProcess() && this.dualCookTime == 0) { 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 }); if(this.dualPower > maxPower) this.dualPower = maxPower; } - - if(trigger) - { - flag1 = true; - MachineDiFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } + + if(trigger) { + flag1 = true; + MachineDiFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + } } - - if(flag1) - { + + if(flag1) { this.markDirty(); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index 595b46434..7a1a8dbe4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.machine; 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.tileentity.TileEntityMachineBase; @@ -25,7 +25,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase if ((slots[0] == null || slots[1] == null) && !hasPower()) return false; - ItemStack recipeResult = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]); + ItemStack recipeResult = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); if (recipeResult == null) return false; else if (slots[2] == null) @@ -73,7 +73,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase private void processItem() { if(canProcess()) { - ItemStack recipeOut = MachineRecipes.getFurnaceProcessingResult(slots[0], slots[1]); + ItemStack recipeOut = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); if(slots[2] == null) slots[2] = recipeOut.copy(); else if(slots[2].isItemEqual(recipeOut)) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1dfb75ba8..bbc9e0c21 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -423,7 +423,7 @@ container.bombMulti=Multi Purpose Bomb container.centrifuge=Centrifuge container.chemplant=Chemical Plant container.compactLauncher=Compact Launch Pad -container.craneExtractor=Conveyor Extractor +container.craneExtractor=Conveyor Ejector container.craneInserter=Conveyor Inserter container.crateDesh=Desh Crate container.crateIron=Iron Crate diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_curve_left.png new file mode 100644 index 0000000000000000000000000000000000000000..b643de4276a4cecba4fc102f8d8d73a16aebd413 GIT binary patch literal 642 zcmV-|0)737P)Zv2o)t5Jev~E`Vid9IaC)##L~sOSoa+7AUviz%^W|4iG6l zge-#{-~wuC5CRCm@}I$IAP$J#kKKO2qHo!BEIi? z6!Sb&nmgwh2YCO4L--&>Ztk4J7y~R39B6>G77<~dXHIX+%O3P$7-ni7?yRVez*>tj zhIyXXR8AjJ1UZB|$59neL32*w-(N>}Bp-o>y@xCZxy30CZt5V#wxaL*4G$X*w8C;Z z$GG8OZ|59Dgw9X+?#O!18fpsR^Or}v^up7tFb?S)W288MJG4MVJbuED!!rD|jG8$t zqcg_%Fvl8gu+}mTaK2m%sa6Z%tGsX8xd!o3ucchl0u5Wm1RB~|!%h{Mh)^UkSKh^T zhH`oDN?I!HYDvrGoRl0$)&;wFcZ$~oK4`t}-UqFCEGE|?l;5=OA$ptN(6gS~T(k>p?;@Y)zHSUEUf1V1@` z{mJ`+9Dc?hwE6;_6Z(S|Er2gQczTVFu|^xTPHv254YK|~v8N4jOE)=`T#;1?O4u9C z9~^OG6>n!n%`Ls_P-<^!5!t>#cg`&i&32N5($2daw0vwpz=8VyR)3%o92PxT{s_-G cg;X8<2S?DA(kD^F?f?J)07*qoM6N<$f;E~N&;S4c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_left.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3063b9e348be675e6c06a79a5bd654342b3354 GIT binary patch literal 805 zcmV+=1KRwFP)d295JjIH1M4P$fW3grEl1D+%-m*gA^A8dbAqK0V3BgUYu!JH!&ykG*_SADAh6E;pO2ukz{^P4WiF~HGOg@-X( z4;3u&oWh{6VApsCN8{;vetlbs&^#GV3ujDW0N*wzg18Szl7l zEGWwotu;;Uq`vVBajfOOrSIA~C#F<~fs&d9zHC2Cz{%Sf<8+WSK&K)*Ts3cB0x7B( zkQb5BH4Gw~#6Uz=rTp~KbuBgg+H~j-_}z6-!|SC3pd0ePKlb!}&*$eSyWNiWpYOb0 zI<_y-*($l`*~LmbE2XR#NZis7w=>N1JS;3@u;1_7-EJ3no}Mv@!5^(>c^*};h5?S} z#WSWb*!ZV-4E)`1NUaw`Z)f`gpC8W=jgUVJz_ql+^~mOtS>QK++aLI&7-QJx%mP^P z2RR^mz~TrruK5C=TW;PU_6SJ~fl&q)m4z66WmW#Nn|4B)%|;89=Tb7Ft+$Si=HPO7Ptb7q6r ziI?(2^I-11F%r_+Y`F6W-fSPPn%3#$HVY>C(X6~Ta{NJ4W0g|D8z`lMQ%hnHD|GII zqiAaE(r1p3RVkmIRqzEq3iNnWZaaH_pp>G$>b!Q2AF${TavVzhu@Rp!iNWEj*LhB0 j@O1j1ZB`se%Ax!Nq0{~wl?U#r00000NkvXXu0mjfnOS(o literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down.png index a1dae746267af8aaf7d75abdff6292b359722b32..2a32ab7d94281ad2f3db4dbb66642b071649582f 100644 GIT binary patch delta 453 zcmV;$0XqK91MdTnG=HW^L_t(Ijir*YY8ycihQBpNIURN-wn^dI!C-<4le|odlvbxA z?+{l`Y`=q3n7n`+V+f=Ou^=G?R0)A}cY7-2Mcf_Hjf>T-?xYlf3=Dh!?%Y4~|GTQ+ z?+gDCy8zv8x3MWA7-J~Q5)nabjmWx>Qi?c^nM@{*0Kgc7h=2HuqKMwv83(|p>uW}% z5h8+8$`j>z?g-}dIRHgbFr7~Q6jcm|L!u}`YuzC563Vhy>g(zR3XpcY&Ef%&jGY&& zqF+#!uzTc4iXRRK#}1G0;On3=_V+XS^AiD=_PfhEo<4tD1I`1GG=GIjL_t(Ijir&jN<%Re$A1y2w-=pCQ5?F9A4mtmhtSPc+`AQ5 zZFik~0iU4w0xm9sgC7M&oD~YS?a+qHO|XeWns{&PAb8-AbCQ!^&iO~w>vhXNY#yLm zt>!kZwPDT1-h>czyIne+jspPndcAPL`@!)s72y2rEbIv(0)I#;%TyP>zfWOrRfDj@StZeRc)Mx-unG~L$oCJ|`A}XbFv-$Y4 z*$l5VCoq4O1qi?vi$#(rz^2TtO^RN@7?@vo7xlBtqb-+z+`wJiL*Ewc*9#V$%SY$g ze0cwpcW<#DH!c>nTFsV9CA8K#k){R9j_0))3mWw} O00000CX|yXRb~ z#bP1+M-2gHvstGp;xvshhzL;>`5u5$3S$iG_1Xylq-lzXcz zpp^1LRaG$n*lxD~)OAf&RU}Em@p9=8zC1i+GMP|SRR`XJwU*s(hqV^1HC6J7cdwrl zh9dxqqK1#BJbCqoG)?_w9f39gUOan5w6{+X1OS|0tnNKG04U3{^C1jJM0@*O<=2#D z2|yT*{FKepPk+!3uSq)y0wUllzb5K!s6n3Rw-(wfDvJ7!NYm?=pP*mo7prcFy^HP$ zD5d;Q^YGv;T5H}P9T5W`PEI=B+aV5{eKx+7QfRF)#&m3DS%$S15$OmhK*r-S#ScJA z29KSX{SDT_@W6@GKOGOAI-Xp@*Hshjp9k{y7Xl9XcR`0X-+sI0<};F9x_337&t*ED yQrC4S%zm&9Z!Cxio6W|Bm}MDxp5MEsf7K02L|HQCa+%Qp0000bR|B7-PLwm z-S-)M0ioanxN#%6@TZ`N+bR@l+eHn-B-n|Im~^ItAb8=B+~nqP&$$uxdfo7kC;(Ke z)y$zW#;@tU3n2u9!GM0hZwUZ~!=ZoRaMEbd11{Qae@Dalu~G| zIcYR};Zd`RQYr^8AxRRZ()y^9 zm8E5ZAON6q)%7x5Enp?YahxFu!y=WXWj^F5aU25>hDCqxy7e8*n+FgC0Ttjweo~p6 zkb{(RCLukdD1Xv9k|@%IxnGd#U_Lrm-K>ef)Oi9SgfCd#I=~pi>Dd`Q;JnrH=H*Ou z^Zf1CIaz5B(gXr9rBaFL5il_e>pw*=kR(vpun+Z<&4X>5zhA>`*O9(1ny+UJSjY#9 zbUwM8<%1i{`?cMRTCHZvGQEJcoxDk4(aRJlP85Jgle zxj^WN1QIP*ph+82<^WuQBFnxSSfPDjI|W&@j}(zIl4W~5^Lze(MvO)y%|EOGFc=I< zPOY`si|5>g5O|)4<2WY(fFKA=LcToD1HiUz;}b#{pd?970DrsP4uCXGQAz>ex-Qe% zj1BOwyt1;BE(HdW@kp->gC)oNn5JNVJw zl$uvljEkb^On;%+A^^*>umL~XV^^DButv4VhI0kva7arZ)c}MLrNLRQ)@2cY;);R; zG?FAKaqIW{^sb)peV>={m<{kYpChG2N?8-TMj@ZTd2(Nk^#uF3@N2a=ytoj zP9~?MB;j~GQWe|)WLZXWm%%N#u$UvnqC~+OOG!vXsx{`%d))(Zo(MD_vbrL4>v?n1AsJD@b$sj<(>UO zr8EG@vdku`-fyojXg6DgVFP#d7gVo5#jvm9)SK}z!Z4x z_q{3Arf_WQTvXp8Qd=ZTP!t7aS$YM}alBKt-P)LIxFslx0;N<<$uSj&`w{@GRx6Su dsX6=?`~c4lK~gSlXY2p~002ovPDHLkV1lzYvLFBe diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_teleporter_side.png b/src/main/resources/assets/hbm/textures/blocks/crane_teleporter_side.png new file mode 100644 index 0000000000000000000000000000000000000000..8c92452dd05cd7f702a6cc094c721d189681f15c GIT binary patch literal 515 zcmV+e0{s1nP)g^iWAXJuujkS@I^ij9>v z+FOX|rSMPi)CgBdPTXv?KgecC0vA@vZf@sUj62!6YXlz*Gw;p&ee>STs9vup{D*A; zbUGa`C?amIuPakZp|xf*nOFe8Y<O5n(!=dcZIY5fPM9E}rMP1uU0K0E(i(7=zZD zd(UoqRmJ@ik|gl}u7xyB$@83|C=e0uKfeXQWiGkI?=mD!QwL}^n;U>JhPzL10MLJO z=m{S`dJTYy4I;vemp$0s=FPPa3#GRcJ`ujtYBmrRW;T;Ftd+-W&x2Xt3f$O?) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_teleporter_top.png b/src/main/resources/assets/hbm/textures/blocks/crane_teleporter_top.png new file mode 100644 index 0000000000000000000000000000000000000000..51d9daf32484ed30864900966c05192514582c54 GIT binary patch literal 662 zcmV;H0%`q;P)FAykG&;lu{XV;l^qojl4_|E7>#GD!SeLGCfy0@V3<>h_e_xtcZ zpXYgF`FvjSABqF?^z<|Zl~U2Fl)`mg5{X1~9*f0r90%LB!vp|(dwVFQ5JE)8R4Rqz zINUuu!H@0*YPA}!>yk>P0PsAI7J!3;0|2(Sw`qNO#F>fT_W{Be zNGXw0Mm1*Wgj?r8YmLep&rM-!I;Lr|v$GT3Zvi+yK1NE(Far(qUlof*#&c6FZR)JA zuQQSzP zOPe~?YBe-kUSvK!sV52ICjrNCc$6$)YC4u>F_InQ+s{utwWhhvb!J%%TRhWCsZ?ra zpp>Gmt&Q@PkCAq4gU)H8L0AYg6AB||R&<#L(RiUR~efbaVenD+K|*1A7XF)9EU whSBuFq?FM<4zRz!&*9-=Q|8^>UH(OX0GzB>V(5tZH~;_u07*qoM6N<$f@4uMiU0rr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down.png index 37835aa95cc678391108db19c54f0baa51519cf9..1ca9e8f4db894e097c5aaf9f4bf091ae5f1aebcb 100644 GIT binary patch delta 485 zcmV1CIodG=IiPL_t(Ijir$>YZO5g$A5E#xOZrEt_K!^m4pM8D=h4UfW+3; zGL2q$-$E-zzkr>BmUe=~La~S%h)Co>I2Vqc?5=QGj@@Nwsr^Y9yU9;Qc5*FPg7q-nbHppND7te)q&y}G0N z?1YI;#{piy-LoccS^e(w&r>hA07@x*-{-<`8-Q1L?z^Ic=O5X8^0+m>GcnI|nm%Z) z3B!;p4<9(d?PpJk?lYm|pn~#=zRpLW+H>y{lFSJMd|b z$7AXD`xHgdGV^a^Yb_$~E0ZL#CdP40nx?0^ b{IB=}8SOo3@9Ocs00000NkvXXu0mjf4%qIa delta 433 zcmV;i0Z#sp1lt3UG=GvwL_t(Ijir&lOIuMC$3Is>e0k^;0^-nJN<|}dD2Q_wH}~$@ zLf5w0+y6n_bu3*9qC-Q6vu|lt_nLr%7Y^@y&pYRPzvp{Z zqtS3Y;}ig@)oQNjoRe=h4@W6Qzu%|V>v;lz;czGeA-*2Gqkr@Q_C9}-no>%Lj4_^I zGMNC7rYY9ixf_i!3khTeYb~?c3~Mca+Q$IIaZ#H7-hN>^O#xVYwJ(?D2tok7-dd-! zvdRT50BUbG066(}IoG=ckR*u|8h=HR5Clcx-<*kA$HT61T!fm(r$2u$9L^CarEt!P%ja)DN>k^k#rB8y zIRnK+V@z(hknbKggf7dwhp?~?v;z|1v_rK%1XFgZ;dfk=FWzsawnJW3evDx*)tBuEFZ{lb)LTkOy b<)_X)WSuyNk;YjU00000NkvXXu0mjf+Gf$6 diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up.png index 6609e9ae9a72024ce26fbc18ca4e5677d9443f12..0c0396c5bfa1b89540925768ddb69bb4d83c8f5d 100644 GIT binary patch delta 485 zcmVR%(e-LB2c^OXn27#{$S4(<_d?{LWofG3al05~}vQ&kmJ zRr%ZoK%VDbAb$v&gxfn@W!Js~S1kyd)OGE<^&PC62heJ@2-mi9m0f#ojPbcymaRr` zST0L1;@~=RckA#StmEW#Ob|5TmF4d~{kZkKg(!vd=cw`Qqb>>-R`}X1~>7Fpy5CLs^y^X8vug<09f$IiJt1iD{aWW!bGR b{|kQrHUCZuQ`t|?00000NkvXXu0mjfuEg_W delta 441 zcmV;q0Y?6h1mgpcG=G{&L_t(Ijir*mOPfI$$3GV&O-nNG3tVKzSg#yW3ZfW}g69 z-P#S8WeB_hysEBISt-%Q5xjf70l>*==Sgl3AWhQ{Op-j6l@bFv4I`v!3P6(NGu?&` zV&MP^g#wjmD}Mty4St*}rF0z_V?yz4rUQwG@5uj)5ju!*a@rwD@^Ik%FW;^g7H0^A z5Lj!2%8t~DxV-*`#M+F2K}5gLf4w>&^LT7T1RwxgEEbvl0BlNb<00t^jDe+1SEzqF zzp(B6+csQuJZblZ{qqY8&g6Gzu|K(d^!s12w{3S8^)hV>#=;`_00000NkvXXu0mjfIyldI diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top.png index 5bed3b0052d5587ab34023acd77179500aab7fd2..6fafd3b25fbe3a3fb6a9cec826ff3b9b36e5e2ba 100644 GIT binary patch delta 451 zcmV;!0X+V^1MLHlG=HQ?L_t(Ijir(?i_}0A$A5Dy%M$L2T^Ix_u@S-ISWq~73qOK3 zHp2DW`w0~8K7hT|HMSmDD2R=4SP2J$D48UiW-pwXBr{`?o9D(@2>xN1%$qkq{_nl0 z)oK;^4^04;%jF;#LXds?J4z`$N z)8M@aAj>k&kB<5I4IaIDNt&i30Kg7__a5gQ#u&0J!x+Q)(Xk}GdhitQJ;oTk_jvEA z>v{-?%YJ`H^W#0Yo*W2Z|JecN^J_x>k;P&`*LC7_0#MgAAp{BD+rN(9-Qx=%0C;%+ zHUKB5XE^6@&VNbn&UUv$2qeiAy}L(IU5JBdH%X>=?Nqhker9PhaJ6tY4aFttCRV)?B;OkE|#PxN72! zyN{)LBfy^}WLY-&3*&uRmV-%+N@&{_=bSv4&*$8H@jRRm0#;eNt^>vmp8&LNOVcz1 tCn1EZGJc=q9!DvFvMi~pYSiI>(J$(UNE@%-iI4yQ002ovPDHLkV1o3P*RB8n delta 402 zcmV;D0d4;61H1!}G=FnRL_t(Ijir*kO9Md=#eXYD2uD&z#Lh}Yl#oJ*osA%f|AAQA zr%Tk%e?+WfVI8oGosu$@AVMS`OQmGjfUnQ@BnJH zTINt|ZQt&aL8aVNC^PO>EAsAP`#=1 zIeP?PefQMnT7n=5?4JP+s+&|wW%{H9Cx<%#v^%|wTHAtalJ6I&l*)|cmuovuxjgEm{;m$1zEgWD54LT4=4Ai@7~pHrxY< wok}4gvHYI1$5*cU*zPoQ z#VbvNV;l|fjoE5FJl|`7cgX+V{Q9%;2Yp#lkrj7W_D08VZ85^25$@wjjlX3;eWIKWKoG#(Gi|Z aAJ~pg3_Q*~Ay)+GPzFy|KbLh*2~7aq)>6m- diff --git a/src/main/resources/assets/hbm/textures/blocks/crate_entangled_top.png b/src/main/resources/assets/hbm/textures/blocks/crate_entangled_top.png deleted file mode 100644 index dc1866989d671954007b1d182626b6f1587663f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmV+}0nz@6P)8*^A9!h?k zfK=KiA%VkZKidi^r5yfHnwt;~GbFAD?3{d<iw*R1C3o8Jx)CUc|%<(mi_@ zOamOEZL-aNf^^T%2g0;-C>8nJ`0Hh=^1xBO0ff$6`{arMw*UYD07*qoM6N<$f;~2R A;{X5v