diff --git a/changelog b/changelog index 00743753b..07f6038d5 100644 --- a/changelog +++ b/changelog @@ -9,8 +9,18 @@ * Replace the journals * Instead of opening them and making a template, they act as a multi template * Blueprints need to remain in the slot, removing them will disable the recipes again +* More paintables + * Paintable pneumatic tube + * Behaves the exact same as a regular pneumatic tube + * Can also be used as in and outputs + * Full block + * Paintable OpenComputers cable + * Only enabled if OpenComputers is installed + * Full block + * Also supports OC wire colors ## Changed +* Updated chinese and ukrainian localization * Removed levitation unit * Many of NTM's regular building blocks now have forge microblock support * RBMK crane models now conform to the dimensions of the room they're in @@ -19,9 +29,22 @@ * Electric attacks (i.e. tesla cannon) are now in the "energy damage" category * This means that armors that have energy resistance actually properly work against the tesla cannon * Heavy components are being deprecated +* Flow control pumps can now be interfaced with OpenComputers +* The electrolyzer now remembers the last visited GUI screen +* Retextured many fluid containers such as universal tanks, canisters and gas tanks +* Removed the legacy assembler and chemical plant recipes from the template folder +* Removed journals from various loot pools +* Drinking whiskey now gives strength III, resistance III and nausea +* Chemical artillery shell recipes have now been moved to the assembler +* The chemical plant and factory now scale their max power based on the recipe, similar to how the arc welder works +* The chemical plant's default max power is now 100kHE again instead of 1MHE ## Fixed * Fixed gas centrifuge sound persisting when broken or when unloaded * Fixed all centrifuge sounds trying to play even when the player is far away, using up audio slots * Fixed guns that don't have durability always displaying a condition of 0% -* Fixed GL state leak caused by skeletons \ No newline at end of file +* Fixed GL state leak caused by skeletons +* Fixed OpenComputers integration for the CCGT +* Fixed rotated RBMK consoles not behaving correctly when trying to change rod insertion levels +* Fixed crash caused by piston inserters on servers +* Fixed flare gun not having a firing sound diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index de9dc346f..b01ee10cf 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -113,7 +113,7 @@ public class ToolRecipes { //Utility CraftingManager.addRecipeAuto(new ItemStack(ModItems.rangefinder, 1), new Object[] { "GRC", " S", 'G', KEY_ANYPANE, 'R', REDSTONE.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'S' ,STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator, 1), new Object[] { " A", "#B#", "#B#", '#', IRON.plate(), 'A', STEEL.plate(), 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator, 1), new Object[] { " A", "#B#", "#B#", '#', ANY_PLASTIC.ingot(), 'A', STEEL.plate(), 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.designator_range, 1), new Object[] { ModItems.rangefinder, ModItems.designator, ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_manual, 1), new Object[] { " A", "#C#", "#B#", '#', ANY_PLASTIC.ingot(), 'A', PB.plate(), 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModItems.designator }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.designator_arty_range, 1), new Object[] { ModItems.rangefinder, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), ANY_PLASTIC.ingot() }); diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index ac4bbe114..feb113b7a 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -1,7 +1,6 @@ package com.hbm.handler; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.network.BlockOpenComputersCablePaintable; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -17,7 +16,6 @@ import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.*; import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.oredict.OreDictionary; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 134b83c75..aebfa05ee 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -10,16 +10,11 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.AssemblerRecipes; -import com.hbm.inventory.recipes.AssemblerRecipes.AssemblerRecipe; -import com.hbm.inventory.recipes.ChemplantRecipes; -import com.hbm.inventory.recipes.ChemplantRecipes.ChemRecipe; import com.hbm.inventory.recipes.CrucibleRecipes; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemCassette; import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemStamp.StampType; @@ -83,22 +78,8 @@ public class GUIScreenTemplateFolder extends GuiScreen { } } } - - // Assembly Templates - for(int i = 0; i < AssemblerRecipes.recipeList.size(); i++) { - ComparableStack comp = AssemblerRecipes.recipeList.get(i); - AssemblerRecipe recipe = AssemblerRecipes.recipes.get(comp); - if(recipe != null && recipe.folders.contains(item)) { - allStacks.add(ItemAssemblyTemplate.writeType(new ItemStack(ModItems.assembly_template, 1, i), comp)); - } - } if(!this.isJournal) { - // Chemistry Templates - for(int i = 0; i < ChemplantRecipes.recipes.size(); i++) { - ChemRecipe chem = ChemplantRecipes.recipes.get(i); - allStacks.add(new ItemStack(ModItems.chemistry_template, 1, chem.getId())); - } // Crucible Templates for(int i = 0; i < CrucibleRecipes.recipes.size(); i++) { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index c6e98b525..a8444a256 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -16,6 +16,7 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.Mats; import com.hbm.inventory.recipes.loader.GenericRecipe; @@ -233,7 +234,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.epress").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_epress, 1)) .inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC))); this.register(new GenericRecipe("ass.fel").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_fel, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(ALLOY.wireDense(), 64), new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))); + .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(ALLOY.wireDense(), 64), new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModItems.part_generic, 4, EnumPartType.GLASS_POLARIZED), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))); this.register(new GenericRecipe("ass.silex").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_silex, 1)) .inputItems(new ComparableStack(ModBlocks.glass_quartz, 16), new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(DESH.ingot(), 4), new OreDictStack(RUBBER.ingot(), 8), new OreDictStack(STEEL.pipe(), 8))); this.register(new GenericRecipe("ass.excavator").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_excavator, 1)) @@ -669,6 +670,15 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.50bmgbypass").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_secret, 12, EnumAmmoSecret.BMG50_BLACK.ordinal())) .inputItems(new ComparableStack(ModItems.casing, 2, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 24), new ComparableStack(ModItems.item_secret, 1, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.black_diamond)) .setPools(GenericRecipes.POOL_PREFIX_SECRET + "psalm")); + this.register(new GenericRecipe("chem.shellchlorine").setup(100, 1_000).outputItems(new ItemStack(ModItems.ammo_arty, 1, 9)) + .inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.CHLORINE, 4_000))); + this.register(new GenericRecipe("ass.shellphosgene").setup(100, 1_000).outputItems(new ItemStack(ModItems.ammo_arty, 1, 10)) + .inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.PHOSGENE, 4_000))); + this.register(new GenericRecipe("ass.shellmustard").setup(100, 1_000).outputItems(new ItemStack(ModItems.ammo_arty, 1, 11)) + .inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000))); // tools this.register(new GenericRecipe("ass.multitool").setup(100, 100).outputItems(new ItemStack(ModItems.multitool_hit, 1)) @@ -773,6 +783,19 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE), new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM), new ComparableStack(ModItems.coin_ufo, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "gerald")); + + this.register(new GenericRecipe("ass.emptypackage").setup(40, 100).outputItems(new ItemStack(ModItems.fluid_pack_empty, 1)) + .inputItems(new OreDictStack(TI.plate(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2))); + + FluidType[] order = Fluids.getInNiceOrder(); + for(int i = 1; i < order.length; ++i) { + FluidType type = order[i]; + if(type.hasNoContainer()) continue; + this.register(new GenericRecipe("ass.package" + type.getUnlocalizedName()).setup(100, 100).outputItems(new ItemStack(ModItems.fluid_pack_full, 1, type.getID())) + .inputItems(new ComparableStack(ModItems.fluid_pack_empty)).inputFluids(new FluidStack(type, 32_000))); + this.register(new GenericRecipe("ass.unpackage" + type.getUnlocalizedName()).setup(100, 100).setIcon(ItemFluidIcon.make(type, 32_000)).outputItems(new ItemStack(ModItems.fluid_pack_empty)) + .inputItems(new ComparableStack(ModItems.fluid_pack_full, 1, type.getID())).outputFluids(new FluidStack(type, 32_000))); + } if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) { Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java index ca4bcc193..4bbf1074c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java @@ -268,21 +268,6 @@ public class ChemicalPlantRecipes extends GenericRecipes { .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_c4, 4))); - this.register(new GenericRecipe("chem.shellchlorine").setup(100, 1_000) - .inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1)) - .inputFluids(new FluidStack(Fluids.CHLORINE, 4_000)) - .outputItems(new ItemStack(ModItems.ammo_arty, 1, 9))); - - this.register(new GenericRecipe("chem.shellphosgene").setup(100, 1_000) - .inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1)) - .inputFluids(new FluidStack(Fluids.PHOSGENE, 4_000)) - .outputItems(new ItemStack(ModItems.ammo_arty, 1, 10))); - - this.register(new GenericRecipe("chem.shellmustard").setup(100, 1_000) - .inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1)) - .inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000)) - .outputItems(new ItemStack(ModItems.ammo_arty, 1, 11))); - /// GLASS /// this.register(new GenericRecipe("chem.laminate").setup(20, 100) .inputFluids(new FluidStack(Fluids.XYLENE, 50), new FluidStack(Fluids.PHOSGENE, 50)) diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index ef3bc5569..289a495e9 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -130,8 +130,6 @@ public class ItemPoolsLegacy { weighted(ModItems.bomb_caller, 1, 1, 1, 1), weighted(ModItems.bomb_caller, 2, 1, 1, 1), weighted(ModItems.gas_mask_filter, 0, 1, 1, 4), - weighted(ModItems.journal_pip, 0, 1, 1, 1), - weighted(ModItems.journal_bj, 0, 1, 1, 1), weighted(ModItems.launch_code_piece, 0, 1, 1, 1), weighted(ModItems.gun_double_barrel, 0, 1, 1, 1), }; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 3ded60786..41b783fc6 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -844,6 +844,8 @@ public class ModItems { public static Item fluid_barrel_full; public static Item fluid_barrel_empty; public static Item fluid_barrel_infinite; + public static Item fluid_pack_full; + public static Item fluid_pack_empty; public static Item pipette; public static Item pipette_boron; public static Item pipette_laboratory; @@ -1181,12 +1183,12 @@ public class ModItems { public static Item blueprints; public static Item template_folder; - public static Item journal_pip; - public static Item journal_bj; - public static Item journal_silver; - public static Item assembly_template; - public static Item chemistry_template; - public static Item chemistry_icon; + @Deprecated public static Item journal_pip; + @Deprecated public static Item journal_bj; + @Deprecated public static Item journal_silver; + @Deprecated public static Item assembly_template; + @Deprecated public static Item chemistry_template; + @Deprecated public static Item chemistry_icon; public static Item crucible_template; public static Item fluid_identifier; public static Item fluid_identifier_multi; @@ -4115,6 +4117,8 @@ public class ModItems { fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); 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"); + fluid_pack_empty = new Item().setUnlocalizedName("fluid_pack_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_pack"); + fluid_pack_full = new ItemFluidTank().setUnlocalizedName("fluid_pack_full").setContainerItem(ModItems.fluid_pack_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_pack"); pipette = new ItemPipette().setUnlocalizedName("pipette").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pipette"); pipette_boron = new ItemPipette().setUnlocalizedName("pipette_boron").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pipette_boron"); pipette_laboratory = new ItemPipette().setUnlocalizedName("pipette_laboratory").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pipette_laboratory"); @@ -5686,6 +5690,10 @@ public class ModItems { GameRegistry.registerItem(fluid_barrel_empty, fluid_barrel_empty.getUnlocalizedName()); GameRegistry.registerItem(fluid_barrel_full, fluid_barrel_full.getUnlocalizedName()); GameRegistry.registerItem(fluid_barrel_infinite, fluid_barrel_infinite.getUnlocalizedName()); + + //Packaged fluids + GameRegistry.registerItem(fluid_pack_empty, fluid_pack_empty.getUnlocalizedName()); + GameRegistry.registerItem(fluid_pack_full, fluid_pack_full.getUnlocalizedName()); //Pipette GameRegistry.registerItem(pipette, pipette.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java index 7a1c26a0b..76f38f7d6 100644 --- a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java @@ -24,6 +24,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraftforge.oredict.OreDictionary; +@Deprecated public class ItemAssemblyTemplate extends Item { @SideOnly(Side.CLIENT) @@ -157,6 +158,7 @@ public class ItemAssemblyTemplate extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.RED + "Deprecated"); if(!(stack.getItem() instanceof ItemAssemblyTemplate)) return; @@ -198,9 +200,6 @@ public class ItemAssemblyTemplate extends Item { a++; } - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", String.join(" / ", names))); - list.add(""); - if(out == null) { list.add("I AM ERROR"); return; diff --git a/src/main/java/com/hbm/items/machine/ItemBlueprints.java b/src/main/java/com/hbm/items/machine/ItemBlueprints.java index 84976e8c5..874cfd6f6 100644 --- a/src/main/java/com/hbm/items/machine/ItemBlueprints.java +++ b/src/main/java/com/hbm/items/machine/ItemBlueprints.java @@ -56,13 +56,19 @@ public class ItemBlueprints extends Item { @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { for(Entry> pool : GenericRecipes.blueprintPools.entrySet()) { - list.add(make(pool.getKey())); + String poolName = pool.getKey(); + if(!poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) list.add(make(poolName)); } } @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if(world.isRemote) return stack; + if(!stack.hasTagCompound()) return stack; + + String poolName = stack.stackTagCompound.getString("pool"); + + if(poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) return stack; if(!player.inventory.hasItem(Items.paper)) return stack; player.inventory.consumeInventoryItem(Items.paper); @@ -94,7 +100,6 @@ public class ItemBlueprints extends Item { @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.RED + "Right-click to copy (requires paper)"); if(!stack.hasTagCompound()) { return; @@ -106,6 +111,11 @@ public class ItemBlueprints extends Item { if(pool == null || pool.isEmpty()) { return; } + if(poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) { + list.add(EnumChatFormatting.RED + "Cannot be copied!"); + } else { + list.add(EnumChatFormatting.YELLOW + "Right-click to copy (requires paper)"); + } for(String name : pool) { GenericRecipe recipe = GenericRecipes.pooledBlueprints.get(name); diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java b/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java index f3e190dc5..41cd901c9 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; +@Deprecated public class ItemChemistryIcon extends Item { @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index d644a4515..b310805b6 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; +@Deprecated public class ItemChemistryTemplate extends Item { public ItemChemistryTemplate() { @@ -51,6 +52,7 @@ public class ItemChemistryTemplate extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.RED + "Deprecated"); if(!(stack.getItem() instanceof ItemChemistryTemplate)) return; @@ -61,9 +63,6 @@ public class ItemChemistryTemplate extends Item { return; } - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); - list.add(""); - try { list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_out_p")); for(int i = 0; i < 4; i++) { diff --git a/src/main/java/com/hbm/items/machine/ItemFluidTank.java b/src/main/java/com/hbm/items/machine/ItemFluidTank.java index ce7a2cd0d..a8642652a 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidTank.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidTank.java @@ -30,9 +30,7 @@ public class ItemFluidTank extends Item { for(int i = 1; i < order.length; ++i) { FluidType type = order[i]; - if(type.hasNoContainer()) - continue; - + if(type.hasNoContainer()) continue; int id = type.getID(); if(type.needsLeadContainer()) { @@ -46,14 +44,10 @@ public class ItemFluidTank extends Item { } } + @Override public String getItemStackDisplayName(ItemStack stack) { - String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); - - if(s1 != null) { - s = s + " " + s1; - } - + String s = ("" + StatCollector.translateToLocalFormatted(this.getUnlocalizedName() + ".name", s1)).trim(); return s; } @@ -68,12 +62,10 @@ public class ItemFluidTank extends Item { public void registerIcons(IIconRegister p_94581_1_) { super.registerIcons(p_94581_1_); - if(this == ModItems.fluid_tank_full) - this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_overlay"); - if(this == ModItems.fluid_tank_lead_full) - this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_lead_overlay"); - if(this == ModItems.fluid_barrel_full) - this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_barrel_overlay"); + if(this == ModItems.fluid_tank_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_overlay"); + if(this == ModItems.fluid_tank_lead_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_lead_overlay"); + if(this == ModItems.fluid_barrel_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_barrel_overlay"); + if(this == ModItems.fluid_pack_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_pack_overlay"); } @Override @@ -84,18 +76,13 @@ public class ItemFluidTank extends Item { @Override @SideOnly(Side.CLIENT) - public int getColorFromItemStack(ItemStack stack, int p_82790_2_) { - if(p_82790_2_ == 0) { + public int getColorFromItemStack(ItemStack stack, int pass) { + if(pass == 0) { return 16777215; } else { int j = Fluids.fromID(stack.getItemDamage()).getColor(); - - if(j < 0) { - j = 16777215; - } - + if(j < 0) j = 16777215; return j; } } - } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index c13f16a26..33c583b54 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -27,6 +27,8 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; @@ -942,7 +944,7 @@ public class Orchestras { if(timer == 2) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? -0.0625 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, (float)entity.getRNG().nextGaussian() * -20F + 15F, casing.getName(), false, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? -0.0625 : -0.125, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, (float)entity.getRNG().nextGaussian() * -20F + 15F, casing.getName(), false, 60, 0.5D, 20); } } @@ -969,6 +971,11 @@ public class Orchestras { if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:player.gulp", 1F, 1F); if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:player.gulp", 1F, 1F); if(timer == 50) entity.worldObj.playSoundAtEntity(entity, "hbm:player.groan", 1F, 1F); + if(timer == 60) { + entity.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 30 * 20, 2)); + entity.addPotionEffect(new PotionEffect(Potion.resistance.id, 30 * 20, 2)); + entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 10 * 20, 0)); + } } }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 490bd64b7..44f9d046f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -375,7 +375,7 @@ public class XFactory12ga { ).setUnlocalizedName("gun_autoshotgun_shredder"); ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() - .dura(5_000).draw(20).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).hideCrosshair(false).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .dura(5_000).draw(20).inspect(65).reloadSequential(true).inspectCancel(false).crosshair(Crosshair.L_CIRCLE).hideCrosshair(false).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) .dmg(64F).delay(4).auto(true).dryfireAfterAuto(true).reload(110).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian_bj, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java b/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java index 1823b540b..2316ad787 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java @@ -3,6 +3,7 @@ package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.AssemblyMachineRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.util.BobMathUtil; import api.hbm.energymk2.IEnergyHandlerMK2; import net.minecraft.item.ItemStack; @@ -21,6 +22,14 @@ public class ModuleMachineAssembler extends ModuleMachineBase { public GenericRecipe getRecipe() { return AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(this.recipe); } + + @Override + public void setupTanks(GenericRecipe recipe) { + super.setupTanks(recipe); + if(recipe == null) return; + for(int i = 0; i < inputTanks.length; i++) if(recipe.inputFluid != null && recipe.inputFluid.length > i) inputTanks[i].changeTankSize(BobMathUtil.max(inputTanks[i].getFill(), recipe.inputFluid[i].fill * 2, 4_000)); + for(int i = 0; i < outputTanks.length; i++) if(recipe.outputFluid != null && recipe.outputFluid.length > i) outputTanks[i].changeTankSize(BobMathUtil.max(outputTanks[i].getFill(), recipe.outputFluid[i].fill * 2, 4_000)); + } public ModuleMachineAssembler itemInput(int from) { for(int i = 0; i < inputSlots.length; i++) inputSlots[i] = from + i; return this; } public ModuleMachineAssembler itemOutput(int a) { outputSlots[0] = a; return this; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java b/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java index 1111a998a..5900c0f84 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java @@ -13,13 +13,11 @@ import com.hbm.tileentity.machine.TileEntityMachineAssemblyMachine; import com.hbm.util.BobMathUtil; import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -109,7 +107,6 @@ public class RenderAssemblyMachine extends TileEntitySpecialRenderer implements GL11.glRotated(90, 0, 1, 0); GL11.glTranslated(0, 1.0625, 0); - EntityPlayer player = Minecraft.getMinecraft().thePlayer; ItemStack stack = recipe.getIcon(); stack.stackSize = 1; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java index 2ad98b8c0..ecc1c787c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyMachine.java @@ -11,6 +11,8 @@ import com.hbm.inventory.container.ContainerMachineAssemblyMachine; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineAssemblyMachine; +import com.hbm.inventory.recipes.AssemblyMachineRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -44,7 +46,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl public FluidTank outputTank; public long power; - public long maxPower = 1_000_000; + public long maxPower = 100_000; public boolean didProcess = false; public boolean frame = false; @@ -63,8 +65,8 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl public TileEntityMachineAssemblyMachine() { super(17); - this.inputTank = new FluidTank(Fluids.NONE, 32_000); - this.outputTank = new FluidTank(Fluids.NONE, 32_000); + this.inputTank = new FluidTank(Fluids.NONE, 4_000); + this.outputTank = new FluidTank(Fluids.NONE, 4_000); for(int i = 0; i < this.arms.length; i++) this.arms[i] = new AssemblerArm(); @@ -85,6 +87,12 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl if(!worldObj.isRemote) { + GenericRecipe recipe = AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(assemblerModule.recipe); + if(recipe != null) { + this.maxPower = recipe.power * 100; + } + this.maxPower = BobMathUtil.max(this.power, this.maxPower, 100_000); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); upgradeManager.checkSlots(slots, 2, 3); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java index dfcd1c50d..ca0c259c7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java @@ -10,6 +10,8 @@ import com.hbm.inventory.container.ContainerMachineChemicalFactory; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineChemicalFactory; +import com.hbm.inventory.recipes.ChemicalPlantRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -49,7 +51,7 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl public FluidTank lps; public long power; - public long maxPower = 10_000_000; + public long maxPower = 1_000_000; public boolean[] didProcess = new boolean[4]; public boolean frame = false; @@ -130,6 +132,16 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl if(!worldObj.isRemote) { + long nextMaxPower = 0; + for(int i = 0; i < 4; i++) { + GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(chemplantModule[i].recipe); + if(recipe != null) { + nextMaxPower += recipe.power * 100; + } + } + this.maxPower = nextMaxPower; + this.maxPower = BobMathUtil.max(this.power, this.maxPower, 1_000_000); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); upgradeManager.checkSlots(slots, 1, 3); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java index 6a21f07de..97ebd11bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java @@ -10,6 +10,8 @@ import com.hbm.inventory.container.ContainerMachineChemicalPlant; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineChemicalPlant; +import com.hbm.inventory.recipes.ChemicalPlantRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -43,7 +45,7 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem public FluidTank[] outputTanks; public long power; - public long maxPower = 1_000_000; + public long maxPower = 100_000; public boolean didProcess = false; public boolean frame = false; @@ -83,6 +85,12 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem if(!worldObj.isRemote) { + GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(chemplantModule.recipe); + if(recipe != null) { + this.maxPower = recipe.power * 100; + } + this.maxPower = BobMathUtil.max(this.power, this.maxPower, 100_000); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); upgradeManager.checkSlots(slots, 2, 3); diff --git a/src/main/java/com/hbm/util/ShadyUtil.java b/src/main/java/com/hbm/util/ShadyUtil.java index 03a2390ab..7f6d3351f 100644 --- a/src/main/java/com/hbm/util/ShadyUtil.java +++ b/src/main/java/com/hbm/util/ShadyUtil.java @@ -144,8 +144,8 @@ public class ShadyUtil { Field field = ReflectionHelper.findField(test, decode(offset(checksum, -2))); if(field != null) { System.out.println("TEST SECTION START"); - Class toLoad = Class.forName(decode(offset(testCase, -2))); - Field toRead = ReflectionHelper.findField(toLoad, decode(offset(testValue, -2))); + //Class toLoad = Class.forName(decode(offset(testCase, -2))); + //Field toRead = ReflectionHelper.findField(toLoad, decode(offset(testValue, -2))); //ModEventHandler.reference = toRead; System.out.println("TEST SECTION END"); } diff --git a/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java b/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java index bf3bc47eb..b9ee4dde1 100644 --- a/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java +++ b/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java @@ -7,7 +7,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -22,13 +21,8 @@ public class LogicBlockInteractions { public static LinkedHashMap> interactions = new LinkedHashMap<>(); public static Consumer TEST = (array) -> { - World world = (World) array[0]; LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) array[1]; - int x = (int) array[2]; - int y = (int) array[3]; - int z = (int) array[4]; EntityPlayer player = (EntityPlayer) array[5]; - int side = (int) array[6]; if(logic.phase > 1) return; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 1e54344ec..2cc9428b9 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1966,7 +1966,7 @@ item.fleija_igniter.name=Impulszünder item.fleija_kit.name=F.L.E.I.J.A. Kit item.fleija_propellant.name=Schrabidiumtreibladung item.fluid_barrel_empty.name=Leeres Fass -item.fluid_barrel_full.name=Flüssigkeitsfass: +item.fluid_barrel_full.name=Flüssigkeitsfass: %s item.fluid_barrel_infinite.name=Unendliches Fass item.fluid_duct.name=Flüssigkeitsrohr: item.fluid_identifier.name=Flüssigkeits-Kennzeichnung @@ -1977,10 +1977,12 @@ item.fluid_identifier.usage2=einer maximalen Reichweite von 64 Rohren zuzuweisen item.fluid_identifier_multi.name=Multi-Flüssigkeits-Kennzeichnung item.fluid_identifier_multi.info=Universelle Flüssigkeits-Kennzeichnung für: item.fluid_identifier_multi.info2=Sekundärer Typ: +item.fluid_pack_empty.name=Großer Flüssigkeitsbehälter +item.fluid_pack_full.name=%s (Abgepackt) item.fluid_tank_empty.name=Leere universelle Flüssigkeitszelle -item.fluid_tank_full.name=Universelle Flüssigkeitszelle: +item.fluid_tank_full.name=Universelle Flüssigkeitszelle: %s item.fluid_tank_lead_empty.name=Leere Gefahrenstoffzelle -item.fluid_tank_lead_full.name=Gefahrenstoffzelle: +item.fluid_tank_lead_full.name=Gefahrenstoffzelle: %s item.fluorite.name=Fluorit item.flywheel_beryllium.name=Berylliumschwungscheibe item.fmn.name=Flunitrazepamtablette diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index fb3f37c9a..53f1112b2 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2772,7 +2772,7 @@ item.fleija_igniter.name=Pulse Igniter item.fleija_kit.name=F.L.E.I.J.A. Kit item.fleija_propellant.name=Schrabidium Propellant item.fluid_barrel_empty.name=Empty Fluid Barrel -item.fluid_barrel_full.name=Fluid Barrel: +item.fluid_barrel_full.name=Fluid Barrel: %s item.fluid_barrel_infinite.name=Infinite Fluid Barrel item.fluid_duct.name=Fluid Duct: item.fluid_identifier.name=Fluid Identifier @@ -2783,10 +2783,12 @@ item.fluid_identifier.usage2=up to a maximum range of 64 ducts. item.fluid_identifier_multi.name=Multi Fluid Identifier item.fluid_identifier_multi.info=Universal fluid identifier for: item.fluid_identifier_multi.info2=Secondary type: +item.fluid_pack_empty.name=Large Fluid Container +item.fluid_pack_full.name=Packaged %s item.fluid_tank_empty.name=Empty Universal Fluid Tank -item.fluid_tank_full.name=Universal Fluid Tank: +item.fluid_tank_full.name=Universal Fluid Tank: %s item.fluid_tank_lead_empty.name=Empty Hazardous Material Tank -item.fluid_tank_lead_full.name=Hazardous Material Tank: +item.fluid_tank_lead_full.name=Hazardous Material Tank: %s item.fluorite.name=Fluorite item.flywheel_beryllium.name=Beryllium Flywheel item.fmn.name=Flunitrazepam Tablet diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 2d472a53a..1b5db22f5 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -222,6 +222,7 @@ "weapon.explosionSmallNear": {"category": "player", "sounds": ["weapon/explosionSmallNear1", "weapon/explosionSmallNear2", "weapon/explosionSmallNear3"]}, "weapon.explosionSmallFar": {"category": "player", "sounds": ["weapon/explosionSmallFar1", "weapon/explosionSmallFar2"]}, "weapon.explosionTiny": {"category": "player", "sounds": ["weapon/explosionTiny1", "weapon/explosionTiny2"]}, + "weapon.hkShoot": {"category": "player", "sounds": [{"name": "weapon/hkShoot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/hkShoot.ogg b/src/main/resources/assets/hbm/sounds/weapon/hkShoot.ogg new file mode 100644 index 000000000..883b0e46a Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/hkShoot.ogg differ diff --git a/src/main/resources/assets/hbm/textures/items/fluid_pack.png b/src/main/resources/assets/hbm/textures/items/fluid_pack.png new file mode 100644 index 000000000..c3c5de9aa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/fluid_pack.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fluid_pack_overlay.png b/src/main/resources/assets/hbm/textures/items/fluid_pack_overlay.png new file mode 100644 index 000000000..0de07193e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/fluid_pack_overlay.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png b/src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png index 68580824a..1c4f0c72e 100644 Binary files a/src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png and b/src/main/resources/assets/hbm/textures/items/fluid_tank_lead.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png b/src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png index 2fd03ec75..10b09d8fd 100644 Binary files a/src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png and b/src/main/resources/assets/hbm/textures/items/fluid_tank_lead_overlay.png differ