From a218206f8017c4b76946b015663542675d5273f8 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 9 Dec 2022 23:37:44 +0100 Subject: [PATCH] pesky railcraft compat, more recipes, hydroseeding --- src/main/java/com/hbm/blocks/ModBlocks.java | 8 ++-- .../hbm/entity/projectile/EntityChemical.java | 25 ++++++++--- .../java/com/hbm/inventory/fluid/Fluids.java | 8 +++- .../inventory/recipes/CombinationRecipes.java | 2 +- .../recipes/LiquefactionRecipes.java | 5 +++ .../inventory/recipes/ShredderRecipes.java | 14 ++++++- .../java/com/hbm/main/CraftingManager.java | 4 +- src/main/java/com/hbm/main/MainRegistry.java | 2 + .../machine/TileEntityFurnaceCombination.java | 9 ++++ src/main/java/com/hbm/util/Compat.java | 39 +++++++++++++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 4 ++ src/main/resources/assets/hbm/lang/en_US.lang | 4 ++ .../hbm/textures/gui/fluids/seedslurry.png | Bin 0 -> 798 bytes .../models/tank/tank_COALCREOSOTE.png | Bin 0 -> 1274 bytes .../textures/models/tank/tank_SEEDSLURRY.png | Bin 0 -> 1279 bytes .../hbm/textures/models/tank/tank_WOODOIL.png | Bin 0 -> 1251 bytes 16 files changed, 107 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/seedslurry.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_COALCREOSOTE.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_SEEDSLURRY.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_WOODOIL.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 9a24ffaab..36a446e73 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1978,10 +1978,10 @@ public class ModBlocks { cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode"); machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt"); - oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt"); - gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid"); - gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon"); - fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); + oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt"); + gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid"); + gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon"); + fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid"); fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index 586d73fe6..bd8e0e3e2 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -345,6 +345,9 @@ public class EntityChemical extends EntityThrowableNT { if(mop.typeOfHit == mop.typeOfHit.BLOCK) { FluidType type = getType(); + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; if(type.hasTrait(FT_VentRadiation.class)) { FT_VentRadiation trait = type.getTrait(FT_VentRadiation.class); @@ -354,9 +357,6 @@ public class EntityChemical extends EntityThrowableNT { ChemicalStyle style = getStyle(); if(style == ChemicalStyle.BURNING || style == ChemicalStyle.GASFLAME) { - int x = mop.blockX; - int y = mop.blockY; - int z = mop.blockZ; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { @@ -369,9 +369,6 @@ public class EntityChemical extends EntityThrowableNT { } if(this.isExtinguishing()) { - int x = mop.blockX; - int y = mop.blockY; - int z = mop.blockZ; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { @@ -381,6 +378,22 @@ public class EntityChemical extends EntityThrowableNT { } } + Block block = worldObj.getBlock(x, y, z); + if(type == Fluids.SEEDSLURRY) { + if(block == Blocks.dirt || block == ModBlocks.waste_earth || block == ModBlocks.dirt_dead || block == ModBlocks.dirt_oily) { + + if(worldObj.getBlockLightValue(x, y + 1, z) >= 9 && worldObj.getBlockLightOpacity(x, y + 1, z) <= 2) { + worldObj.setBlock(x, y, z, Blocks.grass); + } + } + int meta = worldObj.getBlockMetadata(x, y, z); + if(block == Blocks.cobblestone) worldObj.setBlock(x, y, z, Blocks.mossy_cobblestone); + if(block == Blocks.stonebrick && meta == 0) worldObj.setBlock(x, y, z, Blocks.stonebrick, 1, 3); + if(block == ModBlocks.brick_concrete) worldObj.setBlock(x, y, z, ModBlocks.brick_concrete_mossy); + if(block == ModBlocks.concrete_brick_slab && meta % 8 == 0) worldObj.setBlock(x, y, z, ModBlocks.concrete_brick_slab, meta + 1, 3); + if(block == ModBlocks.brick_concrete_stairs) worldObj.setBlock(x, y, z, ModBlocks.brick_concrete_mossy_stairs, meta, 3); + } + this.setDead(); } } diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index b3a9a463a..3655c7197 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -95,6 +95,7 @@ public class Fluids { public static FluidType MUG_HOT; public static FluidType WOODOIL; public static FluidType COALCREOSOTE; + public static FluidType SEEDSLURRY; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -205,7 +206,8 @@ public class Fluids { MUG = new FluidType("MUG", 0x4B2D28, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID); MUG_HOT = new FluidType("MUG_HOT", 0x6B2A20, 0, 0, 0, EnumSymbol.NONE).setTemp(500).addTraits(DELICIOUS, LIQUID); WOODOIL = new FluidType("WOODOIL", 0x847D54, 2, 2, 0, EnumSymbol.NONE).addContainers(0xBF7E4F, ExtContainer.CANISTER).addTraits(LIQUID); - COALCREOSOTE = new FluidType(80, "COALCREOSOTE", 0x51694F, 3, 2, 0, EnumSymbol.NONE).addContainers(0x285A3F, ExtContainer.CANISTER).addTraits(LIQUID); + COALCREOSOTE = new FluidType("COALCREOSOTE", 0x51694F, 3, 2, 0, EnumSymbol.NONE).addContainers(0x285A3F, ExtContainer.CANISTER).addTraits(LIQUID); + SEEDSLURRY = new FluidType(81, "SEEDSLURRY", 0x7CC35E, 0, 0, 0, EnumSymbol.NONE).addContainers(0x7CC35E, ExtContainer.CANISTER).addTraits(LIQUID); // ^ ^ ^ ^ ^ ^ ^ ^ @@ -270,6 +272,8 @@ public class Fluids { metaOrder.add(GASOLINE_LEADED); metaOrder.add(COALGAS); metaOrder.add(COALGAS_LEADED); + metaOrder.add(COALCREOSOTE); + metaOrder.add(WOODOIL); metaOrder.add(BIOGAS); metaOrder.add(BIOFUEL); metaOrder.add(ETHANOL); @@ -277,6 +281,7 @@ public class Fluids { metaOrder.add(BALEFIRE); //processing fluids metaOrder.add(SALIENT); + metaOrder.add(SEEDSLURRY); metaOrder.add(ACID); metaOrder.add(SULFURIC_ACID); //NITRIC_ACID @@ -381,6 +386,7 @@ public class Fluids { registerCalculatedFuel(KEROSENE, (baseline / 0.09 * flammabilityNormal * demandHigh * complexityRefinery * complexityFraction), 1.5D, FuelGrade.AERO); registerCalculatedFuel(PETROLEUM, (baseline / 0.10 * flammabilityNormal * demandMedium * complexityRefinery), 0, null); registerCalculatedFuel(AROMATICS, (baseline / 0.15 * flammabilityLow * demandHigh * complexityRefinery * complexityCracking), 0, null); + registerCalculatedFuel(UNSATURATEDS, (baseline / 0.15 * flammabilityHigh * demandHigh * complexityRefinery * complexityCracking), 0, null); registerCalculatedFuel(LPG, (baseline / 0.05 * flammabilityNormal * demandMedium * complexityRefinery * complexityChemplant), 2.5, FuelGrade.HIGH); registerCalculatedFuel(NITAN, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * 25L, 2.5, FuelGrade.HIGH); registerCalculatedFuel(BALEFIRE, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * 100L, 2.5, FuelGrade.HIGH); diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 196ca38c9..8f45dd1d6 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -29,7 +29,7 @@ public class CombinationRecipes { recipes.put(LIGNITE.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); recipes.put(LIGNITE.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); - recipes.put(new ComparableStack(ModItems.briquette_lignite), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); + recipes.put(new ComparableStack(ModItems.briquette_lignite), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100))); recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index 0ae7084b0..b400ad20d 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -52,6 +52,11 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Items.sugar), new FluidStack(100, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModItems.biomass), new FluidStack(125, Fluids.BIOGAS)); + + recipes.put(new ComparableStack(Items.wheat_seeds), new FluidStack(50, Fluids.SEEDSLURRY)); + recipes.put(new ComparableStack(Blocks.tallgrass, 1, 1), new FluidStack(100, Fluids.SEEDSLURRY)); + recipes.put(new ComparableStack(Blocks.tallgrass, 1, 2), new FluidStack(100, Fluids.SEEDSLURRY)); + recipes.put(new ComparableStack(Blocks.vine), new FluidStack(100, Fluids.SEEDSLURRY)); //recipes.put(new ComparableStack(ModItems.solid_fuel_bf), new FluidStack(250, Fluids.BALEFIRE)); diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 185e1e90c..98410e1f9 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -200,9 +200,11 @@ public class ShredderRecipes extends SerializableRecipe { List logs = OreDictionary.getOres("logWood"); List planks = OreDictionary.getOres("plankWood"); + List saplings = OreDictionary.getOres("treeSapling"); for(ItemStack log : logs) ShredderRecipes.setRecipe(log, new ItemStack(ModItems.powder_sawdust, 4)); for(ItemStack plank : planks) ShredderRecipes.setRecipe(plank, new ItemStack(ModItems.powder_sawdust, 1)); + for(ItemStack sapling : saplings) ShredderRecipes.setRecipe(sapling, new ItemStack(Items.stick, 1)); List silicon = OreDictionary.getOres("itemSilicon"); if(!silicon.isEmpty()) { @@ -267,6 +269,10 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1)); ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27)); + ShredderRecipes.setRecipe(ModBlocks.oil_duct, new ItemStack(ModItems.powder_steel_tiny, 3)); + ShredderRecipes.setRecipe(ModBlocks.oil_duct_solid, new ItemStack(ModItems.powder_steel_tiny, 3)); + ShredderRecipes.setRecipe(ModBlocks.gas_duct, new ItemStack(ModItems.powder_steel, 1)); + ShredderRecipes.setRecipe(ModBlocks.gas_duct_solid, new ItemStack(ModItems.powder_steel, 1)); /* Sellafite scrapping */ ShredderRecipes.setRecipe(ModBlocks.sellafield_slaked, new ItemStack(Blocks.gravel)); @@ -412,7 +418,13 @@ public class ShredderRecipes extends SerializableRecipe { if(stack == null || stack.getItem() == null) return new ItemStack(ModItems.scrap); - ItemStack sta = shredderRecipes.get(new ComparableStack(stack).makeSingular()); + ComparableStack comp = new ComparableStack(stack).makeSingular(); + ItemStack sta = shredderRecipes.get(comp); + + if(sta == null) { + comp.meta = OreDictionary.WILDCARD_VALUE; + sta = shredderRecipes.get(comp); + } return sta == null ? new ItemStack(ModItems.scrap) : sta; } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 1af352818..8a0a4a85d 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -273,10 +273,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', STEEL.ingot(), 'P', IRON.plate() }); + /*addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', STEEL.ingot(), 'P', IRON.plate() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct), 16), new Object[] { "SIS", " ", "SIS", 'S', STEEL.plate(), 'I', IRON.plate() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.gas_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', STEEL.ingot(), 'P', CU.plate() }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.gas_duct), 16), new Object[] { "SIS", " ", "SIS", 'S', STEEL.plate(), 'I', CU.plate() }); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.gas_duct), 16), new Object[] { "SIS", " ", "SIS", 'S', STEEL.plate(), 'I', CU.plate() });*/ addRecipeAuto(new ItemStack(ModBlocks.machine_battery_potato, 1), new Object[] { "PCP", "WRW", "PCP", 'P', ItemBattery.getEmptyBattery(ModItems.battery_potato), 'C', CU.ingot(), 'R', REDSTONE.block(), 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index ee288b7a3..e0b32e1f2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -71,6 +71,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.util.ArmorUtil; +import com.hbm.util.Compat; import com.hbm.util.SuicideThreadDump; import com.hbm.world.feature.*; import com.hbm.world.generator.CellularDungeonFactory; @@ -812,6 +813,7 @@ public class MainRegistry { new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); + Compat.handleRailcraftNonsense(); SuicideThreadDump.register(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 8fb1e879b..96d67a6c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerFurnaceCombo; import com.hbm.inventory.fluid.Fluids; @@ -15,6 +17,7 @@ import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -109,6 +112,12 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen this.decrStackSize(0, 1); } + + List entities = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord + 2, zCoord - 0.5, xCoord + 1.5, yCoord + 4, zCoord + 1.5)); + + for(Entity e : entities) e.setFire(5); + + if(worldObj.getTotalWorldTime() % 10 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 1, this.zCoord, "hbm:weapon.flamethrowerShoot", 0.25F, 0.5F); } } else { this.progress = 0; diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index 8e71c08e3..1ae1a40ec 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -2,11 +2,17 @@ package com.hbm.util; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; import com.hbm.handler.HazmatRegistry; import com.hbm.hazard.HazardRegistry; +import com.hbm.main.MainRegistry; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.eventhandler.EventBus; +import cpw.mods.fml.common.eventhandler.IEventListener; +import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -21,6 +27,7 @@ public class Compat { public static final String MOD_EF = "etfuturum"; public static final String MOD_REC = "ReactorCraft"; public static final String MOD_TIC = "TConstruct"; + public static final String MOD_RC = "Railcraft"; public static Item tryLoadItem(String domain, String name) { return (Item) Item.itemRegistry.getObject(getReg(domain, name)); @@ -34,6 +41,10 @@ public class Compat { return domain + ":" + name; } + public static boolean isModLoaded(String modid) { + return Loader.isModLoaded(modid); + } + public static enum ReikaIsotope { C14(HazardRegistry.gen_10K), U235(HazardRegistry.u235), @@ -143,7 +154,31 @@ public class Compat { } } - public static boolean isModLoaded(String modid) { - return Loader.isModLoaded(modid); + public static void handleRailcraftNonsense() { + + if(!Loader.isModLoaded(MOD_RC)) return; + + MainRegistry.logger.info("#######################################################"); + MainRegistry.logger.info("| Railcraft detected, deploying anti-nonsense measures..."); + + try { + + ConcurrentHashMap> listeners = ReflectionHelper.getPrivateValue(EventBus.class, FMLCommonHandler.instance().bus(), "listeners"); + Object nonsense = null; + for(Object o : listeners.keySet()) { + if(o.getClass().getName().equals("mods.railcraft.common.blocks.hidden.TrailTicker")) { + MainRegistry.logger.info("| Found TrailTicker!"); + nonsense = o; + break; + } + } + + FMLCommonHandler.instance().bus().unregister(nonsense); + MainRegistry.logger.info("| Successfully removed Railcraft nonsense."); + + } catch(Exception x) { + MainRegistry.logger.error("| Tried to remove Railcraft block but failed due to " + x.getMessage()); + } + MainRegistry.logger.info("#######################################################"); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 9eb7a5160..6243436fb 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -297,6 +297,7 @@ container.factoryTitanium=Einfache Fabrik container.fluidtank=Tank container.forceField=Kraftfeldgenerator container.frackingTower=Hydraulischer Frackingturm +container.furnaceCombination=Kombinationsofen container.furnaceIron=Eiserner Ofen container.furnaceSteel=Stahlofen container.fusionMultiblock=Großer Fusionsreaktor @@ -637,6 +638,7 @@ hbmfluid.reclaimed=Wiederaufbetreitetes Industrieöl hbmfluid.salient=Saftiges Grün hbmfluid.sas3=Schrabidiumtrisulfat hbmfluid.schrabidic=Schrabidische Säure +hbmfluid.seedslurry=Saatgemisch hbmfluid.smear=Industrieöl hbmfluid.spentsteam=Niedrigdruckdampf hbmfluid.steam=Dampf @@ -3529,6 +3531,8 @@ tile.frozen_dirt.name=Gefrorene Erde tile.frozen_grass.name=Gefrorenes Gras tile.frozen_log.name=Gefrorener Baumstamm tile.frozen_planks.name=Gefrorene Holzbretter +tile.furnace_combination.name=Kombinationsofen +tile.furnace_combination.desc=Großer Ofen welcher Holzhokle und Kohlekoks herstellen kann.$Erzeugt flüssige Nebenprodukte.$Wärmetransferrate: ΔT*0.25 TU/t tile.furnace_iron.name=Eiserner Ofen tile.furnace_iron.desc=Größerer und effizienterer Ofen,$verschwended keinen Brennstoff im Leerlauf. tile.furnace_steel.name=Stahlofen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d092ca4a3..8a03f8a68 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -617,6 +617,7 @@ container.fluidtank=Tank container.fileCabinet=Filing Cabinet container.forceField=Forcefield Emitter container.frackingTower=Hydraulic Fracking Tower +container.furnaceCombination=Combination Oven container.furnaceIron=Iron Furnace container.furnaceSteel=Steel Furnace container.fusionMultiblock=Big Fusion Reactor @@ -987,6 +988,7 @@ hbmfluid.reclaimed=Reclaimed Industrial Oil hbmfluid.salient=Salient Green hbmfluid.sas3=Schrabidium Trisulfide hbmfluid.schrabidic=Schrabidic Acid +hbmfluid.seedslurry=Seeding Slurry hbmfluid.smear=Industrial Oil hbmfluid.spentsteam=Low-Pressure Steam hbmfluid.steam=Steam @@ -4099,6 +4101,8 @@ tile.frozen_dirt.name=Frozen Dirt tile.frozen_grass.name=Frozen Grass tile.frozen_log.name=Frozen Log tile.frozen_planks.name=Frozen Planks +tile.furnace_combination.name=Combination Oven +tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: ΔT*0.25 TU/t tile.furnace_iron.name=Iron Furnace tile.furnace_iron.desc=Larger and more efficient furnace,$does not waste fuel when idle. tile.furnace_steel.name=Steel Furnace diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/seedslurry.png b/src/main/resources/assets/hbm/textures/gui/fluids/seedslurry.png new file mode 100644 index 0000000000000000000000000000000000000000..c64756d9cdc085e46f1645db6b6d2513ac80cac5 GIT binary patch literal 798 zcmV+(1L6FMP)9Ag6h)Wq#5Q2S5Q1eK2q_|nKuSAO+9{{L(rxD@rkxj= z2bhF8PQQ-SNx~`*|rb(mGAdX|I)hecG5(EL&YL%iWP!xq)t%j7c zJo5VbitD-vAyBg{BS{hlg8}RH8X*LRVet6)NF2v3mrLH>-iV?I%d(JC(rUG+R4R14 zUDVBH!*;vn{{Eguqrqym!t*>XFE6oen>0;PRTU{Ed7jg1waBuJD2k9$qB@Sl&CLzn zZkI3&xx2dqKuU>aSzKIPpsFh8=jW`~YowGEMM1CEV>B9}=6TNZ^D`eGA9TB2o}Qin z@O>Xm)9Cm6wA*cb-=|WkFrUxSb)6`RczAf=BuNrH&%?HDUS3|9PNysu3vO?3@qM4| zc1yKdMbk9$JZC%}mo3`uHfp=wCJaL~O~Y}Va=M}@2*VK5G&vrRn5M~SG$IHBcDr2( z`((f0^ZEHnqtQT0$zri!Fc>hO&#`SAAp}X1a6BH_Znt=zM-)YTe}7XH1*%~fbUGb8 z&qLRBf*?Q$fu?DwstSN` zk>@$}dL7%g+3j{1hCv+1WLXA4mSw*nHk(a)y&h+0XB-X(f*@c#9y1&c`TF`I%Q8Bh z4!hkB08P`V)oNT_U7;unCx&6L-|s1k0?V=xLh%0n&SWwn3`5d1Wwlx%r7R6p6ovJA cjjrqb4+l(;P(!0B^Z)<=07*qoM6N<$f-jh4^#A|> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_COALCREOSOTE.png b/src/main/resources/assets/hbm/textures/models/tank/tank_COALCREOSOTE.png new file mode 100644 index 0000000000000000000000000000000000000000..879f47d4a551675f2ab74f1048bd68e284efca0e GIT binary patch literal 1274 zcmV1gh6o%nrlnY2rN5>@~Q6MB58Y0q=Hc0`Y@GY?11coA^ z4NXvJs3{_)qE1JLoQ{eX8rB*Q7`*5e%qoG(7+6W45#M)V*2(#`@rOvuzj+u%UU67ZD zua~y>p6>T{Y~qz7;uV63SI9=8jiAs*5U&&vuh5BjRVm^Xg1X{Ws3Gp&zbn6Pent%y zbloHH=-z|1`%vf+i0R@f^a$Mi{;_tSotOyFPS~)S&!4{Z7O!&Aq6?B5uVTh%;+3MI z;#JIk#H)g&UcHJMqm#ZPNA9V)+SSq%GDeR8IogP*F`9U#XQ+4;Ge*;*3&Pc_N(~jS z9^HE&-+o+o?nAsPNNT(qBuCQ|Y#(DZ7AW)xM4ju-jaQr*TRn6Q6|cA+U76H)6?Lwg zc%_G%0}+%OuLjA{^aR_-7;OYO8Vg*#QZ!V&iW#G6(FIA3S5fD>iC21tidTc&Glu@K zv;{hG&zKS9Xd`0AXqL86ps}u@T^+ zh7sgwBY5^|%Xsz*K`d=iDVDZCkmk}BbloGstlJ1qm>9vzfm_DSfe7N}z)Ep*Ac8cX zy`t+L0cPDsaKglhL6)|_YAkJmAeOeM6gLMVsOXggu{~{XaQ*#i?RN4S0Z=$DaL3cD6|p8D@8-y92kQZT@e1PaHaUW zR|w+j6|zxiBPg^H#4FFm`K5@6>>uo9AB%WZsJ6)d_E3md0|*uN;`}nJWtSAMXwkA< z&({B3(_4hgTjuYA^w4eXpsroFinX6Z)%`8~BE`AH$qwht5=H5#4Bv3+IVH% zDB~6K@$40{QD`G5v=PKBMZ_xv5w9vmyh0H13fU;M5fs`8;*}!e6@rLYl_FjthbMbvH$=8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SEEDSLURRY.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SEEDSLURRY.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff0101ace043258d7cf2c696d3e05608f18525d GIT binary patch literal 1279 zcmeAS@N?(olHy`uVBq!ia0vp^RY2Us!3HEZPulwcNU;<hN@8&ejZzcHet zHnZ6J1^Am6oZf^g3xfE}VKp)2%JMXnWc6qyuedYbri2 zExls9d*0Vi_bx3GHrhFNU5>u~@wu|ID?|l9a)lkyW?6i}D*N4F#h8y3FS?<_wawzQrs85e$KCq_xoQ>{B~{L>6r3gFBlcvwI5De+!-$TRdjvK zuZ*Y?ryW&OSMGas_1@o!fA0Lfwgas1N$yBhcAg`9GPRNy5qYS=XASWr9bo!Ro$KaDR%wtPVbQH zLkT*HzTBH{|5G&EDL4-pQj?hzMT?6Rnl~~&Skxx;Bm<}~>-3KATwyx76E&x8YY08F zRQJaVIR>}8UIkyhIK%kv7^$%z>N?pt(<`$`LDx#r@crIJ7nl#Mh~~80HT6YmCij}- zm&7(CWp?`*S_*{u@U?_~)U>gkyXBsa!@{WxE_ey7SLza7|7!c|9SeXSHjNWi{^Sc0 zs|j;fh*ND@sw>bVHrMjH^pnhsVAX=_YZguA(6!Rk`*=z{s#9S7qAsA2`(vJCLPExI zfiHYo^z2>b*Rr&RHG$%4GIQ*OMZ$-!bERu7eZM#9%3OhUaf%W^NnjecT)AOr~em+y!s(UN!$*ba{ zpRYb&wf-dU$5o3~{;)gq++In^X#V-@$8;Wrrfi#5^(XWGtzEh63k~O=clUK&*Dbl; zZT6AXF~1i3u95E9YJ2_2)4!YEZr&p^UHSdfr$6HNRLN8tPt~}v>*Ch@iO#^#S}k5J z?b_#Cx@XlYx0RpL`D%;w?nXY>-6iGQ^>*8Fz2htG!|$(?KmF}S*_u^ZiMu6AmoK?o z5o&ugprA6Qe(qZfy;sLK$=-e{5i9xT>gq?mYqP4~RLO|@{x`65eIFebzCLH|s(*XV z7uM8&H|w5#>FR1fb#}A4W^3koud|OUpS0-ZlD6FWcaF}Hk*GP8qOmwH-uJ!dboGT! z{xev%zleF%S~kZZuxWL;Ag@`RqEFaIE`K)Z^#X0x>jiqi`B)*&)n!kU=tr$!U?vkJ fC^{u*&oAy57QXKq69cq>B^raLtDnm{r-UW|?}}fg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_WOODOIL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_WOODOIL.png new file mode 100644 index 0000000000000000000000000000000000000000..9291f419784d75a83cebfe58754ff22e7f0fff12 GIT binary patch literal 1251 zcmV<91RVQ`P)Q));DOTMx#QZN5JV?cWAt_K2d8Mx`v8ZE@L!3 zIw8LC%IR7+@hTn`2SVi=uLjA{#H;ONj5dNCjS6?KA{r`Qxs1{D=!E#jE2sO>#H)CQ zidTcI8AE^A+5)XuGiC(OUK!ysMsJ+{i?CmJSHAmow{eMTZJ3NDq-|q%?GK{MgYd+w zh*%s5Rm{bKOvXlln;J%tqmAI%t1aW%E2!AoB2#Q_0aeVcE%@pl0cPDsaQDgxb`IP! z76(Gb;=oL?I1s9s&tCD>Jp#E&S}@ zO7$sptC&V>gRWtGqh*uHCidR0nAu#Js2wPhq7(F_3 zt`Er5qm3Y5MHC}m`9v!bdUR4;;+0Rd5+Pni6(e5x&c>OHB_w9NqR^QL-F}KO+6W45 z1o0}Op%w?aphqW!e=D3R{_ho3+`U3D3T*_1HiCH7uy=SOA|gLOzX(1T@hVYek(z&7Z=A>o4vymwM{PnImm2}){0zztvs$5xBh-^h*u2{UY@Ew*T;wN z_eDfxKA*4sjEPr~X+5>xv$bB{^$%b^pHJF~+!QljO}fOZT*jj=)=kDXz1PO&^U~U! zEoRls`)o0jqA04FH%o~Et(#r@7C8j*Dzav=w^8KSOvkIbdXy@;jLEqSXTA35<_Fb` zE86>7n{_c}Q~S{PQ!i{^Gw)Ok60e%G*z-5X>T4qU%y->6n&;_5pXVC=-K(50ENoL& zcdzO_*1DALUiH2>u>KWXzYx*9D51S3qF;Jk*S1LK{K6iimgx74a%l z#4D(XR|rO-jiAs*5U(O4UO`2?$`tVmD&iG_QD`G5v=PLsh*FAI{{U8*L;gD18dd-R N002ovPDHLkV1nn(WCs8M literal 0 HcmV?d00001