pesky railcraft compat, more recipes, hydroseeding

This commit is contained in:
Bob 2022-12-09 23:37:44 +01:00
parent 1dea7f7ba3
commit a218206f80
16 changed files with 107 additions and 17 deletions

View File

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

View File

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

View File

@ -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<Integer, FluidType> idMapping = new HashMap();
private static final HashMap<String, FluidType> 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);

View File

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

View File

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

View File

@ -200,9 +200,11 @@ public class ShredderRecipes extends SerializableRecipe {
List<ItemStack> logs = OreDictionary.getOres("logWood");
List<ItemStack> planks = OreDictionary.getOres("plankWood");
List<ItemStack> 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<ItemStack> 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;
}

View File

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

View File

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

View File

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

View File

@ -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<Object, ArrayList<IEventListener>> 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("#######################################################");
}
}

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB