From fc531e1c603b90b98251f0989a17214bef026c82 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 1 Mar 2023 16:43:43 +0100 Subject: [PATCH] it's everyone's favorite --- .../explosion/ExplosionNukeRayBatched.java | 9 ++-- .../java/com/hbm/inventory/fluid/Fluids.java | 5 +- .../fluid/tank/FluidLoaderInfinite.java | 45 ++++++++++++++++ .../hbm/inventory/fluid/tank/FluidTank.java | 40 +------------- .../fluid/trait/FT_VentRadiation.java | 8 +++ .../inventory/recipes/CombinationRecipes.java | 3 +- .../recipes/CrystallizerRecipes.java | 4 +- src/main/java/com/hbm/items/ModItems.java | 10 ++-- .../hbm/items/machine/ItemInfiniteFluid.java | 26 +++++++++ .../java/com/hbm/items/tool/ItemLeadBox.java | 4 ++ src/main/java/com/hbm/util/TimeAnalyzer.java | 51 ++++++++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 3 +- src/main/resources/assets/hbm/lang/en_US.lang | 3 +- .../hbm/textures/gui/fluids/chlorine.png | Bin 0 -> 555 bytes .../textures/models/tank/tank_CHLORINE.png | Bin 0 -> 1356 bytes .../models/tank/tank_SULFURIC_ACID.png | Bin 973 -> 1377 bytes 16 files changed, 158 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java create mode 100644 src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java create mode 100644 src/main/java/com/hbm/util/TimeAnalyzer.java create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/chlorine.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_CHLORINE.png diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java index 9dbb1bf00..8f0b72cd7 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java @@ -8,6 +8,7 @@ import java.util.List; import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; @@ -103,13 +104,15 @@ public class ExplosionNukeRayBatched { double fac = 100 - ((double) i) / ((double) length) * 100; fac *= 0.07D; + + Block block = world.getBlock(iX, iY, iZ); - if(!world.getBlock(iX, iY, iZ).getMaterial().isLiquid()) - res -= Math.pow(world.getBlock(iX, iY, iZ).getExplosionResistance(null), 7.5D - fac); + if(!block.getMaterial().isLiquid()) + res -= Math.pow(block.getExplosionResistance(null), 7.5D - fac); //else // res -= Math.pow(Blocks.air.getExplosionResistance(null), 7.5D - fac); // air is 0, might want to raise that is necessary - if(res > 0 && world.getBlock(iX, iY, iZ) != Blocks.air) { + if(res > 0 && block != Blocks.air) { lastPos = new FloatTriplet(x0, y0, z0); //all-air chunks don't need to be buffered at all ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(iX >> 4, iZ >> 4); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 865d529ba..523522dfd 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -103,6 +103,7 @@ public class Fluids { public static FluidType SYNGAS; public static FluidType OXYHYDROGEN; public static FluidType RADIOSOLVENT; + public static FluidType CHLORINE; //everone's favorite! private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -221,7 +222,8 @@ public class Fluids { BLOOD_HOT = new FluidType("BLOOD_HOT", 0xF22419, 3, 0, 0, EnumSymbol.NONE).addTraits(LIQUID).setTemp(666); //it's funny because it's the satan number SYNGAS = new FluidType("SYNGAS", 0x131313, 1, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS); OXYHYDROGEN = new FluidType("OXYHYDROGEN", 0x483FC1, 0, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS); - RADIOSOLVENT = new FluidType(88, "RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, LEADCON, new FT_Corrosive(50), new FT_VentRadiation(0.01F)); + RADIOSOLVENT = new FluidType("RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, LEADCON, new FT_Corrosive(50), new FT_VentRadiation(0.01F)); + CHLORINE = new FluidType(89, "CHLORINE", 0xBAB572, 4, 0, 0, EnumSymbol.OXIDIZER).addTraits(GASEOUS, new FT_Corrosive(25), new FT_Poison(true, 1)); // ^ ^ ^ ^ ^ ^ ^ ^ @@ -257,6 +259,7 @@ public class Fluids { metaOrder.add(HELIUM3); metaOrder.add(OXYGEN); metaOrder.add(XENON); + metaOrder.add(CHLORINE); metaOrder.add(MERCURY); //oils, fuels metaOrder.add(OIL); diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java new file mode 100644 index 000000000..529b7b484 --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java @@ -0,0 +1,45 @@ +package com.hbm.inventory.fluid.tank; + +import java.util.Random; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.machine.ItemInfiniteFluid; + +import net.minecraft.item.ItemStack; + +public class FluidLoaderInfinite extends FluidLoadingHandler { + + private static Random rand = new Random(); + + @Override + public boolean fillItem(ItemStack[] slots, int in, int out, FluidTank tank) { + + if(slots[in] == null || !(slots[in].getItem() instanceof ItemInfiniteFluid) || tank.getTankType() == Fluids.NONE) return false; + + ItemInfiniteFluid item = (ItemInfiniteFluid) slots[in].getItem(); + + if(item.getType() != null && tank.type != item.getType()) return false; + + if(item.getChance() <= 1 || rand.nextInt(item.getChance()) == 0) { + tank.setFill(Math.min(tank.getFill() + item.getAmount(), tank.getMaxFill())); + } + + return true; + } + + @Override + public boolean emptyItem(ItemStack[] slots, int in, int out, FluidTank tank) { + + if(slots[in] == null || !(slots[in].getItem() instanceof ItemInfiniteFluid)) return false; + + ItemInfiniteFluid item = (ItemInfiniteFluid) slots[in].getItem(); + + if(item.getType() != null && tank.type != item.getType()) return false; + + if(item.getChance() <= 1 || rand.nextInt(item.getChance()) == 0) { + tank.setFill(Math.max(tank.getFill() - item.getAmount(), 0)); + } + + return true; + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 0d3f855d2..5e7d9187f 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -8,7 +8,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GuiInfoContainer; -import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEFluidPacket; @@ -28,6 +27,7 @@ public class FluidTank { static { loadingHandlers.add(new FluidLoaderStandard()); loadingHandlers.add(new FluidLoaderFillableItem()); + loadingHandlers.add(new FluidLoaderInfinite()); } FluidType type; @@ -104,25 +104,6 @@ public class FluidTank { if(slots[in] == null) return false; - if(slots[in].getItem() == ModItems.fluid_barrel_infinite && type != Fluids.NONE) { - this.fluid = this.maxFluid; - return true; - } - - if(slots[in].getItem() == ModItems.inf_water && this.type == Fluids.WATER) { - this.fluid += 50; - if(this.fluid > this.maxFluid) - this.fluid = this.maxFluid; - return true; - } - - if(slots[in].getItem() == ModItems.inf_water_mk2 && this.type == Fluids.WATER) { - this.fluid += 500; - if(this.fluid > this.maxFluid) - this.fluid = this.maxFluid; - return true; - } - int prev = this.getFill(); for(FluidLoadingHandler handler : loadingHandlers) { @@ -140,25 +121,6 @@ public class FluidTank { if(slots[in] == null) return false; - if(slots[in].getItem() == ModItems.fluid_barrel_infinite) { - this.fluid = 0; - return true; - } - - if(slots[in].getItem() == ModItems.inf_water && type == Fluids.WATER) { - this.fluid -= 50; - if(this.fluid < 0) - this.fluid = 0; - return true; - } - - if(slots[in].getItem() == ModItems.inf_water_mk2 && type == Fluids.WATER) { - this.fluid -= 500; - if(this.fluid < 0) - this.fluid = 0; - return true; - } - int prev = this.getFill(); for(FluidLoadingHandler handler : loadingHandlers) { diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index 64c4c5072..de8dd7764 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -1,8 +1,11 @@ package com.hbm.inventory.fluid.trait; +import java.util.List; + import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.tank.FluidTank; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class FT_VentRadiation extends FluidTrait { @@ -21,4 +24,9 @@ public class FT_VentRadiation extends FluidTrait { public void onFluidRelease(World world, int x, int y, int z, FluidTank tank, int overflowAmount) { ChunkRadiationManager.proxy.incrementRad(world, x, y, z, overflowAmount * radPerMB); } + + @Override + public void addInfo(List info) { + info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 132e4ef00..c0cbc39d6 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -35,6 +35,7 @@ public class CombinationRecipes { recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.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))); + recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 50))); recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); recipes.put(KEY_SAPLING, new Pair(null, new FluidStack(Fluids.WOODOIL, 50))); @@ -44,7 +45,7 @@ public class CombinationRecipes { recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), null)); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), null)); - + recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50))); } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 42384165e..d343e6a6d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -120,8 +120,8 @@ public class CrystallizerRecipes { registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), woodOil); registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), woodOil); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.AROMATICS, 250)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.AROMATICS, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); List quartz = OreDictionary.getOres("crystalCertusQuartz"); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1ec3ac30c..9e3e4f426 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3130,7 +3130,7 @@ public class ModItems { pellet_coal = new Item().setUnlocalizedName("pellet_coal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellet_coal"); component_limiter = new Item().setUnlocalizedName("component_limiter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_limiter"); component_emitter = new Item().setUnlocalizedName("component_emitter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_emitter"); - chlorine_pinwheel = new Item().setUnlocalizedName("chlorine_pinwheel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chlorine_pinwheel"); + chlorine_pinwheel = new ItemInfiniteFluid(Fluids.CHLORINE, 1, 2).setUnlocalizedName("chlorine_pinwheel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chlorine_pinwheel"); ring_starmetal = new Item().setUnlocalizedName("ring_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ring_starmetal"); flywheel_beryllium = new Item().setUnlocalizedName("flywheel_beryllium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":flywheel_beryllium"); deuterium_filter = new Item().setUnlocalizedName("deuterium_filter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":deuterium_filter"); @@ -3149,7 +3149,7 @@ public class ModItems { fins_big_steel = new Item().setUnlocalizedName("fins_big_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fins_big_steel"); fins_tri_steel = new Item().setUnlocalizedName("fins_tri_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fins_tri_steel"); fins_quad_titanium = new Item().setUnlocalizedName("fins_quad_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fins_quad_titanium"); - sphere_steel = new Item().setUnlocalizedName("sphere_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sphere_steel"); + sphere_steel = new Item().setUnlocalizedName("sphere_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sphere_steel"); pedestal_steel = new Item().setUnlocalizedName("pedestal_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pedestal_steel"); dysfunctional_reactor = new Item().setUnlocalizedName("dysfunctional_reactor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":dysfunctional_reactor"); rotor_steel = new Item().setUnlocalizedName("rotor_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rotor_steel"); @@ -3366,8 +3366,8 @@ public class ModItems { singularity_spark = new ItemDrop().setUnlocalizedName("singularity_spark").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_spark_alt"); pellet_antimatter = new ItemDrop().setUnlocalizedName("pellet_antimatter").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.cell_empty).setTextureName(RefStrings.MODID + ":pellet_antimatter"); crystal_xen = new ItemDrop().setUnlocalizedName("crystal_xen").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":crystal_xen"); - inf_water = new Item().setUnlocalizedName("inf_water").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":inf_water"); - inf_water_mk2 = new Item().setUnlocalizedName("inf_water_mk2").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":inf_water_mk2"); + inf_water = new ItemInfiniteFluid(Fluids.WATER, 50).setUnlocalizedName("inf_water").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":inf_water"); + inf_water_mk2 = new ItemInfiniteFluid(Fluids.WATER, 500).setUnlocalizedName("inf_water_mk2").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":inf_water_mk2"); stamp_stone_flat = new ItemStamp(10, StampType.FLAT).setUnlocalizedName("stamp_stone_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_stone_flat"); stamp_stone_plate = new ItemStamp(10, StampType.PLATE).setUnlocalizedName("stamp_stone_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_stone_plate"); @@ -4970,7 +4970,7 @@ public class ModItems { fluid_tank_lead_full = new ItemFluidTank().setUnlocalizedName("fluid_tank_lead_full").setContainerItem(ModItems.fluid_tank_lead_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank_lead"); fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); - fluid_barrel_infinite = new Item().setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite"); + fluid_barrel_infinite = new ItemInfiniteFluid(null, 1_000_000_000).setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite"); siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":cassette"); fluid_duct = new ItemFluidDuct().setUnlocalizedName("fluid_duct").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":duct"); diff --git a/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java b/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java new file mode 100644 index 000000000..011b596b6 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java @@ -0,0 +1,26 @@ +package com.hbm.items.machine; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraft.item.Item; + +public class ItemInfiniteFluid extends Item { + + private FluidType type; + private int amount; + private int chance; + + public ItemInfiniteFluid(FluidType type, int amount) { + this(type, amount, 1); + } + + public ItemInfiniteFluid(FluidType type, int amount, int chance) { + this.type = type; + this.amount = amount; + this.chance = chance; + } + + public FluidType getType() { return this.type; } + public int getAmount() { return this.amount; } + public int getChance() { return this.chance; } +} diff --git a/src/main/java/com/hbm/items/tool/ItemLeadBox.java b/src/main/java/com/hbm/items/tool/ItemLeadBox.java index e020d1483..0e4384955 100644 --- a/src/main/java/com/hbm/items/tool/ItemLeadBox.java +++ b/src/main/java/com/hbm/items/tool/ItemLeadBox.java @@ -19,6 +19,10 @@ import net.minecraft.world.World; public class ItemLeadBox extends Item implements IGUIProvider { + public ItemLeadBox() { + this.setMaxStackSize(1); + } + @Override public int getMaxItemUseDuration(ItemStack stack) { return 1; diff --git a/src/main/java/com/hbm/util/TimeAnalyzer.java b/src/main/java/com/hbm/util/TimeAnalyzer.java new file mode 100644 index 000000000..856f80c8c --- /dev/null +++ b/src/main/java/com/hbm/util/TimeAnalyzer.java @@ -0,0 +1,51 @@ +package com.hbm.util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.util.Tuple.Pair; + +/** A more lightweight, punctual version of the dreadfully slow vanilla profiler. */ +public class TimeAnalyzer { + + /* instead of writing to the hashmap outright, we write it to a list since during analysis using a hashmap would add unnecessary load */ + private static List> deltas = new ArrayList(); + private static String currentSection = ""; + private static long sectionStartTime = 0; + + public static void startCount(String section) { + currentSection = section; + sectionStartTime = System.nanoTime(); + } + + public static void endCount() { + long delta = System.nanoTime() - sectionStartTime; + deltas.add(new Pair(currentSection, delta)); + } + + public static void startEndCount(String section) { + endCount(); + startCount(section); + } + + public static void dump() { + HashMap milliTime = new HashMap(); + + for(Pair delta : deltas) { + Long total = milliTime.get(delta.getKey()); + if(total == null) total = new Long(0); + total += delta.getValue(); + milliTime.put(delta.getKey(), total); + } + + for(Entry entry : milliTime.entrySet()) { + System.out.println(entry.getKey() + ": " + entry.getValue() + "ns"); + } + + currentSection = ""; + sectionStartTime = 0; + deltas.clear(); + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 4a958a8d6..77c50b428 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -590,6 +590,7 @@ hbmfluid.bitumen=Bitumen hbmfluid.blood=Blut hbmfluid.blood_hot=Heißes Blut hbmfluid.carbondioxide=Kohlenstoffdioxid +hbmfluid.chlorine=Chlorgas hbmfluid.coalcreosote=Kohleteer-Kreosot hbmfluid.coalgas=Kohlebenzin hbmfluid.coalgas_leaded=Bleikohlebenzin @@ -2400,7 +2401,7 @@ item.oil_tar.coal.name=Kohleteer item.oil_tar.name=Ölteer item.oil_tar.crude.name=Erdölteer item.oil_tar.crack.name=Crackölteer -item.oil_tar.wax.name=Petroleumwachs +item.oil_tar.wax.name=Chloriertes Petroleumwachs item.oil_tar.wood.name=Holzteer item.ore.asbestos=Asbest item.ore.borax=Borax diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7684cb266..3f0ccfaa8 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1147,6 +1147,7 @@ hbmfluid.bitumen=Bitumen hbmfluid.blood=Blood hbmfluid.blood_hot=Hot Blood hbmfluid.carbondioxide=Carbon Dioxide +hbmfluid.chlorine=Chlorine Gas hbmfluid.coalcreosote=Coal Tar Creosote hbmfluid.coalgas=Coal Gasoline hbmfluid.coalgas_leaded=Leaded Coal Gasoline @@ -3066,7 +3067,7 @@ item.oil_detector.noOil=No oil detected. item.oil_tar.coal.name=Coal Tar item.oil_tar.crude.name=Oil Tar item.oil_tar.crack.name=Crack Oil Tar -item.oil_tar.wax.name=Petroleum Wax +item.oil_tar.wax.name=Chlorinated Petroleum Wax item.oil_tar.wood.name=Wood Tar item.ore.asbestos=Asbestos item.ore.borax=Borax diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorine.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorine.png new file mode 100644 index 0000000000000000000000000000000000000000..07047b99343b6422b610f5a1ea96432987395fa6 GIT binary patch literal 555 zcmV+`0@VG9P)&#&JAwN{SfV45bJbJSYt>$)xgy!W)$Ff&33k26)J*2=!`0K^zs z*Od?gs>-%)s4CMm@$~e>zVFmpan2zk_)^MHnx=`IGbtrP2(;Gd0>^Ox;G6@XltPRV z*|rVm9JkwTyn3D|tu=DahzKDBy!Ygs$5z#c1rZr-9mg?>*L6iz5s`6)=1U}oI!ckcK5VBvGlqa6`JRVk(5oEu#F#g~^C%#2bB=XpLl5D{8y zT-Qa6aab`kZnqo2DE|8T;{E-d7~_9YcFql7o%-wRD{pUa^vCCU9vLX5P-`6#mz*=T z);?2Im5+~)LA#I9IY*DZs?yoXG)?ULP6%Oqd#um%L_}EEm3`kijsxc$W=3o6A=*{? t&jYZoE8pMWKav?jAcQa&)mjk|{sJOKJr|Jh12_Nx002ovPDHLkV1lb5`=S5< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_CHLORINE.png b/src/main/resources/assets/hbm/textures/models/tank/tank_CHLORINE.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6c4a9d65f52549285eb29ed12ab3e569837a07 GIT binary patch literal 1356 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