From 624bb35b725c88ca05359de0b796a66dc7a3c0e2 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 12 Apr 2025 16:37:40 +0200 Subject: [PATCH] sure, why not --- changelog | 14 +- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 9 - .../com/hbm/blocks/generic/BlockCrate.java | 1 - .../hbm/blocks/generic/BlockTransission.java | 32 -- .../blocks/machine/MachineNukeFurnace.java | 268 ------------ .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../container/ContainerNukeFurnace.java | 122 ------ .../com/hbm/inventory/gui/GUINukeFurnace.java | 54 --- src/main/java/com/hbm/items/ModItems.java | 3 - .../com/hbm/items/special/ItemStarterKit.java | 2 - .../hbm/items/weapon/sedna/ItemGunBaseNT.java | 5 +- .../weapon/sedna/factory/XFactory357.java | 4 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 6 +- .../com/hbm/main/ModEventHandlerClient.java | 8 - src/main/java/com/hbm/main/NEIConfig.java | 2 - .../weapon/sedna/ItemRenderWeaponBase.java | 1 + .../tileentity/RenderSkeletonHolder.java | 5 - .../java/com/hbm/tileentity/TileMappings.java | 1 - .../machine/TileEntityMachineDiesel.java | 116 +++--- .../machine/TileEntityNukeFurnace.java | 386 ------------------ .../machine/rbmk/TileEntityRBMKBase.java | 44 +- .../machine/rbmk/TileEntityRBMKInlet.java | 4 +- .../machine/rbmk/TileEntityRBMKOutlet.java | 4 +- .../com/hbm/world/dungeon/DesertAtom001.java | 2 +- .../com/hbm/world/dungeon/DesertAtom002.java | 2 +- .../com/hbm/world/dungeon/DesertAtom003.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 166 +------- src/main/resources/assets/hbm/lang/en_US.lang | 162 +------- src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/block/engine.ogg | Bin 0 -> 27443 bytes .../blocks/machine_nuke_furnace_base.png | Bin 377 -> 0 bytes .../blocks/machine_nuke_furnace_base_alt.png | Bin 452 -> 0 bytes .../blocks/machine_nuke_furnace_front_off.png | Bin 433 -> 0 bytes .../machine_nuke_furnace_front_off_alt.png | Bin 410 -> 0 bytes .../blocks/machine_nuke_furnace_front_on.png | Bin 431 -> 0 bytes .../machine_nuke_furnace_front_on_alt.png | Bin 455 -> 0 bytes .../blocks/machine_nuke_furnace_side_alt.png | Bin 386 -> 0 bytes .../textures/blocks/machine_panel_base.png | Bin 415 -> 0 bytes .../hbm/textures/gui/gui_fwatz_multiblock.png | Bin 7542 -> 0 bytes .../gui/processing/gui_nuke_furnace.png | Bin 1757 -> 0 bytes 42 files changed, 124 insertions(+), 1308 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockTransission.java delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUINukeFurnace.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java create mode 100644 src/main/resources/assets/hbm/sounds/block/engine.ogg delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_base.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_base_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_off.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_off_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_on.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_on_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_side_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_panel_base.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_fwatz_multiblock.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_nuke_furnace.png diff --git a/changelog b/changelog index d254b3628..c2ec168a0 100644 --- a/changelog +++ b/changelog @@ -20,6 +20,7 @@ * Also looks really cool to have on the roof of factories ## Changed +* Updated russian and chinese localizations * .75 bolts now work as advertised * Updated lead pipe texture * Removed recipes from a few ancient melee weapons, as well as the creative tab listing @@ -41,6 +42,15 @@ * The xenon chemical plant recipes as well as biogas now require compressed air instead of no fluid at all * Removed old unused radar configs * The .22 SMG no longer comes with a silencer, instead a silencer can be attached as a weapon mod +* Updated RT generator's GUI +* Armor resistance stats are now configurable using `hbmArmor.json` + * The config's format is a bit fragile, check the log when making changes to see if it fails loading + * If the config fails to load, it will default to standard values + * Also works with `/ntmreload` +* Removed the unused transition hatch block +* Removed the nuclear furnace (it was already deprecated months ago) +* The diesel generator now uses a much more pleasant sound loop instead of the deafening vanilla fireworks pop noise +* Renamed "heavy infinite water barrel" to "large infinite water barrel" because somehow people found that confusing ## Fixed * Fixed taint destroying bedrock @@ -56,4 +66,6 @@ * Fixed top left column not being selectable in the RBMK console * Fixed CIWS hitrate config being read wrong * Fixed DANI having broken equip animations -* Fixed break-action revolver cockking sound not syncing up with the animation +* Fixed break-action revolver cocking sound not syncing up with the animation +* Fixed NBT name collision between ReaSim steam/water values and non-ReaSim steam/water tanks, causing incorrect data to be loaded when using non-ReaSim boilers with ReaSim enabled +* Fixed gun equip animation not playing in certain circumstances diff --git a/gradle.properties b/gradle.properties index d4d451b6e..777d9673c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5279 +mod_build_number=5298 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index ef0259e43..d5ff7ea63 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -696,8 +696,6 @@ public class ModBlocks { public static Block machine_furnace_brick_off; public static Block machine_furnace_brick_on; - public static Block machine_nuke_furnace_off; - public static Block machine_nuke_furnace_on; public static Block machine_rtg_furnace_off; public static Block machine_rtg_furnace_on; @@ -1173,7 +1171,6 @@ public class ModBlocks { public static Block absorber_green; public static Block absorber_pink; public static Block decon; - public static Block transission_hatch; public static Block mud_block; public static Fluid mud_fluid; @@ -1816,8 +1813,6 @@ public class ModBlocks { machine_furnace_brick_off = new MachineBrickFurnace(false).setBlockName("machine_furnace_brick_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_furnace_brick_on = new MachineBrickFurnace(true).setBlockName("machine_furnace_brick_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_nuke_furnace_off = new MachineNukeFurnace(false).setBlockName("machine_nuke_furnace_off").setHardness(5.0F).setResistance(10.0F); - machine_nuke_furnace_on = new MachineNukeFurnace(true).setBlockName("machine_nuke_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_rtg_furnace_off = new MachineRtgFurnace(false).setBlockName("machine_rtg_furnace_off").setHardness(5.0F).setResistance(10.0F); machine_rtg_furnace_on = new MachineRtgFurnace(true).setBlockName("machine_rtg_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -2325,7 +2320,6 @@ public class ModBlocks { absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green"); absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink"); decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); - transission_hatch = new BlockTransission(Material.iron).setBlockName("transission_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transission_hatch"); volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_core"); @@ -3079,8 +3073,6 @@ public class ModBlocks { GameRegistry.registerBlock(machine_uf6_tank, machine_uf6_tank.getUnlocalizedName()); GameRegistry.registerBlock(machine_puf6_tank, machine_puf6_tank.getUnlocalizedName()); GameRegistry.registerBlock(machine_reactor_breeding, machine_reactor_breeding.getUnlocalizedName()); - GameRegistry.registerBlock(machine_nuke_furnace_off, machine_nuke_furnace_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); register(machine_wood_burner); @@ -3344,7 +3336,6 @@ public class ModBlocks { GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName()); GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName()); GameRegistry.registerBlock(decon, decon.getUnlocalizedName()); - GameRegistry.registerBlock(transission_hatch, transission_hatch.getUnlocalizedName()); //Solar Tower Blocks GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index a951b93e9..e24a62d78 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -103,7 +103,6 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_press), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 7); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_wood_burner), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4); diff --git a/src/main/java/com/hbm/blocks/generic/BlockTransission.java b/src/main/java/com/hbm/blocks/generic/BlockTransission.java deleted file mode 100644 index b17cf2308..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockTransission.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hbm.blocks.generic; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; - -public class BlockTransission extends Block { - - public BlockTransission(Material mat) { - super(mat); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { - return true; - - } else if(!player.isSneaking()) { - - if(side == 0) { - player.setPositionAndUpdate(x + 0.5, y + 1, z + 0.5); - } - if(side == 1) { - player.setPositionAndUpdate(x + 0.5, y - 2, z + 0.5); - } - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java deleted file mode 100644 index 94492e91f..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java +++ /dev/null @@ -1,268 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityNukeFurnace; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -import java.util.Random; - -public class MachineNukeFurnace extends BlockContainer { - - private final Random field_149933_a = new Random(); - private final boolean isActive; - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconTop; - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public MachineNukeFurnace(boolean blockState) { - super(Material.iron); - isActive = blockState; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_nuke_furnace_base_alt"); - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_nuke_furnace_front_on_alt" : ":machine_nuke_furnace_front_off_alt")); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_nuke_furnace_side_alt"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : (side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon))); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - this.setDefaultDirection(world, x, y, z); - } - - private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { - Block block1 = world.getBlock(x, y, z - 1); - Block block2 = world.getBlock(x, y, z + 1); - Block block3 = world.getBlock(x - 1, y, z); - Block block4 = world.getBlock(x + 1, y, z); - - byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { - b0 = 3; - } - if(block2.func_149730_j() && !block1.func_149730_j()) - { - b0 = 2; - } - if(block3.func_149730_j() && !block4.func_149730_j()) - { - b0 = 5; - } - if(block4.func_149730_j() && !block3.func_149730_j()) - { - b0 = 4; - } - - world.setBlockMetadataWithNotify(x, y, z, b0, 2); - } - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - - if(itemStack.hasDisplayName()) - { - ((TileEntityNukeFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { - return true; - } else if(!player.isSneaking()) - { - TileEntityNukeFurnace entity = (TileEntityNukeFurnace) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityNukeFurnace(); - } - - public static void updateBlockState(boolean isProcessing, World world, int x, int y, int z) { - int i = world.getBlockMetadata(x, y, z); - TileEntity entity = world.getTileEntity(x, y, z); - keepInventory = true; - - if(isProcessing) - { - world.setBlock(x, y, z, ModBlocks.machine_nuke_furnace_on); - }else{ - world.setBlock(x, y, z, ModBlocks.machine_nuke_furnace_off); - } - - keepInventory = false; - world.setBlockMetadataWithNotify(x, y, z, i, 2); - - if(entity != null) { - entity.validate(); - world.setTileEntity(x, y, z, entity); - } - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityNukeFurnace tileentityfurnace = (TileEntityNukeFurnace)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) - { - if (isActive) - { - int l = p_149734_1_.getBlockMetadata(x, y, z); - float f = x + 0.5F; - float f1 = y + 0.25F + rand.nextFloat() * 6.0F / 16.0F; - float f2 = z + 0.5F; - float f3 = 0.52F; - float f4 = rand.nextFloat() * 0.6F - 0.3F; - rand.nextFloat(); - rand.nextFloat(); - - if (l == 4) - { - p_149734_1_.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 5) - { - p_149734_1_.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 2) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - } - else if (l == 3) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) - { - return Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off); - } - -} diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index b3b54af5e..729faed76 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -119,7 +119,7 @@ public class WeaponRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.BRONZE_DURA.ordinal()), new Object[] { BIGMT.plate(), ANY_BISMOIDBRONZE.plateCast(), ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER.ordinal()), new Object[] { "P", "B", "P", 'P', ANY_PLASTIC.ingot(), 'B', STEEL.lightBarrel() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SCOPE.ordinal()), new Object[] { "SPS", "G G", "SPS", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate(), 'G', KEY_ANYPANE }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SAW.ordinal()), new Object[] { "BBS", "BHB", 'B', STEEL.bolt(), 'S', KEY_STICK, 'H', DURA.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SAW.ordinal()), new Object[] { "BBS", "BHS", 'B', STEEL.bolt(), 'S', KEY_STICK, 'H', DURA.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDLOADER.ordinal()), new Object[] { " B ", "BSB", " B ", 'B', STEEL.bolt(), 'S', WEAPONSTEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SLOWDOWN.ordinal()), new Object[] { " I ", " M ", "I I", 'I', WEAPONSTEEL.ingot(), 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDUP.ordinal()), new Object[] { "PIP", "WWW", "PIP", 'P', WEAPONSTEEL.plate(), 'I', GUNMETAL.ingot(), 'W', GOLD.wireDense() }); diff --git a/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java b/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java deleted file mode 100644 index 6457ee347..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.tileentity.machine.TileEntityNukeFurnace; -import com.hbm.util.InventoryUtil; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerNukeFurnace extends Container { - - private TileEntityNukeFurnace diFurnace; - private int dualCookTime; - private int dualPower; - - public ContainerNukeFurnace(InventoryPlayer invPlayer, TileEntityNukeFurnace tedf) { - dualCookTime = 0; - dualPower = 0; - - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 56, 53) { - @Override - public int getSlotStackLimit() { - return 1; - } - }); - - this.addSlotToContainer(new Slot(tedf, 1, 56, 17)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 116, 35)); - - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if(var4 != null && var4.getHasStack()) { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if(par2 <= 2) { - if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { - return null; - } - } else { - - if(TileEntityNukeFurnace.getFuelValue(var5) > 0) { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 1, false)) - return null; - } else { - if(!this.mergeItemStack(var5, 1, 2, false)) - return null; - } - } - - if(var5.stackSize == 0) { - var4.putStack((ItemStack) null); - } else { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) { - ICrafting par1 = (ICrafting) this.crafters.get(i); - - if(this.dualCookTime != this.diFurnace.dualCookTime) { - par1.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime); - } - - if(this.dualPower != this.diFurnace.dualPower) { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower); - } - } - - this.dualCookTime = this.diFurnace.dualCookTime; - this.dualPower = this.diFurnace.dualPower; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 0) { - diFurnace.dualCookTime = j; - } - if(i == 1) { - diFurnace.dualPower = j; - } - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeFurnace.java b/src/main/java/com/hbm/inventory/gui/GUINukeFurnace.java deleted file mode 100644 index 70187b8de..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUINukeFurnace.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.inventory.gui; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerNukeFurnace; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityNukeFurnace; - -public class GUINukeFurnace extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_nuke_furnace.png"); - private TileEntityNukeFurnace furnace; - - public GUINukeFurnace(InventoryPlayer invPlayer, TileEntityNukeFurnace tedf) { - super(new ContainerNukeFurnace(invPlayer, tedf)); - furnace = tedf; - - this.xSize = 176; - this.ySize = 166; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 55, guiTop + 34, 18, 18, mouseX, mouseY, new String[] { furnace.dualPower + " operation(s) left" }); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.furnace.hasCustomInventoryName() ? this.furnace.getInventoryName() : I18n.format(this.furnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(furnace.hasPower()) - drawTexturedModalRect(guiLeft + 55, guiTop + 35, 176, 0, 18, 16); - - int i = furnace.getDiFurnaceProgressScaled(24); - drawTexturedModalRect(guiLeft + 80, guiTop + 34, 176, 16, i, 17); - } -} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a210bcb7b..13595166f 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -834,7 +834,6 @@ public class ModItems { public static Item particle_lutece; public static Item pellet_antimatter; - public static Item singularity_micro; public static Item singularity; public static Item singularity_counter_resonant; public static Item singularity_super_heated; @@ -2907,7 +2906,6 @@ public class ModItems { particle_sparkticle = new Item().setUnlocalizedName("particle_sparkticle").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_sparkticle"); particle_digamma = new ItemDigamma(60).setUnlocalizedName("particle_digamma").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_digamma"); particle_lutece = new Item().setUnlocalizedName("particle_lutece").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_lutece"); - singularity_micro = new ItemDrop().setUnlocalizedName("singularity_micro").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_micro"); singularity = new ItemDrop().setUnlocalizedName("singularity").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity"); singularity_counter_resonant = new ItemDrop().setUnlocalizedName("singularity_counter_resonant").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_alt"); @@ -5745,7 +5743,6 @@ public class ModItems { GameRegistry.registerItem(particle_lutece, particle_lutece.getUnlocalizedName()); //Singularities, black holes and other cosmic horrors - GameRegistry.registerItem(singularity_micro, singularity_micro.getUnlocalizedName()); GameRegistry.registerItem(singularity, singularity.getUnlocalizedName()); GameRegistry.registerItem(singularity_counter_resonant, singularity_counter_resonant.getUnlocalizedName()); GameRegistry.registerItem(singularity_super_heated, singularity_super_heated.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemStarterKit.java b/src/main/java/com/hbm/items/special/ItemStarterKit.java index e18021e96..4e70ed205 100644 --- a/src/main/java/com/hbm/items/special/ItemStarterKit.java +++ b/src/main/java/com/hbm/items/special/ItemStarterKit.java @@ -74,9 +74,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_press, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_difurnace_off, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_gascent, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_puf6_tank, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_reactor_breeding, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_nuke_furnace_off, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemplant, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.reactor_research, 1)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index 12bb77e7c..3a6bf9eeb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -14,6 +14,7 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.interfaces.IItemHUD; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUIWeaponTable; +import com.hbm.items.IEquipReceiver; import com.hbm.items.IKeybindReceiver; import com.hbm.items.weapon.sedna.hud.IHUDComponent; import com.hbm.items.weapon.sedna.mags.IMagazine; @@ -47,7 +48,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD { +public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, IEquipReceiver { /** Timestamp for rendering smoke nodes and muzzle flashes */ public long[] lastShot; @@ -230,8 +231,10 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD { } } + @Override public void onEquip(EntityPlayer player, ItemStack stack) { for(int i = 0; i < this.configs_DNA.length; i++) { + if(this.getLastAnim(stack, i) == AnimType.EQUIP && this.getAnimTimer(stack, i) < 5) continue; playAnimation(player, stack, AnimType.EQUIP, i); this.setPrimary(stack, i, false); this.setSecondary(stack, i, false); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java index bcd561675..b78808aeb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -95,10 +95,10 @@ public class XFactory357 { case CYCLE: return new BusAnimation() .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300).addPos(0, 0, 0, 200)) - .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, 0, 1, 200)); + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, 1, 200)); case CYCLE_DRY: return new BusAnimation() .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 200).addPos(0, 0, 0, 200)) - .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, 0, 1, 200)); + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, 1, 200)); case RELOAD: return new BusAnimation() .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 2000).addPos(0, 0, 0, 150)) .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 2000).addPos(0, 0, 0, 75)) diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 317faa8d6..cb0cbb305 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5279)"; + public static final String VERSION = "1.0.27 BETA (5298)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 18f80b937..936f8f070 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1673,13 +1673,16 @@ public class MainRegistry { ignoreMappings.add("hbm:item.mechanism_launcher_1"); ignoreMappings.add("hbm:item.mechanism_launcher_2"); ignoreMappings.add("hbm:item.mechanism_special"); + ignoreMappings.add("hbm:tile.transission_hatch"); + ignoreMappings.add("hbm:tile.machine_nuke_furnace_off"); + ignoreMappings.add("hbm:tile.machine_nuke_furnace_on"); + ignoreMappings.add("hbm:item.singularity_micro"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); remapItems.put("hbm:item.briquette_lignite", ModItems.briquette); remapItems.put("hbm:item.antiknock", ModItems.fuel_additive); - remapItems.put("hbm:item.kit_toolbox_empty", ModItems.toolbox); remapItems.put("hbm:item.kit_toolbox", ModItems.legacy_toolbox); @@ -1697,7 +1700,6 @@ public class MainRegistry { } if(mapping.type == GameRegistry.Type.ITEM) { - if(remapItems.get(mapping.name) != null) { mapping.remap(remapItems.get(mapping.name)); continue; diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 332a55e72..bf5e6e7bc 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -58,7 +58,6 @@ import com.hbm.sound.MovingSoundPlayerLoop.EnumHbmSound; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry; import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType; -import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.*; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.wiaj.GuiWorldInAJar; @@ -781,13 +780,6 @@ public class ModEventHandlerClient { } } - /// NUCLEAR FURNACE FUELS /// - int breeder = TileEntityNukeFurnace.getFuelValue(stack); - - if(breeder != 0) { - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.furnace", breeder)); - } - /// CUSTOM NUKE /// ComparableStack comp = new ComparableStack(stack).makeSingular(); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index c09f2a33d..171a589ed 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -49,13 +49,11 @@ public class NEIConfig implements IConfigureNEI { for(int i = 0; i < EnumSecretType.values().length; i++) API.hideItem(new ItemStack(ModItems.item_secret, 1, i)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); - API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_rtg_furnace_on)); API.hideItem(new ItemStack(ModBlocks.reinforced_lamp_on)); API.hideItem(new ItemStack(ModBlocks.statue_elb_f)); API.hideItem(new ItemStack(ModBlocks.cheater_virus)); API.hideItem(new ItemStack(ModBlocks.cheater_virus_seed)); - API.hideItem(new ItemStack(ModBlocks.transission_hatch)); API.hideItem(new ItemStack(ModItems.euphemium_kit)); API.hideItem(new ItemStack(ModItems.bobmazon_hidden)); API.hideItem(new ItemStack(ModItems.book_lore)); //the broken nbt-less one shouldn't show up in normal play anyway diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index e365bf670..fc0f2f86a 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -260,6 +260,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { public void setupEntity(ItemStack stack) { double scale = 0.125D; GL11.glScaled(scale, scale, scale); + GL11.glRotated(-90, 0, 1, 0); } public void setupModTable(ItemStack stack) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderSkeletonHolder.java b/src/main/java/com/hbm/render/tileentity/RenderSkeletonHolder.java index 78b0d9cfc..725e9f7ec 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSkeletonHolder.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSkeletonHolder.java @@ -3,7 +3,6 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder; -import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.main.ResourceManager; import net.minecraft.block.Block; @@ -45,10 +44,6 @@ public class RenderSkeletonHolder extends TileEntitySpecialRenderer { ItemStack stack = pedestal.item.copy(); GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - - if(stack.getItem() instanceof ItemGunBaseNT) { - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - } if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) { GL11.glScaled(1.5, 1.5, 1.5); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b4f3ffa3b..932637925 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -62,7 +62,6 @@ public class TileMappings { put(TileEntityMachineUF6Tank.class, "tileentity_uf6_tank"); put(TileEntityMachinePuF6Tank.class, "tileentity_puf6_tank"); put(TileEntityMachineReactorBreeding.class, "tileentity_reactor"); - put(TileEntityNukeFurnace.class, "tileentity_nukefurnace"); put(TileEntityRtgFurnace.class, "tileentity_rtgfurnace"); put(TileEntityMachineElectricFurnace.class, "tileentity_electric_furnace"); put(TileEntityDecoTapeRecorder.class, "tileentity_taperecorder"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index 808554c37..d8907f333 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -17,6 +17,8 @@ import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType; import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; @@ -40,9 +42,11 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable { public long power; - public int soundCycle = 0; public long powerCap = maxPower; public FluidTank tank; + + public boolean wasOn = false; + private AudioWrapper audio; /* CONFIGURABLE CONSTANTS */ public static long maxPower = 50000; @@ -53,7 +57,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen fuelEfficiency.put(FuelGrade.HIGH, 0.75D); fuelEfficiency.put(FuelGrade.AERO, 0.1D); } - public static boolean shutUp = false; private static final int[] slots_top = new int[] { 0 }; private static final int[] slots_bottom = new int[] { 1, 2 }; @@ -71,13 +74,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if (i == 0) - if (FluidContainerRegistry.getFluidContent(stack, tank.getTankType()) > 0) - return true; - if (i == 2) - if (stack.getItem() instanceof IBatteryItem) - return true; - + if(i == 0) return FluidContainerRegistry.getFluidContent(stack, tank.getTankType()) > 0; + if(i == 2) return stack.getItem() instanceof IBatteryItem; return false; } @@ -106,17 +104,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen @Override public boolean canExtractItem(int i, ItemStack stack, int j) { - if(i == 1) { - if(stack.getItem() == ModItems.canister_empty || stack.getItem() == ModItems.tank_steel) { - return true; - } - } - if(i == 2) { - if(stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge(stack)) { - return true; - } - } - + if(i == 1) return stack.getItem() == ModItems.canister_empty || stack.getItem() == ModItems.tank_steel; + if(i == 2) return stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge(stack); return false; } @@ -129,6 +118,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen if(!worldObj.isRemote) { + this.wasOn = false; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); @@ -153,6 +144,49 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen generate(); this.networkPackNT(50); + } else { + + if(wasOn) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + audio.updateVolume(this.getVolume(1F)); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.engine", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 10); + } + + @Override + public void onChunkUnload() { + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + super.invalidate(); + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -161,6 +195,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen super.serialize(buf); buf.writeInt((int) power); buf.writeInt((int) powerCap); + buf.writeBoolean(wasOn); tank.serialize(buf); } @@ -169,6 +204,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen super.deserialize(buf); this.power = buf.readInt(); this.powerCap = buf.readInt(); + this.wasOn = buf.readBoolean(); tank.deserialize(buf); } @@ -200,15 +236,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen if(hasAcceptableFuel()) { if (tank.getFill() > 0) { - if(!shutUp) { - if (soundCycle == 0) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", this.getVolume(0.75F), 0.5F); - } - soundCycle++; - } - - if(soundCycle >= 3) - soundCycle = 0; + this.wasOn = true; tank.setFill(tank.getFill() - 1); if(tank.getFill() < 0) @@ -227,30 +255,12 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen } } - @Override - public long getPower() { - return power; - } + @Override public long getPower() { return power; } + @Override public void setPower(long i) { this.power = i; } + @Override public long getMaxPower() { return this.maxPower; } - @Override - public void setPower(long i) { - this.power = i; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tank}; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; } @Override public String getConfigName() { @@ -268,7 +278,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble()); } } - shutUp = IConfigurableMachine.grab(obj, "B:shutUp", shutUp); } @Override @@ -287,7 +296,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen writer.value(d); } writer.endArray().setIndent(" "); - writer.name("B:shutUp").value(shutUp); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java deleted file mode 100644 index 7f2e1c5f9..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java +++ /dev/null @@ -1,386 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.HashMap; - -import com.hbm.blocks.machine.MachineNukeFurnace; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.inventory.container.ContainerNukeFurnace; -import com.hbm.inventory.gui.GUINukeFurnace; -import com.hbm.items.ItemCustomLore; -import com.hbm.items.ModItems; -import com.hbm.tileentity.IGUIProvider; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class TileEntityNukeFurnace extends TileEntity implements ISidedInventory, IGUIProvider { - - private ItemStack slots[]; - - public int dualCookTime; - public int dualPower; - public static final int maxPower = 1000; - public static final int processingSpeed = 25; - - private static final int[] slots_top = new int[] {1}; - private static final int[] slots_bottom = new int[] {2, 0}; - private static final int[] slots_side = new int[] {0}; - - private String customName; - - public TileEntityNukeFurnace() { - slots = new ItemStack[3]; - } - - @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.nukeFurnace"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return true; - } - - public boolean hasItemPower(ItemStack itemStack) { - return getItemPower(itemStack) > 0; - } - - private static int getItemPower(ItemStack stack) { - if(stack == null) { - return 0; - } else { - - int power = getFuelValue(stack); - - return power; - } - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - dualPower = nbt.getShort("powerTime"); - dualCookTime = nbt.getShort("CookTime"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setShort("powerTime", (short) dualPower); - nbt.setShort("cookTime", (short) dualCookTime); - NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - if(i == 0) - { - if(itemStack.getItem() instanceof ItemCustomLore) - { - return true; - } - - return false; - } - - return true; - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if(i == 0) - { - if(itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) - { - return true; - } - - return false; - } - - return true; - } - - public int getDiFurnaceProgressScaled(int i) { - return (dualCookTime * i) / processingSpeed; - } - - public int getPowerRemainingScaled(int i) { - return (dualPower * i) / maxPower; - } - - public boolean canProcess() { - if(slots[1] == null) - { - return false; - } - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); - if(itemStack == null) - { - return false; - } - - if(slots[2] == null) - { - return true; - } - - if(!slots[2].isItemEqual(itemStack)) { - return false; - } - - if(slots[2].stackSize < getInventoryStackLimit() && slots[2].stackSize < slots[2].getMaxStackSize()) { - return true; - }else{ - return slots[2].stackSize < itemStack.getMaxStackSize(); - } - } - - private void processItem() { - if(canProcess()) { - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); - - if(slots[2] == null) - { - slots[2] = itemStack.copy(); - }else if(slots[2].isItemEqual(itemStack)) { - slots[2].stackSize += itemStack.stackSize; - } - - for(int i = 1; i < 2; i++) - { - if(slots[i].stackSize <= 0) - { - slots[i] = new ItemStack(slots[i].getItem().setFull3D()); - }else{ - slots[i].stackSize--; - } - if(slots[i].stackSize <= 0) - { - slots[i] = null; - } - } - - { - dualPower--; - } - } - } - - public boolean hasPower() { - return dualPower > 0; - } - - public boolean isProcessing() { - return this.dualCookTime > 0; - } - - @Override - public void updateEntity() { - this.hasPower(); - boolean flag1 = false; - - if(!worldObj.isRemote) - { - if(this.hasItemPower(this.slots[0]) && this.dualPower == 0) - { - this.dualPower += getItemPower(this.slots[0]); - if(this.slots[0] != null) - { - flag1 = true; - this.slots[0].stackSize--; - if(this.slots[0].stackSize == 0) - { - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); - } - } - } - - if(hasPower() && canProcess()) - { - dualCookTime++; - - if(this.dualCookTime == TileEntityNukeFurnace.processingSpeed) - { - this.dualCookTime = 0; - this.processItem(); - flag1 = true; - } - }else{ - dualCookTime = 0; - } - - boolean trigger = true; - - if(hasPower() && canProcess() && this.dualCookTime == 0) - { - trigger = false; - } - - if(trigger) - { - flag1 = true; - MachineNukeFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - } - - if(flag1) - { - this.markDirty(); - } - } - - private static HashMap fuels = new HashMap(); - - /** - * Returns an integer array of the fuel value of a certain stack - * @param stack - * @return an integer array (possibly null) with two fields, the HEAT value and the amount of operations - */ - public static int getFuelValue(ItemStack stack) { - - if(stack == null) - return 0; - - ComparableStack sta = new ComparableStack(stack).makeSingular(); - if(fuels.get(sta) != null) - return fuels.get(sta); - - return 0; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerNukeFurnace(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUINukeFurnace(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index 88412c4ee..99ca91110 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -56,9 +56,9 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { public double heat; - public int water; + public int reasimWater; public static final int maxWater = 16000; - public int steam; + public int reasimSteam; public static final int maxSteam = 16000; public boolean hasLid() { @@ -130,15 +130,15 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { double heatConsumption = RBMKDials.getBoilerHeatConsumption(worldObj); double availableHeat = (this.heat - 100) / heatConsumption; - double availableWater = this.water; - double availableSpace = maxSteam - this.steam; + double availableWater = this.reasimWater; + double availableSpace = maxSteam - this.reasimSteam; int processedWater = (int) Math.floor(BobMathUtil.min(availableHeat, availableWater, availableSpace) * MathHelper.clamp_double(RBMKDials.getReaSimBoilerSpeed(worldObj), 0D, 1D)); if(processedWater <= 0) return; - this.water -= processedWater; - this.steam += processedWater; + this.reasimWater -= processedWater; + this.reasimSteam += processedWater; this.heat -= processedWater * heatConsumption; } @@ -162,8 +162,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { List rec = new ArrayList<>(); rec.add(this); double heatTot = this.heat; - int waterTot = this.water; - int steamTot = this.steam; + int waterTot = this.reasimWater; + int steamTot = this.reasimSteam; int index = 0; for(ForgeDirection dir : neighborDirs) { @@ -188,8 +188,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { if(base != null) { rec.add(base); heatTot += base.heat; - waterTot += base.water; - steamTot += base.steam; + waterTot += base.reasimWater; + steamTot += base.reasimSteam; } } @@ -210,13 +210,13 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { rbmk.heat += delta * stepSize; //set to the averages, rounded down - rbmk.water = tWater; - rbmk.steam = tSteam; + rbmk.reasimWater = tWater; + rbmk.reasimSteam = tSteam; } //add the modulo to make up for the losses coming from rounding - this.water += rWater; - this.steam += rSteam; + this.reasimWater += rWater; + this.reasimSteam += rSteam; this.markDirty(); } @@ -271,8 +271,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { } this.heat = nbt.getDouble("heat"); - this.water = nbt.getInteger("water"); - this.steam = nbt.getInteger("steam"); + this.reasimWater = nbt.getInteger("reasimWater"); + this.reasimSteam = nbt.getInteger("reasimSteam"); } @Override @@ -283,22 +283,22 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { } nbt.setDouble("heat", this.heat); - nbt.setInteger("water", this.water); - nbt.setInteger("steam", this.steam); + nbt.setInteger("reasimWater", this.reasimWater); + nbt.setInteger("reasimSteam", this.reasimSteam); } @Override public void serialize(ByteBuf buf) { buf.writeDouble(this.heat); - buf.writeInt(this.water); - buf.writeInt(this.steam); + buf.writeInt(this.reasimWater); + buf.writeInt(this.reasimSteam); } @Override public void deserialize(ByteBuf buf) { this.heat = buf.readDouble(); - this.water = buf.readInt(); - this.steam = buf.readInt(); + this.reasimWater = buf.readInt(); + this.reasimSteam = buf.readInt(); } public void getDiagData(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java index 301f5bb1c..2008e6f1d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java @@ -41,8 +41,8 @@ public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidS if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - int prov = Math.min(rbmk.maxWater - rbmk.water, water.getFill()); - rbmk.water += prov; + int prov = Math.min(rbmk.maxWater - rbmk.reasimWater, water.getFill()); + rbmk.reasimWater += prov; water.setFill(water.getFill() - prov); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java index 0dc4cd89b..f6f05198e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java @@ -39,8 +39,8 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - int prov = Math.min(steam.getMaxFill() - steam.getFill(), rbmk.steam); - rbmk.steam -= prov; + int prov = Math.min(steam.getMaxFill() - steam.getFill(), rbmk.reasimSteam); + rbmk.reasimSteam -= prov; steam.setFill(steam.getFill() + prov); } } diff --git a/src/main/java/com/hbm/world/dungeon/DesertAtom001.java b/src/main/java/com/hbm/world/dungeon/DesertAtom001.java index 2daed2527..02d2bee28 100644 --- a/src/main/java/com/hbm/world/dungeon/DesertAtom001.java +++ b/src/main/java/com/hbm/world/dungeon/DesertAtom001.java @@ -27,7 +27,7 @@ public class DesertAtom001 extends WorldGenerator Block Block7 = ModBlocks.deco_tungsten; Block Block8 = ModBlocks.steel_poles; Block Block9 = ModBlocks.tape_recorder; - Block Block10 = ModBlocks.machine_nuke_furnace_off; + Block Block10 = ModBlocks.machine_rtg_furnace_off; Block Block11 = ModBlocks.reinforced_glass; Block Block12 = ModBlocks.reinforced_lamp_off; Block Block13 = ModBlocks.pole_satellite_receiver; diff --git a/src/main/java/com/hbm/world/dungeon/DesertAtom002.java b/src/main/java/com/hbm/world/dungeon/DesertAtom002.java index 81fdc1634..47b4e4f20 100644 --- a/src/main/java/com/hbm/world/dungeon/DesertAtom002.java +++ b/src/main/java/com/hbm/world/dungeon/DesertAtom002.java @@ -27,7 +27,7 @@ public class DesertAtom002 Block Block7 = ModBlocks.deco_tungsten; Block Block8 = ModBlocks.steel_poles; Block Block9 = ModBlocks.tape_recorder; - Block Block10 = ModBlocks.machine_nuke_furnace_off; + Block Block10 = ModBlocks.machine_rtg_furnace_off; Block Block11 = ModBlocks.reinforced_glass; Block Block12 = ModBlocks.reinforced_lamp_off; Block Block13 = ModBlocks.pole_satellite_receiver; diff --git a/src/main/java/com/hbm/world/dungeon/DesertAtom003.java b/src/main/java/com/hbm/world/dungeon/DesertAtom003.java index de58b4283..eb20e3309 100644 --- a/src/main/java/com/hbm/world/dungeon/DesertAtom003.java +++ b/src/main/java/com/hbm/world/dungeon/DesertAtom003.java @@ -30,7 +30,7 @@ public class DesertAtom003 Block Block7 = ModBlocks.deco_tungsten; Block Block8 = ModBlocks.steel_poles; Block Block9 = ModBlocks.tape_recorder; - Block Block10 = ModBlocks.machine_nuke_furnace_off; + Block Block10 = ModBlocks.machine_rtg_furnace_off; Block Block11 = ModBlocks.reinforced_glass; Block Block12 = ModBlocks.reinforced_lamp_off; Block Block13 = ModBlocks.pole_satellite_receiver; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index bf0add3d8..7fc015c70 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1017,105 +1017,6 @@ item.alloy_pickaxe.name=Legierungsspitzhacke item.alloy_plate.name=Legierungsbrustpanzer item.alloy_shovel.name=Legierungsschaufel item.alloy_sword.name=Legierungsschwert -item.ammo_12gauge.name=Kaliber 12 Schrot -item.ammo_12gauge_du.name=Kaliber 12 Schrot (Uranbeschichtung) -item.ammo_12gauge_incendiary.name=Kaliber 12 Schrot (Brand) -item.ammo_12gauge_marauder.name=Kaliber 12 Taktische Anti-Marauder Schrotpatrone -item.ammo_12gauge_percussion.name=Kaliber 12 Sprengkapsel -item.ammo_12gauge_shrapnel.name=Kaliber 12 Schrot (Schrapnell) -item.ammo_12gauge_sleek.name=Kaliber 12 Schrot (IF-F&E) -item.ammo_20gauge.name=Kaliber 20 Schrot -item.ammo_20gauge_caustic.name=Kaliber 20 Schrot (Ätzend) -item.ammo_20gauge_explosive.name=Kaliber 20 Schrot (Explosiv) -item.ammo_20gauge_flechette.name=Kaliber 20 Flechet -item.ammo_20gauge_incendiary.name=Kaliber 20 Schrot (Brand) -item.ammo_20gauge_shock.name=Kaliber 20 Schrot (Schock) -item.ammo_20gauge_shrapnel.name=Kaliber 20 Schrot (Schrapnell) -item.ammo_20gauge_sleek.name=Kaliber 20 Schrot (IF-F&E) -item.ammo_20gauge_slug.name=Kaliber 20 Brenneke -item.ammo_20gauge_wither.name=Kaliber 20 Schrot (Wither) -item.ammo_22lr.name=.22 lfB Patrone -item.ammo_22lr_ap.name=.22 lfB Patrone (Panzerbrechend) -item.ammo_22lr_chlorophyte.name=.22 lfB Patrone (Grünalgen) -item.ammo_357_desh.name=.357 Magnum Deshkugel -item.ammo_44.name=.44 Magnum Patrone -item.ammo_44_ap.name=.44 Magnum Patrone (Panzerbrechend) -item.ammo_44_bj.name=.44 Magnum Patrone (Boot) -item.ammo_44_chlorophyte.name=.44 Magnum Patrone (Grünalgen) -item.ammo_44_du.name=.44 Magnum Patrone (DU) -item.ammo_44_phosphorus.name=.44 Magnum Patrone (WP) -item.ammo_44_pip.name=.44 Magnum Patrone (Güterwagon) -item.ammo_44_rocket.name=.44 Magnum Rakete -item.ammo_44_silver.name=.44 Magnum Patrone (Gebäude) -item.ammo_44_star.name=.44 Magnum Patrone (Sternenmetall) -item.ammo_45.name=.45 ACP Patrone -item.ammo_45_ap.name=.45 ACP Patrone (AP) -item.ammo_45_du.name=.45 ACP Patrone (DU) -item.ammo_4gauge.name=Kaliber 20 Schrot -item.ammo_4gauge_balefire.name=23mm Balefire-Granate -item.ammo_4gauge_canister.name=23mm Rakete (Katusche) -item.ammo_4gauge_claw.name=Kaliber 4 Shrot (Krallen) -item.ammo_4gauge_explosive.name=23mm Granate -item.ammo_4gauge_flechette.name=Kaliber 4 Flechet -item.ammo_4gauge_flechette_phosphorus.name=Kaliber 4 Flechet (WP) -item.ammo_4gauge_kampf.name=23mm Rakete -item.ammo_4gauge_semtex.name=23mm Bergbauladung -item.ammo_4gauge_sleek.name=Kaliber 4 Schrot (IF-F&E) -item.ammo_4gauge_slug.name=Kaliber 4 Brenneke -item.ammo_4gauge_titan.name=Kaliber 4 Quak-Geschoss -item.ammo_4gauge_vampire.name=Kaliber 4 Schrot (Holzpflöcke) -item.ammo_4gauge_void.name=Kaliber 4 Schrot (Leere) -item.ammo_50ae.name=.50 AE Patrone -item.ammo_50ae_ap.name=.50 AE Patrone (Panzerbrechend) -item.ammo_50ae_chlorophyte.name=.50 AE Patrone (Grünalgen) -item.ammo_50ae_du.name=.50 AE Patrone (DU) -item.ammo_50ae_star.name=.50 AE Patrone (Sternenmetall) -item.ammo_50bmg.name=.50 BMG Patrone -item.ammo_50bmg_ap.name=.50 BMG Patrone (Panzerbrechend) -item.ammo_50bmg_chlorophyte.name=.50 BMG Patrone (Grünalgen) -item.ammo_50bmg_du.name=.50 BMG Patrone (DU) -item.ammo_50bmg_explosive.name=.50 BMG Patrone (Explosiv) -item.ammo_50bmg_flechette.name=.50 BMG Flechetpatrone -item.ammo_50bmg_flechette_am.name=.50 BMG Flechetpatrone (Americium) -item.ammo_50bmg_flechette_po.name=.50 BMG Flechetpatrone (Polonium) -item.ammo_50bmg_incendiary.name=.50 BMG Patrone (Brand) -item.ammo_50bmg_phosphorus.name=.50 BMG Patrone (WP) -item.ammo_50bmg_sleek.name=.50 BMG Patrone (IF-F&E) -item.ammo_50bmg_star.name=.50 BMG Patrone (Sternenmetall) -item.ammo_556.name=5.56mm Patrone -item.ammo_556_ap.name=5.56mm Patrone (Panzerbrechend) -item.ammo_556_chlorophyte.name=5.56mm Patrone (Grünalgen) -item.ammo_556_du.name=5.56mm Patrone (DU) -item.ammo_556_flechette.name=5.56mm Flechetpatrone -item.ammo_556_flechette_chlorophyte.name=5.56mm Flechetpatrone (Grünalgen) -item.ammo_556_flechette_du.name=5.56mm Flechetpatrone (Uran-Penetrator) -item.ammo_556_flechette_incendiary.name=5.56mm Flechetpatrone (Brand) -item.ammo_556_flechette_phosphorus.name=5.56mm Flechetpatrone (Phosphorspitze) -item.ammo_556_flechette_sleek.name=5.56mm Flechetpatrone (IF-F&E) -item.ammo_556_k.name=5.56mm K-Patrone -item.ammo_556_phosphorus.name=5.56mm Patrone (WP) -item.ammo_556_sleek.name=5.56mm Patrone (IF-F&E) -item.ammo_556_star.name=5.56mm Patrone (Sternenmetall) -item.ammo_556_tracer.name=5.56mm Patrone (Leuchtspur) -item.ammo_5mm.name=5mm Patrone -item.ammo_5mm_chlorophyte.name=5mm Patrone (Grünalgen) -item.ammo_5mm_du.name=5mm Patrone (DU) -item.ammo_5mm_explosive.name=5mm Patrone (Explosiv) -item.ammo_5mm_star.name=5mm Patrone (Sternenmetall) -item.ammo_762.name=7.62mm Patrone -item.ammo_762_ap.name=7.62mm Patrone (AP) -item.ammo_762_du.name=7.62mm Patrone (DU) -item.ammo_762_k.name=7.62mm K-Patrone -item.ammo_762_phosphorus.name=7.62mm Patrone (WP) -item.ammo_762_tracer.name=7.62mm Patrone (Leuchtspur) -item.ammo_75bolt.name=30er .75 Bolzenmagazin -item.ammo_75bolt_incendiary.name=30er .75 Bolzenmagazin (Brand) -item.ammo_75bolt_he.name=30er .75 Bolzenmagazin (Explosiv) -item.ammo_9mm.name=9mm Patrone -item.ammo_9mm_ap.name=9mm Patrone (Panzerbrechend) -item.ammo_9mm_chlorophyte.name=9mm Patrone (Grünalgen) -item.ammo_9mm_du.name=9mm Patrone (DU) -item.ammo_9mm_rocket.name=9mm Rakete item.ammo_arty.name=16" Artilleriegranate item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung) item.ammo_arty_chlorine.name=16" Artilleriegranate (Chlorgas) @@ -1128,38 +1029,10 @@ item.ammo_arty_nuke.name=16" Atomare Artilleriegranate item.ammo_arty_phosgene.name=16" Artilleriegranate (Phosgen) item.ammo_arty_phosphorus.name=16" Phosphor-Artilleriegranate item.ammo_arty_phosphorus_multi.name=16" Mehrfach-Phosphor-Artilleriegranate -item.ammo_cell.name=Energiezelle -item.ammo_coilgun.name=Wolframkugel -item.ammo_coilgun_du.name=Ferrourankugel -item.ammo_coilgun_rubber.name=Gummikugel -item.ammo_container.name=Munitionsbehälter -item.ammo_dart.name=Plastikdart (Withernd) -item.ammo_dart_nerf.name=NERF-Dart -item.ammo_dart_nuclear.name=Plastikdart (Zeitbombe) item.ammo_dgk.name=Goalkeeper-Zwilling CIWS 200er Gürtel item.ammo_fireext.name=Feuerlöscher-Wassertank item.ammo_fireext_foam.name=Feuerlöscher-Schaumtank item.ammo_fireext_sand.name=Feuerlöscher-Sandtank -item.ammo_folly.name=Silbernes Geschoss (Original) -item.ammo_folly_du.name=Silbernes Geschoss (DU, Nicht-Explosiv) -item.ammo_folly_nuclear.name=Silbernes Geschoss (Atomar) -item.ammo_fuel.name=Dieselkatusche -item.ammo_fuel_gas.name=Gaskatusche -item.ammo_fuel_napalm.name=Napalmkatusche -item.ammo_fuel_phosphorus.name=WP-Katusche -item.ammo_fuel_vaporizer.name=Vaporisierer-Katusche -item.ammo_grenade.name=40mm Granate -item.ammo_grenade_concussion.name=40mm Granate (Erschütterung) -item.ammo_grenade_finned.name=40mm Granate (Geflügelt) -item.ammo_grenade_he.name=40mm Granate (HE) -item.ammo_grenade_incendiary.name=40mm Granate (Brand) -item.ammo_grenade_kampf.name=40mm Rakete -item.ammo_grenade_leadburster.name=40mm Leadburster -item.ammo_grenade_nuclear.name=40mm Granate (Привет) -item.ammo_grenade_phosphorus.name=40mm Granate (WP) -item.ammo_grenade_sleek.name=40mm Granate (IF-F&E) -item.ammo_grenade_toxic.name=40mm Granate (Chemisch) -item.ammo_grenade_tracer.name=40mm Übungsgranate item.ammo_himars_standard.name=227mm gelenkte Artillerierakete item.ammo_himars_standard_he.name=227mm Artillerielenkrakete (HE) item.ammo_himars_standard_lava.name=227mm Artillerielenkrakete (Lava) @@ -1168,34 +1041,6 @@ item.ammo_himars_standard_tb.name=227mm Artillerielenkrakete (Thermobarisch) item.ammo_himars_standard_wp.name=227mm Artillerielenkrakete (WP) item.ammo_himars_single.name=610mm Artillerielenkrakete item.ammo_himars_single_tb.name=610mm Artillerielenkrakete (Thermobarisch) -item.ammo_luna.name=Lunatic Sniper Sabot -item.ammo_luna_explosive.name=Lunatic Sniper Explosivgeschoss -item.ammo_luna_incendiary.name=Lunatic Sniper Brandgeschoss -item.ammo_mirv.name=Mini-MIRV -item.ammo_mirv_high.name=Mini-MIRV (Stark) -item.ammo_mirv_low.name=Mini-MIRV (Schwach) -item.ammo_mirv_safe.name=Mini-MIRV (Sicher) -item.ammo_mirv_special.name=Mini-MILV -item.ammo_nuke.name=Miniatombombe -item.ammo_nuke_barrel.name=Mini-Atommüllfass -item.ammo_nuke_high.name=Miniatombombe (Stark) -item.ammo_nuke_low.name=Miniatombombe (Schwach) -item.ammo_nuke_pumpkin.name=Kürbisbombe -item.ammo_nuke_safe.name=Miniatombombe (Sicher) -item.ammo_nuke_tots.name=Miniatombombe (Kleine Knirpse) -item.ammo_rocket.name=84mm Rakete -item.ammo_rocket_canister.name=84mm Rakete (Katusche) -item.ammo_rocket_digamma.name=null -item.ammo_rocket_emp.name=84mm Rakete (Impuls) -item.ammo_rocket_glare.name=84mm Rakete (Roter Schein) -item.ammo_rocket_he.name=84mm Rakete (HE) -item.ammo_rocket_incendiary.name=84mm Rakete (Brand) -item.ammo_rocket_nuclear.name=84mm Rakete (Привет) -item.ammo_rocket_phosphorus.name=84mm Rakete (WP) -item.ammo_rocket_rpc.name=84mm Raketengetriebene Kettensäge -item.ammo_rocket_shrapnel.name=84mm Rakete (Schrapnell) -item.ammo_rocket_sleek.name=84mm Rakete (IF-R&D) -item.ammo_rocket_toxic.name=84mm Rakete (Chemisch) item.ammo_shell.name=240mm Geschoss item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T @@ -1298,12 +1143,6 @@ item.ammo_standard.stone_ap.name=Feuerstein und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver item.ammo_standard.stone_shot.name=Schrot und Pulver item.ammo_standard.tau_uranium.name=Erschöpfte Uran-235-Kiste -item.ammo_stinger_rocket.name=Stinger-Rakete -item.ammo_stinger_rocket_he.name=Stinger-Rakete (HE) -item.ammo_stinger_rocket_incendiary.name=Stinger-Rakete (Brand) -item.ammo_stinger_rocket_nuclear.name=Stinger-Rakete (Привет) -item.ammo_stinger_rocket_bones.name=Stinger-Rakete (Knochensuchend) -item.ammo_shell_w9.name=240mm W9 Atomares Geschoss item.ams_catalyst_aluminium.name=Aluminium-Reaktionskatalysator item.ams_catalyst_beryllium.name=Beryllium-Reaktionskatalysator item.ams_catalyst_blank.name=Blanker Reaktionskatalysator @@ -2335,7 +2174,7 @@ item.inf_diesel.name=Unendlicher Dieseltank item.inf_sulfur.name=Unendlicher Schwefeltank item.inf_tritium.name=Unendlicher Tritiumtank item.inf_water.name=Unendlicher Wassertank -item.inf_water_mk2.name=Schwerer unendlicher Wassertank +item.inf_water_mk2.name=Großer unendlicher Wassertank item.ingot_actinium.name=Semistabiler Actiniumbarren item.ingot_advanced_alloy.name=Fortgeschrittene Legierung item.ingot_aluminium.name=Aluminiumbarren @@ -4174,7 +4013,7 @@ tile.crane_partitioner.name=Erzauflöser-Partitionierer tile.crane_partitioner.desc=Speichert Input für den Erzazflöser$und gibt sie in der benötigten Itemanzahl aus.$Ungültige Items werden auch gespeichert, und müssen seitlich entfernt werden. tile.crane_router.name=Förderband-Sortierer tile.crane_router.desc=Sortiert Items basierend auf eingestellte Kriterien$Seiten können als Blacklist, Whitelist oder Wildcard eingestellt werden$Widlcard-Seiten werden nur verwendet, wenn kein anderer Filter zutrifft -tile.crate_splitter.name=Förderband-Teiler +tile.crane_splitter.name=Förderband-Teiler tile.crane_splitter.desc=Teilt Items und Stacks gleichmäßig auf zwei Förderbänder$Zählt selbst als Förderband, kann also direkt in Einsetzer und Sortierer führen tile.crane_unboxer.name=Förderband-Entpacker tile.crane_unboxer.desc=Öffnet boxen$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren @@ -4189,6 +4028,7 @@ tile.crate_lead.name=Gefahrenstoffkiste tile.crate_metal.name=Maschinenkiste tile.crate_red.name=Rote Kiste tile.crate_steel.name=Stahlkiste +tile.crate_supply.name=Vorratskiste tile.crate_template.name=Vorlagenkiste tile.crate_tungsten.name=Wolframkiste tile.crate_weapon.name=Waffenkiste diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c3896fefb..f7feca632 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1742,105 +1742,6 @@ item.alloy_pickaxe.name=Advanced Alloy Pickaxe item.alloy_plate.name=Advanced Alloy Chestplate item.alloy_shovel.name=Advanced Alloy Shovel item.alloy_sword.name=Advanced Alloy Sword -item.ammo_12gauge.name=12 Gauge Buckshot -item.ammo_12gauge_du.name=12 Gauge Buckshot (Uranium Coated) -item.ammo_12gauge_incendiary.name=12 Gauge Buckshot (Incendiary) -item.ammo_12gauge_marauder.name=12 Gauge Tactical Anti-Marauder Shell -item.ammo_12gauge_percussion.name=12 Gauge Percussion Cap -item.ammo_12gauge_shrapnel.name=12 Gauge Buckshot (Shrapnel) -item.ammo_12gauge_sleek.name=12 Gauge Buckshot (IF-R&D) -item.ammo_20gauge.name=20 Gauge Buckshot -item.ammo_20gauge_caustic.name=20 Gauge Buckshot (Caustic) -item.ammo_20gauge_explosive.name=20 Gauge Buckshot (Explosive) -item.ammo_20gauge_flechette.name=20 Gauge Flechette Shell -item.ammo_20gauge_incendiary.name=20 Gauge Buckshot (Incendiary) -item.ammo_20gauge_shock.name=20 Gauge Buckshot (Shock) -item.ammo_20gauge_shrapnel.name=20 Gauge Buckshot (Shrapnel) -item.ammo_20gauge_sleek.name=20 Gauge Buckshot (IF-R&D) -item.ammo_20gauge_slug.name=20 Gauge Brenneke Slug -item.ammo_20gauge_wither.name=20 Gauge Buckshot (Withering) -item.ammo_22lr.name=.22 LR Round -item.ammo_22lr_ap.name=.22 LR Round (Armor Piercing) -item.ammo_22lr_chlorophyte.name=.22 LR Round (Chlorophyte) -item.ammo_357_desh.name=.357 Magnum Desh Bullet -item.ammo_44.name=.44 Magnum Bullet -item.ammo_44_ap.name=.44 Magnum Bullet (Armor Piercing) -item.ammo_44_bj.name=.44 Magnum Bullet (Boat) -item.ammo_44_chlorophyte.name=.44 Magnum Bullet (Chlorophyte) -item.ammo_44_du.name=.44 Magnum Bullet (DU) -item.ammo_44_phosphorus.name=.44 Magnum Bullet (WP) -item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar) -item.ammo_44_rocket.name=.44 Magnum Rocket -item.ammo_44_silver.name=.44 Magnum Bullet (Building) -item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) -item.ammo_45.name=.45 ACP Bullet -item.ammo_45_ap.name=.45 ACP Bullet (AP) -item.ammo_45_du.name=.45 ACP Bullet (DU) -item.ammo_4gauge.name=4 Gauge Buckshot -item.ammo_4gauge_balefire.name=23mm Balefire Grenade -item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) -item.ammo_4gauge_claw.name=4 Gauge Claw Shell -item.ammo_4gauge_explosive.name=23mm Grenade -item.ammo_4gauge_flechette.name=4 Gauge Flechette Shell -item.ammo_4gauge_flechette_phosphorus.name=4 Gauge Flechette Shell (WP) -item.ammo_4gauge_kampf.name=23mm Rocket -item.ammo_4gauge_semtex.name=23mm Mining Charge -item.ammo_4gauge_sleek.name=4 Gauge Buckshot (IF-R&D) -item.ammo_4gauge_slug.name=4 Gauge Solid Steel Slug -item.ammo_4gauge_titan.name=4 Gauge Quacker Round -item.ammo_4gauge_vampire.name=4 Gauge Wooden Stake Shell -item.ammo_4gauge_void.name=4 Gauge Void Shell -item.ammo_50ae.name=.50 AE Round -item.ammo_50ae_ap.name=.50 AE Round (Armor Piercing) -item.ammo_50ae_chlorophyte.name=.50 AE Round (Chlorophyte) -item.ammo_50ae_du.name=.50 AE Round (DU) -item.ammo_50ae_star.name=.50 AE Round (Starmetal) -item.ammo_50bmg.name=.50 BMG Round -item.ammo_50bmg_ap.name=.50 BMG Round (Armor Piercing) -item.ammo_50bmg_chlorophyte.name=.50 BMG Round (Chlorophyte) -item.ammo_50bmg_du.name=.50 BMG Round (DU) -item.ammo_50bmg_explosive.name=.50 BMG Round (Explosive) -item.ammo_50bmg_flechette.name=.50 BMG Flechette Round -item.ammo_50bmg_flechette_am.name=.50 BMG Flechette Round (Americium) -item.ammo_50bmg_flechette_po.name=.50 BMG Flechette Round (Polonium) -item.ammo_50bmg_incendiary.name=.50 BMG Round (Incendiary) -item.ammo_50bmg_phosphorus.name=.50 BMG Round (WP) -item.ammo_50bmg_sleek.name=.50 BMG Round (IF-R&D) -item.ammo_50bmg_star.name=.50 BMG Round (Starmetal) -item.ammo_556.name=5.56mm Round -item.ammo_556_ap.name=5.56mm Round (Armor Piercing) -item.ammo_556_chlorophyte.name=5.56mm Round (Chlorophyte) -item.ammo_556_du.name=5.56mm Round (DU) -item.ammo_556_flechette.name=5.56mm Flechette Round -item.ammo_556_flechette_chlorophyte.name=5.56mm Flechette Round (Chlorophyte) -item.ammo_556_flechette_du.name=5.56mm Flechette Round (Uranium Penetrator) -item.ammo_556_flechette_incendiary.name=5.56mm Flechette Round (Incendiary) -item.ammo_556_flechette_phosphorus.name=5.56mm Flechette Round (Phosphorus-Tipped) -item.ammo_556_flechette_sleek.name=5.56mm Flechette Round (IF-R&D) -item.ammo_556_k.name=5.56mm K-Round -item.ammo_556_phosphorus.name=5.56mm Round (WP) -item.ammo_556_sleek.name=5.56mm Round (IF-R&D) -item.ammo_556_star.name=5.56mm Round (Starmetal) -item.ammo_556_tracer.name=5.56mm Round (Tracer) -item.ammo_5mm.name=5mm Round -item.ammo_5mm_chlorophyte.name=5mm Round (Chlorophyte) -item.ammo_5mm_du.name=5mm Round (DU) -item.ammo_5mm_explosive.name=5mm Round (Explosive) -item.ammo_5mm_star.name=5mm Round (Starmetal) -item.ammo_75bolt.name=.75 Bolt Magazine (30rnd) -item.ammo_75bolt_incendiary.name=.75 Incendiary Bolt Magazine (30rnd) -item.ammo_75bolt_he.name=.75 Bolt High-Explosive Magazine (30rnd) -item.ammo_762.name=7.62mm Round -item.ammo_762_ap.name=7.62mm Round (AP) -item.ammo_762_du.name=7.62mm Round (DU) -item.ammo_762_k.name=7.62mm K-Round -item.ammo_762_phosphorus.name=7.62mm Round (WP) -item.ammo_762_tracer.name=7.62mm Round (Tracer) -item.ammo_9mm.name=9mm Round -item.ammo_9mm_ap.name=9mm Round (Armor Piercing) -item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte) -item.ammo_9mm_du.name=9mm Round (DU) -item.ammo_9mm_rocket.name=9mm Rocket item.ammo_arty.name=16" Artillery Shell item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell @@ -1853,38 +1754,11 @@ item.ammo_arty_nuke.name=16" Nuclear Artillery Shell item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell item.ammo_arty_phosphorus.name=16" Phosphorus Shell item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell -item.ammo_cell.name=Energy Cell -item.ammo_coilgun.name=Coilgun Tungsten Ball -item.ammo_coilgun_du.name=Coilgun Ferrouranium Ball -item.ammo_coilgun_rubber.name=Coilgun Rubber Ball item.ammo_container.name=Ammo Container -item.ammo_dart.name=Plastic Dart (Withering) -item.ammo_dart_nerf.name=NERF Dart -item.ammo_dart_nuclear.name=Plastic Dart (Timed Explosive) item.ammo_dgk.name=Goalkeeper Twin CIWS 200 Round Belt item.ammo_fireext.name=Fire Extinguisher Water Tank item.ammo_fireext_foam.name=Fire Extinguisher Foam Tank item.ammo_fireext_sand.name=Fire Extinguisher Sand Tank -item.ammo_folly.name=Silver Bullet (Original) -item.ammo_folly_du.name=Silver Bullet (DU, Non-Explosive) -item.ammo_folly_nuclear.name=Silver Bullet (Nuclear) -item.ammo_fuel.name=Diesel Tank -item.ammo_fuel_gas.name=Gas Tank -item.ammo_fuel_napalm.name=Napalm Tank -item.ammo_fuel_phosphorus.name=WP Tank -item.ammo_fuel_vaporizer.name=Vaporizer Tank -item.ammo_grenade.name=40mm Grenade -item.ammo_grenade_concussion.name=40mm Grenade (Concussion) -item.ammo_grenade_finned.name=40mm Grenade (Finned) -item.ammo_grenade_he.name=40mm Grenade (HE) -item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) -item.ammo_grenade_kampf.name=40mm Rocket -item.ammo_grenade_leadburster.name=40mm Leadburster -item.ammo_grenade_nuclear.name=40mm Grenade (Привет) -item.ammo_grenade_phosphorus.name=40mm Grenade (WP) -item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) -item.ammo_grenade_toxic.name=40mm Grenade (Chemical) -item.ammo_grenade_tracer.name=40mm Training Grenade item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) @@ -1893,34 +1767,6 @@ item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) item.ammo_himars_single.name=610mm Guided Artillery Rocket Pod item.ammo_himars_single_tb.name=610mm Guided Artillery Rocket Pod (Thermobaric) -item.ammo_luna.name=Lunatic Sniper Sabot Round -item.ammo_luna_explosive.name=Lunatic Sniper Explosive Round -item.ammo_luna_incendiary.name=Lunatic Sniper Incendiary Round -item.ammo_mirv.name=Mini MIRV -item.ammo_mirv_high.name=Mini MIRV (High Yield) -item.ammo_mirv_low.name=Mini MIRV (Low Yield) -item.ammo_mirv_safe.name=Mini MIRV (Safe) -item.ammo_mirv_special.name=Mini MILV -item.ammo_nuke.name=Mini Nuke -item.ammo_nuke_barrel.name=Mini Nuclear Waste Barrel -item.ammo_nuke_high.name=Mini Nuke (High Yield) -item.ammo_nuke_low.name=Mini Nuke (Low Yield) -item.ammo_nuke_pumpkin.name=Pumpkin Bomb -item.ammo_nuke_safe.name=Mini Nuke (Safe) -item.ammo_nuke_tots.name=Mini Nuke (Tiny Tots) -item.ammo_rocket.name=84mm Rocket -item.ammo_rocket_canister.name=84mm Rocket (Canister Shot) -item.ammo_rocket_digamma.name=null -item.ammo_rocket_emp.name=84mm Rocket (Pulse) -item.ammo_rocket_glare.name=84mm Rocket (Red Glare) -item.ammo_rocket_he.name=84mm Rocket (HE) -item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) -item.ammo_rocket_nuclear.name=84mm Rocket (Привет) -item.ammo_rocket_phosphorus.name=84mm Rocket (WP) -item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw -item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) -item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D) -item.ammo_rocket_toxic.name=84mm Rocket (Chemical) item.ammo_shell.name=240mm Shell item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T @@ -2023,11 +1869,6 @@ item.ammo_standard.stone_ap.name=Flint and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder item.ammo_standard.stone_shot.name=Shot and Powder item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box -item.ammo_stinger_rocket.name=Stinger Rocket -item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) -item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) -item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (Привет) -item.ammo_stinger_rocket_bones.name=Stinger Rocket (Bone-Seeking) item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst item.ams_catalyst_blank.name=Blank Reaction Catalyst @@ -3148,7 +2989,7 @@ item.inf_diesel.name=Infinite Diesel Tank item.inf_sulfur.name=Infinite Sulfur Tank item.inf_tritium.name=Infinite Tritium Tank item.inf_water.name=Infinite Water Tank -item.inf_water_mk2.name=Heavy Infinite Water Tank +item.inf_water_mk2.name=Large Infinite Water Tank item.ingot_actinium.name=Actinium-227 Ingot item.ingot_advanced_alloy.name=Advanced Alloy Ingot item.ingot_aluminium.name=Aluminium Ingot @@ -5304,6 +5145,7 @@ tile.crate_lead.name=Hazmat Crate tile.crate_metal.name=Machine Crate tile.crate_red.name=Red Crate tile.crate_steel.name=Steel Crate +tile.crate_supply.name=Supply Crate tile.crate_template.name=Template Crate tile.crate_tungsten.name=Tungsten Crate tile.crate_weapon.name=Weapon Crate diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 604c7c1d6..82f6816d3 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -66,6 +66,7 @@ "block.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "stream": false}]}, "block.pyroOperate": {"category": "block", "sounds": [{"name": "block/pyroOperate", "stream": false}]}, "block.motor": {"category": "block", "sounds": [{"name": "block/motor", "stream": false}]}, + "block.engine": {"category": "block", "sounds": [{"name": "block/engine", "stream": false}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/engine.ogg b/src/main/resources/assets/hbm/sounds/block/engine.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a20f0468e1b764004ec23202f5cbe27b56da5bda GIT binary patch literal 27443 zcmagFWmuds(=fVd@#4BzaV_rd?u)y-OM&82+}%oXcNQz|?rsH&TcKEi!ddz}@B4k{ z$GJ|fZ0<=WGf5_s%-p%N%2rnD0BFE}LoQzz@*5cKg{1{W0_ExCYHH*5RsbbY_4WV& zoH3yOJzJra-zfh#yivYk8nq9s&;(xpuYdvbA2y5-thSA_HM6p-6`8$_spdcCWU^#z zEUcU?tSp>lw7c1%{~PJvSVO`6hxUV*xF!@p1OT9P!>5-jcEb%tClpg5*aM19*_{!H zDPRNx*%b7~soWCCi}J-H^k{=-5d`35P~cgkrg7#`9K(ICHe{XKW$Ko$|Quqi;m!jN{K>x0MFZs z9Xc*rMi@%Zi$EGm#$k>FNB{ux3uvPXXpztf8;}4a006p(D)z7oa5ND(S`S1-5E-J+*;tmtN3g&U z!2g>ENH+p8qF4q3|3}Dy_;P3kh}FE?IeYm!XjyXgyu>*&&E84bQEj}3Ic`&<2RW=$ z5U3zW2PF$q?=WW|UkB+w5KX=JOcwoHnak9%aSp~11fs6?PRNRFhCp!DHgQ?<^$ugKQo*9Hd%0tInIq3ge~WP=W2 z?$DY{3d59;?O62why{@_BuDII_Q<*@g%5!$)kRH?=05_528bY#hheM9{7+&UK^~6p zI!0HTA1p^-URDspHqO{M@h{;!t7=5!M`0a67iXv*P*Zo{T++6?;62O=Y0}iSt8P}4 zqbp8PL;5E_GKlQO;0eqVRNpw8M$nb!xFXS){YRW+Z&L#RC|?6-F^K<9yaG;RP^n@< zBGWt@=e)Wk$iree%|oZfPj4m6;NEW&5+6KFw9_nf{$KGwLx(JIGKjMOXCQP#_-+%t zN0ce(|1(U;gaVwgrT^)hYy+kI9OdL3qw;SKWh_BeY{_{J&@7IDDz}3wm&H7%fjXA~ zNYg=?0>_Nf+49N-62eI6lYmpE1s22|@&_<^G>d ziY$`=8No8zEgU3Bm!XrzwI`Ev7jfRy9DIxFArAh29-RPdv8S6<2XVi%W{2W)DbqGu2@;{eM}3 zmNh_nT%biTr>eVwD#$_y!r9Ye84S`|@=(M!SXNhD#Q}lRK&y)upfnF7caVXW!SXUl z>&|a=$6kX~^@I752n0AZ!|-#&v@Z#@=0 z91O4|m)|%`f>I42wA-l`|N8ufRrl~P06UmvIOyRiLHZ2Anxqar0xu1fnUWkG zRkMnmEruC7{cw@_lq_O#6SkZUUCNv;9TiwbF1or|SKY2YTum3bxJg^ihP7GK%&vMU zf)z2-O^xlaC`C<|p|~lHSGw3OLG2xRagtgzRWUxpVUhWa>M>c7hFWBK5w;mE)liaJ z3{^3qUKCRcz8e~Zm0Dyy1QAU)jB7T9VWt9M1!s zO7?`TXhBr^jg>4Nq*wM3R`Rl}V0<@6IxwM}4TP1QEZq=<6%%-a51~3t!xW`>V8wKz zty$CVU*lC&#cQTj&5*`XiwCsT%HJp|>zDD(Ch5TX>d~An_`WqvErxDrLd}|PQFP0= zW*4k2WOh@XUg(gK58%s1)(>jhMYA5N$i0n2UbY_6xI^_42?X)hc=-^%*;M_Ip}Ji& z7~fZkX-VJhqH_osVq1LxVMPbdv8(A^-Ux=cL&pD>Tqv80^@tpR3<&^W31>Yd<3NH~ zu@rd7>P$}JeMcUe!gfd&nxJ+F3{BEK%?VMFvnx(X(T%Q8Nm8?8#f8}V9}o*|98xl{ z3kVCZf(58S0Z`)1bn>jSDs0E&sJ!!ND@rO)z!W-pG*J~56<`PNJUYm;y{1O*UrBpS ztIKs{*!iy#{qUY z9dm(Hdg`hNN`q^j+F725oFV(JKra-atS5XCLn&$q8u@K2G>3F?h|C;aZGo8>S&byGb&L zL}OU*Ao{~Jr0X^<2+{fI=A{icNEYZjEsBt=R@r<23`MJG*0r1BeIQe?t6w5?M;F5f z1kOXm?_=D5fkuR>itz0X`(}~fuy2m& z1Z2)bAPX|r4eg&x%J&b8K<@sZtQf=x{pYLB{MT#!_E!1Le}w`B!l6M-4Odm1vl<7k z_M0lb`H8`6u8gegGQ03=jM9D<6~WLkV=?0Bo2(pscP{rlU2G8Ag9* z5Mt~R#L$Dafg(_dJUlz$G+VzyiE{GQHBQJNd?6MT@B<3)qZRPsLstLD%*v0WUk?C8 zh+%{Te82+$z#|bD5plr6#=*tICmEc~p1)mDWQMVRp zy<0e=O|dv{+;Y;aWOEQ3!p0>vfPFECQJ%J2*Qab(J{fJVW6S}#kE&J%XFi|s!MU3j z_J<76Dt-NgIw&N>-A%Z*P}pOw`oMr$_G#iIK;pr$Yb^yg;+BXeshd&qt>6*a;RK^E`A&a55G{;YWRkiJ3Zc+c|Hd~q4AD(=Zog~mT4!SqTy8ackv2d@ zs;YH%Plzn({tfhQv=@a2AabKpIC}#Z7+T$Afr6~4rTLDG^~A5#;5opqb&XlEP}+%+ ze{U$ct^V?tN>P;^$ezDRBHPh+o%cyleYUYsvxY+HC*p9l&1bfOS>1-vvf}2(0c`15 z9JaU}BnF)BmGZAGjD>E7E$Qivj7Dy%NuQbvc9Wu{lSfGl( z=K}aotjGMd>Y6^ucqA*cGuHDFZmnI?jR?&kDE}nmVnS5esv^5yA~OWk^Y-$V56)x; z6KX_1Y7?_a)ApUM00$^|nO$rQ@d!q9c71y4U7;N3byZKade>iqo*B;qKZf8C6r=+?PIPo9j3< z8HMdOAxP!5n%6b{)cF&mput;ld96y^5EL={9_f5mC)>=;vacdqBr3Q|rQQD2!#JJq z2KJM+jt_ZJhw=N;xyHoA(v<$(ifh%cyEVprY`a z_@(VnrqgbPOoGWV%k)uL5R7BGHG5D^Sg5E;^qJa4=L5b zo`D>XWZfoev+t06v0k{rRg$(&O%H;EUr=WyJJ}xMJj4tM&H= zy5xQk4H*`b+da71rC^tXXxURk7aml=+)*%`B*=~9vr0UOHU!nQ!9_Phhp=>mrm_GM zgfv& zWR`v;EzJ#4_$u%oPUPMF7Dwo}T8D;mw}8;|oa-x0ZOyQlDuYX_Uja{B-#?oaf`#Ma zC=I6c9AHeHOKLoRwJ`;d_aeJ~EN7(8J%42zkF3jVZ0S$i4j8v%Q}%nWw1aS4<hts} z4a}-^thW+CVXdTEJCe;3r915wt^Bg7)WFJviIt*x>#zIAebzxwjpFSuB&>rAmyO}d z{P3*b$DMyZ#a>4pO@K&3JKB({sVxThP;m7T26Gh~&^=$)A_BBFs9gR^z1%R2iH}Fo z&<2BZZr;-&jPyt*KX2#ByE?@eFmb)4lQ4~UqF2}<*YJ#`>3&67FB6+1AsQ`?p;llXb9!y5`PbwO7LS(&G}w#8oid~31fbkyPYrACskCCn5mZQ=ORty9&u zH;fcEJ$@V=6ETC4mg`67t7dPB-m%BIM`BBG>UNZ3S1x>b6h{?Z9y^q|8F}dxevT+F zu-8PI{%#PBZ6xIJlm*`}*B-NWC+XD!gWW;^N*&vLD44ZXdNE4hNZLyqO7Ly2qq;u?yu&;sFav0i`>(q&)HNY3W^@E1wB3VpO>pI zz`1G%Yc1_8_u_n>%MJ_9Wg3TVAU&vy4~eW$fpSVQ&}Qj*gat{unfquJ4+1 z(3_7KyOg_T52JiYpsr6Jqp;>1#g-^M4PD)(!7Q}(Hq@W@nC^@yz~3liB={7(RBW_w z4L|JCkK*NPrlOxzQA=|;kac=&ogC6eej4BJ`u=(1%7wfAu;Mw6YcFl9ch1fEAGZ=(T|AAI0tYc|Eg`vij1%oIi2PdpW1+)_-y?Nh)@`Yh)cd5pgR*A< zhWZ|kV!lrBXiI7r;fydhk~w+b&SR<4GLJ^vHzcYT6wfCt^77JOz%@thKM((&&W2Ux zXlE|ET&FGeeSjsmk>ncC5#iZ$Ky7^V+lq}zY>ZO0xkTPyxwqvu?Lc2HbmLyjC~Pc> z{}hM+(_S$4^WymO!`f8G{a;kqwwszpmR&YsDm>X{cUy8H=)a}n{yJZ!1d+Eq7Thrrj{-ZAf@ z_EJIL`S=iF<`$Blu0tsLblRQ^57AfDt{0gSp6i)TQsITTlFo^QA6s$;Jh<;8^R8N5 zWg{aOihHY!GWWK^CfHjao*nEmJ1UJw7;KfCynnNtN<@@WMpXLE6=%F^+imCpEg%(XwUMMq%TldQ z;Joepz*n8l?Oq(@JPyx?I;rqnobCYU{|q#P!DGSC*eUJ;+W}~iR|~M)1&pBlm)u)@%gNW{O8ZKM z1#;1pgWyt&EqMi*>NB`nJZZy1N7ChDDSQy{Y5c6m9+HFQ?jURSB6m%#9SM zE@V#AP?EslexYZkL%xJ_+o~Z;7;T(^rthHwNWbN0*gT>^dl*^q^X_(rIDSIA7(jxn zzXco~=B9b}<^~|gv!;l(lRda&{^1*h8HK&oA|J!{q|U5}c3@}PIdkV~sLt?j?h3l}##_acT7JUihReh7(U6QW+< zS5RwFWag!cH{3Esx6yzt%l~!{czL>U4b{vi;Q6%UsR(;iI#PdBK{k&*VAIc6W05&3 z!*@PdSk!gDOVaqu>ilW2Q{GZD^U2@aXLBxwrTLcka(Y+g`#41g#RC1oN6r2Gv0o#f z)z@;(YBLU*)Wj`jQ3oy3NE6-ZC}v?b_cBiRhwFMXvMKnkmzqY+L!weY$pwx3+5g7v zT>lItZ|}CMJXlWqfdbl)!MANNC`mS5PpcJY9&MnduU^8|>k)w~Naf3*@M47$Qt)tu zKMymZL1Pj~aT7PH+l&)|Zj2n4>qLkYpQ{`KHMgvo3eOww=0%os4K%CZ4DqmRF5lC| zqM=tXP+12kn)~X^@ZDc|s0m%07h%|sV4{ZL1^-b7vmN+vqu?65=b*dgk`qnG5a8Y) z-p;8qX#cG*FW9A=RUd`@OR_khiOh~H+FLBUM(2?=pyXW?5%r=4U?wHIYQKFmSY)*Jyo z<*H)41~Tik#iisWo)kF9Yh6p_?+O7smdo|5LXhvHI;)Q`}{2 zF$GIL8nln7Vj2$Nzth}F8+lDLIzfg`cuHl$1N)kuQB)Gg1QEMYIq^&++*CSlgh(D5 z+AyhCPd?4EtoEh9(Z0!>^b}j=49kIPtBJ4?M( zAqP9~b(7jPJ#y&|61Bf+Wof+U=3OxcpDF~Q!?!#UdKb%GwB7Ss!b1w5l^!m?9u zzV4_LF!Bc2Jl!8W3X5gGR5H4>t}os>1{iFU5@;`6x^*u#%FO6Cp9gq>V`;LKVrryX(!Yarsqk478B%Y2Xe3Kndb@>CVl6|L zplBL<pQ?D_d;-74P?)U2$?! z4gAE;DfA6rZ?H1ZjR~(07=c29Nbi=C82i?sFHu^8)dAGpW)drNkJ^pQ$KLwv~O5 zxH6mW{VEMf(X0Annc~n<{Zt-_^=<#?+MAIfe3L1(7`-4Z`efdYM)$n!`U>~ovx>(5 zb5;QZ0nzQpfOze7&EW5K?ckR0&CRvVZS}pa9bG+b-wmJb{a}IUn08iOE{WA)1|IUn z&OP?KU6iMi=I8NRe*#)|vyx5-2mJ|cJx{~?$K#O}G19WS^~GoY#txq(klU%kukJDona(yMrXC#xXHR{PuFB3cV(L)MAam~CsWKAovIDd`$=N9LIL#S?K0Jj zl&)r=SRNlO%yUZS`w&^Qg{0W?u8>;%2a(>#ln$le`XBmcFG6!kxOX&tU0#&@xS6tK zOkqLrop6RIw=PhG){Y9lh#EFBo6Ex-02#49l{|x#FIiQVC7xL)zlYNG&Y1FE&%W;Y zebOMPH#N^}X=?8B>T)p;l+cacnRWN4`S{1_>u}jXT-}dysiOLB>Xw)?uSGBS%L=}| zM}N$tPddj5{fyjh!bl;#w>gDb#cE5`=Y{jE{t@CVcQQqYgeQ;tPMQBWy*_0R6`Kh7ZaL)&b{6 z6PJVBeU=B!(Vs&uJ5J8a>F;;}0?hHkQ8W||@lTG#H}k&Di3JWuf(;U!ZtOMO7W2i~ zrmawwER~%~vW3sQzTduaYA?S(^GlY{6aQSVE1g%C#e21WKRrU(*s7X*H02<$K-y?q zp7l2diJ@B*)3m4gSjN{j+xh|jKC(WhloYRVn7 zv`rJtCcr27F5kIV8vEtRzFh=CrU&aK`bE@CjU?pGNQz2xqePJ@*f(@ zHe5p0-|>=v$ZI#mI^M99Q97aS$0DA1%7}QPmb@>_yJd_p2584Gc zk|pyH@3g%4X+TsGU(u*QqWpM0$#CECDWpxYQqQ$$rhvY<*D%Miif7%;TPK@#ECC z%1aTvS1DOA#|#bfZ0Zw_Y%pTcCF6BTz`x_lYbwcS@|_*pLR*7^oJG`#O2Ty1y>HR` z+7g~;C-@QYQ>+w`GLqnfTj@!4;tTtyUaT*MtLf7zexw0<+tHWvdM)yHQbu#Q@v!`- zdQ=z?;Ny5b9)wVRxrocPke?xNdsi@M)C&`9xVs&qN5vT>{AEyO#txk_=RAl{cN z#llyj#AjS_M9{QHc=%Autrhx?vLntm-A?cor4w$<;ZP8p zS!72yj`y(`=wZ>vE{52y5bHrQ6P&J)G4It`K5kd*6*uFlF{ID3kA)D!-`4f} zVM{oDSU#kS%X1)p;HOSnNMA#3W6IJ5}ZAQ^bH7$SP!mrr#?nhRNF9?+UOI@j#XH%}*z9Lzpa(IH$DE zVr*JHa!Gc|R~KXfkE;)e7<>#(k(FBMwwu3d=mHwLqQzDY%!emTsPISzeef9@MKK=K zjDMNFDslO^{`_qH>7my(?x>IQ@%i}fLija`j#|#z-)=*u#{v_a-2V{mPq=d@rV^N3 z)ff&(GZ2Q^&3CV6(7M>BCha5YcfW5czQTwGO`0L}j_bP3UAe8O%%+?dOWS%2T0N>7| zX#!FY?8%?m^TV_|zZ&lWcYkN{*nx))dh`zy{mN&6Byy-rM;1a71ttsFrXWr2u=PeE zH?qUU4l65wHFhc9d6>iGcoI;D&F-;F4P03nnxIf}a!Aa)%z3*EEcW#*^dxG9uEiu2 z>|s#9v2Vww+;$ugxEr}>e$Ui#f1M8X6>8ZW92gTJRl;|j)yqy!)H0Kkc*N?GTchnG#SvbjX=vxAk($rFG0uzpa-Qpm1A z$#On|iU!nEFXYoLbAB+KkV17mR6$VMO3j8;CZd50`*_OtkE~B?+k)ZfeXl;h<6r&9 zwks!@bI#Tl2P>O(1#;8l%%do6Z44^L>ON-&dzKYeIK9wK>M$~c1Y>~xBPvFj5yvcM z%X8TY)Lf}lOI!`)Df0JG92~?2n}b~E0mo=}o4Mp^N1L2qP$F}2H>Ri5hup9GZ)MBB zvh7rYzH1zqArLrpG~eHq=roXey{A83#Euo_j2$xp+Yp$PDEl*{+6S*fj}r5g^>x~v zpfUIg@h)BWuZ_|Eu9eRsWYA0Uzi9T~`!m1&S#{C8{-=e0co|Wznc2s^)!}YS_b(9} zHI8)K-tMs+@PotiTT`*SB(GCty70M(9br3rUH94LUU<9nk`r{|=)T2>UkqLxY&SFd z@j;pDWt<2tauT3>b)YgO`~vndetOV%O~fhG4L0Jk#lbWKbDDME#?Gz0GKw#jt`ssK@HF4bMzY9Z9^}h1_xMrD!-HLNA@Vx~|zOYEm%uURHHuBJ~GaV9T(H)qdQI9o1=V_rs>NAmrsxG z{&M!WRcjzwX<^ePpi?P$L&?o|C5hzSv!yfr#TvH9noU*oVk{Clo>_kX4w@e}KWIs!X4wEMd!ab_+Vxgt$` znI^&qSaLIib1d{8Uz?l*D*p=0?OjQ!jq5jZ-Rv=i=rB$sKgp0WDdcinhc#RyW8rO9 zIZPF5@6WFnQr}>dp6!1^j=A3(`s2y0^k?-U;!3EP)NWtp!v|52M~15P)&P^p_f;?3 zOCADptEu*60i162fdOk(DqHNm=cc62`ezknIP4F?IH5l(IceQ>BB2)ivSE#Fot$aN zj7kbTa+)MeRzGQ(`lG$*DO!depvv~_kovRd!1B-PEL##G8f$8j>CrWuEreql;J00j zamxCv%%rV*7UU@N9-Q$MWRW`NlDwmey4n`R&$oBHeR=QuEYc@k-CQ0M6_9 z2Z6twSp=<{Lo-YIw6W{oeO8URSI6aE8n;ItSR=~i7^o>G>2u-MD1@eX6^Li%j9O|N z2~4(PZt+a9YM3)NScBmtjENG|O1w3pHU5O%M4BD7D%0gBmzp!Mt?L=qy`+(Eu=Soq zfzv107Im`sTNt++xlL5{q-=giueH6sgTAaYDm$yUyWex_vyG{L3BK=okj&s18LV_ilZ>|NGOpzpQgwXdv^#*ZJX(Xm3*Ba9nQ+8q^z2LBV^pD&i zo@_Jbz6WqqVQk*v&L^xNwSo9`m*5GRoeFGkTqN5Zw#Eu8tq<}#qtsH}Q7#EAFxsiHgFCq7rD zO;+;6^c6$SPzp0_Ku|db3+i#q!kx98oc6OpSM;w#$-CkZJH8sDJFVq3ZMRZYDCDyw z94OkX{N0w?FM5`joC~5HXWiM4lrW3PyN&A5ZB9`FPXR_yFQ*DMP)IY{VGOib5|YJb z1VyRo=<&dpzty^rrIFX{!;ahQ8VEA>S|r+M1+gi%?f5*l zxYo|#kqsUc==h(I?qfX=+_gZmGz(^oR(oKkwg>j?3Oz=bO9#ADCz?|BIsjjKMTd$s zvff#p08Dn^pAq}AvqLpbuVDG7b7AptaA~(Dxy-^DqIM8$`s_6kXW`2v#u#w%ncsr? z1)0+)+|ZbZr>gH#Cl{Uhq`GBF2EjO-zOpPd!^1|ELhI$z>;3`z3Ssq)vc*7J9<~`D z`01oQAaWiJCjaS0w~^ONSOB`sgxNRenJHc2-FzFPrMGXCQEDfmjb0SMYheF`IOw?CHGo#|<6*OkE@syH!APWgN2tlhF8wVNX)R-hYbRq`wvR7MNCf=CK+f7b9 z%bs}8B2mbu`%ir=)5rjiWq`h3*p;_$m6B7$4=<8=MNBZcUp=|*HI0EotYwp}8e@;# zf>VSrm3?Ro*51oeztgxhur5fNq6s=hY-LP=wvO$NB@Dwz+1!q#8h%GGP5cKwMAF^7 zQ~hG)TeHT69}ewGEeGa`%hv$`>jVA2Prsds_L4t?d9&xbGz3)3e*APs_~+NS*Adx0 z5Vvo@9ELU`N26pk&S{Ry?NoL{lQyh0P=7SJ{djpe{kj6{HZiqADQ~11kLI)6YQm<6 zWdp1S4efLDL66>tuuK5WU3Sn>CvtEWMb6FNUN{A{GVgc5a_B)nW<268`RazCyMh@$30T9St=WiND;sJo2IDkh z3s7f-tlR9@F3Z0;$4OR%L-becJ}G$bg}3FonsT(X66+IDCyW{lm3}$Ug)Lw^%DAab zDHAkvWZ9)m@YB$Ga!s%5SfFi>MJjY0%*!}_#;Js5G!~QZGiI0cskuQd{VNvJOft43 zRZ>Ch9s{O#F1X_Q#xl}bES?gR!h$m!f<)CPlXil~cR=IVJ>g0P))p-HaT}~)n4E#L zoZ#;WCY88uC|7`!f%WnOyx86P1a~S*=y}NfxT}J>(cJz$CFR#+L&YVVc2$abqVFU3 z;`?fO)$+=38<3axc`Q!#)}UiG(`jGSDTf&NPQ+!0<((3V1_OzAp>v*F|F`{^Pw~%g z8v0&3f8z}Y1IR{{>O1NWhy8FSNrZUWOui=Mk~SVTcDyJBtvHO$(IV#fY{*_O73hC8 zxN22X2wARS!f%nzB*txOu>;qPZYXuR7=0|~scw*r6u-yJ5C4b|vrwT?_wp1|0t1H+ zXvvNaE&Cdmp*XnY%es3F^5!DhESVs2TFy;pVldUzQe8Pypku=Z^Z7C9f0Mg! zIh<4Z`*LcR1(GIJ4c(uDFuP+Q7U3Qm$x()>$b#%0&?+UJtU^-q*G z6}m~Qnf6xk4c*K3S9~`S`AL>IHJ6nHncPMa1}^Gdaq_HM*_->2S@)R&r}Sx)jI%vX`j=c*|EwVy0?NF ztK&{@wjN#Nt6Hd-Zc#Lx6?$(oT?%?%{(5ocB3wwiUQ+nT^5t76t@n`hyK;A^n|Bp; z?Xp<$aADui^~QuDSDMx-A}Irv6In5)Wra>1x@9XK-73w0y6ZYz6jJ}S386CP(%8E= zoh`rY%&_w~P`PfDs&7txu1e zkzpPHa#;qSb*yg3E05DysW|}a)HW`IGU7=|Vq0X_c`y)&(+vx7m+1KN@t{at z2cB%ddX2?iK7G!jOmPYTlK&~v_*Cfi*=oZKtkF>4icD4b6mg7ELhEuI>ALm~6WgCN z9gagyu8eu;{A{<`3s?vhFT9!;my0d4NomGNP>^F<*Q$izu8Ux}`W*K!jP;X;*#{jRW{e72%u6B+&p|x{a_YEb0mnYr- z{fqp0yEw&+yfsCuLFFDSm~?sKcz&&cPLbg?6Vx`9*?Q})4u8rAcdpJTjA+*r1S;>#mt_gMq1IP4bX13X4pO)fPOE7REZ9W5VpBT& zl{=}H>O^F9tA7U1+g>buO+3gkho~MUR9PD-*HTMw)@1aQ{3V6sX61f9>1&x@V*1)f zIhqS#%7#fKhCOdiswV_&9B9ee-BPufX{xg=Pc%Qx>C2a(JnVDE3J_L*fp#A?hq2h& zc)OXv47J!}qw?dv%4eZYC)o!L(O4tFCN=VBgghtfwO`4N0#A4Ak*%YV>l$r2t2F$< zRC`u%4mGQ=$qq;T&*mMM`+j4b$npbqS|_7J&zf$c9|7f3SvZ?M!}{y=zv4eGN3Xwc zleg#fP>PubN?bsr7U8<7koh(tVqE-eGs&lwRLA(=VLwlleVB$ z%s5y-b?qQV<(k!odks!U98?pJ!%H9$U@C{6?S*{Q)bizv7N9X5fQO!~D`Bck!tda9 z7>WGS?dsUgn?}*`=V>mziDIkY-GsmJ*@`okl3{rNx0InEXjLqgcYUw(fU+R#x<&5C z_yR8Twe+zRTl08bXlLi?7pHbVLARsigSqjp zjRAHh*hr}xXEdfbJ?E#jV-IXxd82%;**$VtS>*Mu#KOmnB!Hnw@Uu zQ~)GE$nhNX3?@Y@zdHexf1)W@2_=P8U!_%&g2vyz^23*dW0y95$1Tt&&DhB^vDKqR zZmz?^pyd0|RCTNA_y|p{6D(in-}+k026-#<0^shuoU+~_SS<54(^l)Y{X?~4Rbu2U zTVXrsF~sU_c;!sNeEd^sgX3@UojW{!G#qW?R2=&mSTn;EZp;ED=$$S?A2XO8Y>MOU z%Q+GI73;$pi``U0we+wpD+*At@#)?IL; z`K`q=r_A~vjJQ21@ZxXHW37XdjDtySFq1y(@9B?l`YM4&>4g*-!p*+??cq+>wHh7t zePjW3skQW|DL;Tay5UxN8lH!OuykS1iI?=%NUhxQCg{q&7jtBY2&i2<>+b+t$efPw zgg>x*?yHo;SH3G_@E!`lAX_F|bjC_0;+uUfkIC5nf>Qp*`zW&@sh}>ihzY@rwin5=vLTuI6={r04gn@_^NtC7sLi zba)Ae)W321?FGMBCpj}olkJojE7K6gFcwN&ep&Lh+u=mLq}+Mu07)(mgsYfl5N)d6 zf&`l2y1}ProElk43!>b0^Lelu)#fMwTm}nE=!zc3s-5n#!J26|E}3m*<7_60P1Q~s!j@a9pY9v zKQm{{Hd3m-K6pIYu%O&}D>Z^_^QcBC98x zt+MC1@wkt*MEy=g9nH0AQ6c4PiSAByU{dIyd*AH{;Z(f0*G%3Z-G;KfR{PYL{q%6v zu*y$iYF--1Cdo#F@ZVz!tN(LM0r^)nU_z~KjhOuHZy+D2X+~=r8@@My+q%BDHGXfY ztE}(rXlzta_msARA(IJ1YrU~9p64Rhb;qHZ5v=58SmGDY$waI*m~x29Jp8bQdY9ASiCKD{mr*f zUkf+9{V60`ATYxM_)Ux#39s9hlBCq|`b5UFl=pQOey- zq4yGt_$!83Hz7b{U1CatC{Sh^;M&fIrM&2=+#?zpQt9j6vVgraJ>=$3xTT)=+C{QguzMn%G?Q92_(#GytHo2Ig0*nP@fE*;T1xn@gDBXL zuMZZmx-h7E55z;h#$O_M;WTw;VBNim*2_k&n{hc*=Q?#&yRxpvd(&;wu{`z+Fp@z+ zH+jXPP9-feJAW0#_m3lzl*oJ@s`O; zI*<;x^5CwqYkZj#(k1cx0;G}Nj<^MBdz_ykm5Wf$f>?9~wcCwr#%}GJ+16d?2g*{C zP50OhvsX)1gUYI^tC|MPTv6>bek{hLedfYew14<^h@K-O#o$WYVd+^|wfg)}#xcX(BML51R%Fe(hf@bws-FrXIe_D zaAbo>ZNwDR7yf&?CBWJz*ZR*-09Zur6OG4^5AH@N>6b2Dsvggbio0u|P=lpigyy$wI>>9tn-WQ^T(b3tpED-xO$o~qjSdW z9#-~;^Y>XT7xmIq9+BdrMs#DjiPE+B@o9wiqKW#PEbUw^nnkLWxe7&u^iGHJrXmMK zf%ij~ChjC6)2`Jt1#4tOqSscr+h20qhp;s!)R1lA-Dt0q{XupRZqKvZ2LZ>Y>dKx| zR8*a=E=m3(Dzggr2fSVGNio|vokLBiOKI|S0SJ3&7amMaZ3I~z$+NMA-?LGy5PM?B z+>UiH2IRChC7Z$>6WbQ7&aQbi`|F39@6b=`OQG5SK8~!-rFoY!i>|xEn5Wk3K3 z%szj_32o*D1xRpUm7ZB8Uqo^npFti-(T3m`2LC2*0=$~xh)10cy?mpn1P3BR%MmV~ zp@;;1GtcR#g2Y-gj1g8qGz+r3O5#@UEUlo(eg7 zqSu3$cN39myHuocA4}(WFRhoB{pC+M0`gXpv)VY-E~S|epo2V`c<*3BXMhxrs+T?8 zDz)zh-vzSCg2<`Na5V~7>I{%eI-YiEf>(W#+{itV!l;|OGBu?^;Q*3k$yfp&Om$|4 z*$Ql|;kTIxSQW84W-W98tE!ZliG*(3&>a_+aQtS!yas9A&vfi-S>tfe(RozGTccl)^mLbAR_9cdi1WJ2!6$FRky2FT@_X4Z3Xcbzb>~-zG<+FA=-fNX+2GIh;8*Ap5R72}-5#|oiV3wvNb!gvj zn3|a0+U}pV>Awy?)6nfLi-$s9qH}HJb>TA|Ws@0_DSp~Mwj$zoc(h$^XgyVgeH_E& z;&Y>v{5is>QhK>9w`YbeRvy`V1DOC=*>33%!(fzQd92AV(bGHpW$D&7{pUs$6PI1Z zKkp;^fDK;V1YBxRhVuxRVI6NfB$ZxAzC$OPHpWSh6Rd^|s+kl#%l#jE8U+AeJT0*U zQD9?++w@*1x^s2Y)4gnLJ(KrqsLwXy^J8uDvG2RT{Cg>!)>rr{ts+NgXW?)8W-7;? ztjxBbyDMZ&@leI~AH9*^z5n>xOU8)^uEDR`Ntr#30z#7U-d$1YszqV!o4%AP$bbkK z$t=(CO=RluPFZ%N0>d0Tm+_?*E#uB@mCe$rowjNr{5bIr@jqA<$pQ#{28+*#}JXnGdEuEPxxd! zEjwE8LSklml!61hkBt`o!-4KvL8lV>c;@mTYpBBkyn<#Nk zhbbYBw2!`~pInoQ97((h45{CD0l}zOzD-%ULGh58>eiJyI(66SK>MqOmdFKiV(k+} zMF1ZBY_dRCwAM?Q;k%{?;G#$wB9=73Y^+tvC!(gZbsnb2Exk*;7i)LfPrpNZ6@_my zj}o~xBLR!-hto=s1XBq1NpY3M>b-pJPh4wKPh;Fy=mW zMb2k6EB&CF=)%=Q)|;__R?BLj$|_H-Yv&kG7g{0J<9sE#2=U{e!zJH2YEm2gxb7;` zt$~>?*lDi{hxVZKAHsGEIe?kldjNh5m8?T=Aes1>;q!1}VegdDy|92i00bIq=#+$L zVl(Mj_?98^5pVyO&30dJ|C}Xl8tFo%Z6K+P8t85vdBX(1o^KH%C9@cD@_FL1nZ-)Z z2*-C>U7+lzOo;RyMx$yWYVRfD?q6JsmCu|qMK4xY$7TE|z!)Wf8BWzF=7jZZI=Ep5 z56zV~?8kGcWNJBBhqJ5O9%ogl2&0hfb^V4Kij(Z4_ZfUH zmbz4NQ3J`lr>#4`x8kiP#2a^i?wrAxQHjA_Ja#?A7B9}%c)nqTUtf=~MWW$xO5`l$ z`||N>?dt$B2!*U!7gB`Yx$$v@+2i(IrdUE`dBjCgW9ry%NK%5Et1ETD0Yl<+%{9Uz z?+|6qxCTBI~VjY;>nw*aLv3F=#4G)mUEP>P#pMYEvX5H z63=L;7{42|rn+K8q1WA=QZ0S#Y_61gfiakDkWZiNK@D7rjtwCmJT1CGRTxMBcT>MP zz+Kno45n1Em@LcvYx(3!=p+5_=l?(Ei<9Eh4W+-`!q9zEcA7RT<7ys|Cz)>72TpZ# zR-#xk?t9JxTwT&2hgm)Nw7tH$%xnHAv}2aOsrTrkn675s$*F8ljZ6Iwe6+5MnwGOw z-z;7XbbXHD-q1K{U{6;hHI9(fxG7Y+}(eO2lL*UvjK6shZbA z_5SOfXW2si&tLS@jq+-v`z%+r@u>N@nZg)$e}9(C)JhR&KL=~@vE?VXV=Em;cH0j9 z^Q|ki3uN19q%|sziN7F^YRngq**5%BRCY;rh@{^l%Mbf2ZKtadmX;Mou`DCX#nK;U zabGb2N1bl+-}2p>t5-a0yRITr5Rq8D)9y&0_#73SK%tcupu>*E03HmDa)jo9U6|n; z)d5TlnKB0e)>K+aLYbawdb(;bXMbnl`08eruxFhmt$bFM9igVsU!!ywVplvKUs1*G zjP1)Pvfsz(?!5_n!hIuy6XKi2)R>aClzE5M&I2aanY*XU*D#9LR!d`W>3ZB2gRDU) z4`Xgk>tRP;wPKO7DT8Udg^+7Ydt6y#is$XRADzg^(dDGW>pr3k9B-@(upt@LjB2G(HT06+1;0_wny~b zcz1tN9U*e_xjyOoSY}Z(p=o2Qr*7%QpL0rOGCTFknC;P7{h~(vn6g|%R2$?%%qz`A zI|37J;W~;fNA|qlhMSsK+bM6ISjHm4(gN|uC7~p@R9TufPt))1+X?E^lwJANb~I)6 zY6-n(Y07pS6movj=5)`!v8xEGKwpHU?ij9E8V#cUc!t)n*=Yw!xOqhm2N9B`B#vLnNutHe@1JIbaTiD3PYm+J`9a+f*yc@j~RYLZUDvHo1L*} zz-(d#sT30Jdu{G=CG0W(rG4Wty7Sr3yB1-4Psnxj&F^Zn4cqLSZC@H{lg`w6hQj)l z^_sJgF^*_q-pdg?y9igfm>Z#hN6Kb`sQu+jA~~LWCb@4DyKs{Ii+JxDS#7D2YXA8T zgdS}kv8m4at;}9C=O0R$G&<>L&u5YG<9Z|)$IS)2fA!&A$Pm3#Iu0b_hf#XfqNAER zu3G>e42`~n2v7_h{NcC72#A}`T1SEfb5^Epj1cSZ_E3YT_B{4WZ1q*b4J>nZycZ)2 zhGQ>zRra;G0fjOR!FwRgY8`rYycK3?l{iqze;B#=WI3{D6bXvMb9qxP@E~lptl$!) zRsi&6_|#JE?k2H;fu5kB1rbkVlNzi0*2%yjmk<2VN1@ZR3#GToT4}zU>;Ad9`RLig zfn*7T`BR~H3T)$S4k#x|H(yOYlst_W2_TI5N z)n)pGmQhPEgureFH$)s*J&I95Sw9!VPNg$D3UKNlDJg%U*wC2V^(D|WK zT24{g{|?BPmDWO95u$Ng-t%`L+oIU-QD;|{Oe}A!Qb@Ap?XjFeK@-i@7gy2#*=mQh ze8bxbK0IxyLwKM!K!I!4&k0d?cRedJw$>)Y%c@~HpT6%%mvL=*>2~!qpO<~Q!>yC7 z*yAm>85Y$4{iHT1O@pbX8&aLFe4}XP0paf@XP65NV!EY%-~*Gg z))%A`(Mq5w+Q){H&q7!FBz6O?(>}?dzMi~N^3qz;J5A5y^EjikkL7*kCSf`;J#(^b z$!t>Elrd6nBg}@P3HtbU3&kT&q3C>zLlAa&FBBg9jBbKnpxW39@y(`&o&2(a8WEtX zsxp;`A^d6FC!zkO?I4n>$iL>^)7N|P`UPF^^1KBEE?k=UgtS?0X+C5{14`~b^q%C9 zmy^a*RGs6|SPhY!!#ykcmYF$UOmv4&4C8?XtJBVAEWE%NsDRa6rg$c)lO8g=YbYQB z>d*Jrgj;T_mQiG2z-c&SqrQn352ad3o%b8ovo{mLyo$p(u4lWiHq?cgH?2!;=hndh z)Xi20{_AvlgkB)oScTh75n!)|Gp8Na(oUlBAxTV%SQ74;_|^OEoApJp=27@<;YRzC zIb38uJG%Z$1eq?+y$tKpi+3|>j{7Aav-ET?=b6?}uxmqbjo$;^zTzwcG}-6K9vNA3 zxxRFvyeseYjJSg25~oM-kmVdhxXf$lIuj;_6Erl$)SBSq1-&R^6gG*>Ui`V#Bc zh$kk9rH9p+GJYTo2^aYPE|uyo6p=fQ{WzQBwMl7Pld`v=c)~murB-*htz#StTimj7 z<$WnMnd?KMC#%=$830}kt$hLlFd}Pbeh&lYLFU{-OS#dBHRH0jN=RZJ`AAE{+K`*u z6YKw8mSp-FsA5mLQ|HX;w4^AYDz>-Nz1r+)9NkB6cFCiK(M=pHpk$-zhl*F4eU$tl zp6dk3NTID)8Q2YH+Up2jfxT=em+p4MNi0|tpUD<_)FN%+KM;uLqET2MLvIAJmZ20^ z&a`VV6n&{PI85n@`euU+9`0%%w%v|HpEP!dIlYbhev&}>VyNH>Z~^&V06zSjb%anT zbeP~5MFLl}nZSyK0|{W6R^lolA?)uDM~J!@W4^Dv``%Tnrir;uVZ37GE>dO@r*qQ= zOte=H9dQ&td&K>9)cs~f4wmxAz{^faMSWT#=Q5TB{IM_cwg5fFpQxy$;$+bihq8Sg z*_xwqzHZzdUIkaJa2`f)H=0R#${8}M2N=Zi5|(?DRRjW3gWUk;@G z%UJJx;SS)Jc@PX13MTRt-b*!dhSMB0%&gQePusaFLuX`E(Y;gxHne={raEFyp-)HxX`#q-eOJaI9BC zd&yqOVL zJCVIh9RQe(Vq0-6l-bFbn8eKv?GJag*>ByGdwbF-&9K=sygv42p7)>z!i6IB6cY}& zaMH;jSsj-xdsW_&<8YMe>?%IB==LW`ZT%A}JQ~os?d9L&g;W57>{vH#EJm_^=O62* z0fC57TmEnMtx9lyFVFK+vE-n_WVVEpF?QRcC|)b&yKE`tZnR?0(=3u&M0~28SoSN5 z4rp9@pzY&0#X)j;NB}-8t-b?QU?kRXdns}nyG1f*PHSaTMs^x8HhA05muarIOkvB* zpKe{vXGI%!bSyUf7-JNZ9pXGFDn>`l!e(D0?iBmD{Y`ou7Bk*mPG9I=_DbUr;Dn`?I# z{~U>=FIU2Gz7!cyY?xlOD6qFLSstv81%@s1fyGhgx#pJ59Pn^8x`|_^!hk3m&+j7syO7 zr&}^Li%8SMnmXWqX-?WGDc*fCS>~a*Q}bt}s_$0SERLjVWG0sjx*OPDJEQNY(5;7M zEhJQwTC=b;!G4&v;%G}G`g0LtS&YuIqO*GJQ9!5^)hvuSU%yslwI&#P`WZ)TYHkg_ z3LIj?^cgwEq0WpnYHnwbjnJdRa47UZ>Mp9l7j(3mbS!o8;i?~uAtanf-*+bMfVfiS z)65{b{+n(m06q+LW`@~8^TrmgLj>rT*aJYIGHq01Li*9#cLZk7-OTR@yEWWLX$?Z> z*Rzj3ep_=r?ypatZlt2v5pJyorRdP!fW*<|Rjpry7n8z1*vUOD`bZkC5sTZuJ7Q{j zq-cSJ9T$EMn}v4cVy7p@w7iB$9k4NR8AXPmmu z06t8uu>sY<#1`&K_ZUc-&MKvBl^3ac^w zsGDT^T_bh(dAX-r!*XNrH(DR==0(NehrWxQ!f==rf2qyv79?GI3@kWh5L9&c5E2gj zP*SVg5;ZJ6DVNlm3_hZt0%YpUbN7bab^N4tRf0 zwe~8&)N+{0aXikjX_Ge{dW2o|{oYAULCjOM5vL+nIvLBFHYr%-DI)nW9YX90vC(ih_Z8ly410`lIW0 z-$h9oh+m(!)-fF|muyv%&d6d#6j_6R1hQ(%h}NQBEd$ic%;9pzMAduHVdjf9%yRMF ztb;6WDYDl4pgvL2xNb1sL~-YV-&0rs-V1edhS>qFGQ&4>2QVF??UHmyV6H6MrV)}Q zq-&m?cXoMa@ys!&4*Vph4LQvuBlpIv&a-rY6HJ2z9x`(t8+wmRxl-aZ%WJCvRcGfK zpLVyl?ws_XvTXFM;hEopf!+f0s9!3hKO&i)aO)m|XveYJSG9BGcE@Lnm)kKvcBE&t zo}Ee@i!K9XF7NnTGK>*GJt^KVl?#D1kN1Nj*k|4H8}+JkIrZ^|;4b=W#r(8o3~i9e z08eLUQvd`$0|Ed50001;I=%}B00001pV$2my|%cyv%$N%wYjyzv8=eYemrey1iZjW zY~j0gybb+?;~W5((^j#MllXelzJNvve(V+w6X!b2we`AIHB}TMuszCN6%X#{>-^qa zieg7Tc7)T%Y1zj;u%srS_0nxn%ZAtDoxH2q!hCti7;KRLnu-VF0nY+R8@`uiwBFRxkCW{ z`|PFy1|YG(-D5jJ6c@%U+godGlrhG)EV|H{hp@luMaP|Yj+2x3r@~ILXK#bf!k9BR zXcersWP~6+D6IX@>wGHd?W;|ah#$A%lJ~^#PNqm)_Bi8ZckJ<)Z%68yla1o;oG?9> zw)nZ7d`$Ax`$^T-C8hdOb}N?dnwnFssHzzFu+)V)Nx)p3d!ed_5yzndol&L;M?BFo z)T`HnDy5jiqZ_eV05c?^Cx+JXw7B-`eF?Yz8#QKyXrS4Z!z$d3HVwGcG0(=NRh2iIWs<|w((^UAZHJMBovWt?3K8|AQf_CQ_efz+a|tF`s*;cw0u za&}fN-BxljW4FnmHVF|+wdsFyKW*H7A@)X=4}A{eE9&|KvsOA2^X5s!=8qBICYt=! zs+%->hE*jF7YUPt{fBiJz)(*_8;AqI%ZPNZ?7iqlyY{e5*JMH)>6`Stoo)+;sx{bv zK1`N!9xT;<2GJeENgRkPzk|6Btyv?T9ej{j? zE0-y%bU9v+*MhBrp28+?g-s)q;$BZUx;TrqKRfz~4oNxy#r6Z^mZmrhCihgM2Y{zU zr-j6bYlu)KiJRU&`aooC&(|qptU)-R$~$C9O2+|lG~sK?!!mA{=oQyW?A&MBnp`Tz z)R*VZ4(FdK267fOfMLTbtRL9zA(?zY-3NO9JB@Axs=#cl;mX+Cfemt%TWYc?Ld=<~ zozgV6^NYIHJZk&T<8ohn|LfHp=JsZ6#p-%T`71MYiv2D|6)c~14`H`kUOm0z1~bzY zdxGW;SFh|pTsa!YWNcUE#2e_gPe39m zC1clzx%LRrE1zxz9!#ySK#z`UBy4Way4WV|GpC=*fR;^1vZnpqkGWc1|MHV6%B#<( zJN@r}=k;Iq)b@>&V^%QZtE2#}`e_rpj=qZG<>j8=C>;9u*{m-n7aT?%POB%wDAdwT z&!$zB%ggt_^B;XiSDKt%)C}kJIkf~#9s=IFSw}_<4Wr5PE$lIZ>>){+K3l9(WTXFG zqc69B$m&37i4qfTb(8C_5AC!N3sk6d>$L4_!??~64Wlqx$(2t^1ziIE`;2;o6(C4B z^WnR>NNClAJg6H$(Q!9+k55wC`9zWB30v3tsSX37z> zc?{e&K3Qm#f$&<9#}zXK;7H|w2cG+sa)t;{ys?Gbb?atjzmd5IfW-2~rmP_FPDiR5 zbYbmvnyt50wN7RC+QRcY73=-CaE#BBOYL>W)c{2{8Ou&d_e0HN9lMYGe5i@*|3>{i zgBBaf?QD_sKBrt+-3fzg)uD;!5bK%nR(lQjdDe$jB%;=S+9RmkYZ)hF6{0=6QnCNr z!u21$xHfh#Wzoo#no9*WP+Fj&aV#1d%Gae4nq_NIo(r>tlGLgYQJts)h5#Ns^}d6s zhUVRv9e9W7n2|1FI3ops*;Lw+gidL48?%%w_1xJ!9(#Ysyu{5Rth?j=mJyiZ@nYsy+0Ce z(C-q5=I=CBuaJOcsL5OS<%~rm9?(l92fOI=ksJ z&1JD+p8qIU{Fu_Ow+}~zWaS8g`laDr8*F4}Kb3UW>|UC37$MY2g1x5no~^JMb;HDZ zqeQ=17CO{al1R)40%`?=R96b|?+UM8h7UfO^C(!DaCsLz=~E8UI_IR$M0gQRr6alN z-W>>97<~l0AUC?HcW%eGDHtQg2AbaAHhBaN+#EqWOyO`y8eS!0bF71{B0?PnK1>}= zfhHPhvC#r3^GnKP zqmX<*$U^4onJ&5BWYrI3m>ZA!Aa>|Vowa)^m>n5?2Zhsv#LjIV`Rh&|>w?DAh&#mh z3GwnNwsS`smlL>PsJ24rN+=Miv*Ylv>`Xe*Zml#pEQQ zYfHZQMzU>;>=FU)TZ|E?Be!rDWd>XK>z|WO;-64o%mzLzHGYTL00V3IO??t}?`SsF zIyZr71KE;CgqPV)K?u6qF+F+rNjmPB$sc|TRps_>R>$Vaiz;*s+p8arYBk!IDnvI= zZ{Gbp1T?_yPZB^q%? zk{P}o)}O#QFl$h+*FO4st;X}!p^WXwmV?V9rb#0>rnFp{YryaTvjUZgSz)YL*=0Pk z3S|NQ3r(^D0tFl3&0I(@9Wr$t0GOrN+BA%0^)Tif>0VNu=a4a9rRUj2t_=h!x4Ol= zJniq79iR-NWP!|9b72?{v#ta~T)x=~jmhlnUnPIPGvc)pxZ0)tG z{!fx=jd93|n8x6rBJUr8lCY)qXo&^z``AtgSoU9&Q(Sh=Xe#YPwnHq`gId^o^wmAo zVxw)iM)wYQ*oX;W#q93it#B=^x6)7>-1#- zqYceWmyt;Dot(hf&M*cJ?2(vdtB6vp?5*EhUuYiUFUhI;9VWlA_>xfVKE}vt#?HQZ z{Bi;?BgdJqjC2^VgUI3+I+>~F5kpx2{Y~T|y;;t!h!^mT;Cy; z%jM$ZI3gmXl*l=ws)z{gPLzl+3EzCaz3ANcSMB$%H0=$@AsSA?M5!80PuW1 zQB_h(xI1P>N(lf}U4WHRcsw2eMmu`$kF*8x=R zIcG!!GplkcfV*$D55s_}GS71bSl0sJa5(JJU-w&2Hjtmsr_$R?C3+EaUJt2i1!!Yy z0os0!k3IK8bHus_puwQ)Iz$8!spr=1_8~18thc&5<2V9vI-P)T8WC}O+1-B<;P+sH ze&ioBDWw`|1!zrd`>w600000NkvXXu0mjf=0Kqs diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_base_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_base_alt.png deleted file mode 100644 index 4965db40852e37c1550633800cf7c4ecf7447784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzPQP)=RgPuz=8V z;&V8hTkLKOvIIgRK&aEyfr`1XU%M zh~T}aED^!BS}l6L9;%9nP$yNb0C&3`%jFWArYQj1?G|GUK@gy-On$sp08bx}MVzK7 zo6QCQn>A`3;BFi$eEJH*v<)YbahI5YYojbG8y>mF{ zm`pFe7ipa>d5~y1y#kAEezl8AqtV}@T^#_ zLx@5i-bWRH3-DN2bZe?^J zG%heMHvEiZ-v9ssFG)l}R5(wKl1XZYKoEt!fH)z>3y9_df}(L;I4nFsP)H=J5Clcd z?en^;H6gnAzeQ19L)Yt4sVIsd2*NN-lB6uls;cU`h9%&~ar|T0M(>v$|PYH_CQ;@g|cEx zm_SO9&@}Doz_xA6vS1NJinOtxkG6y}60Ykyj`Pfce}d0K4ftph?nWObdKb_vJkKLl bVHo}Z2rbU$YbrIJ00000NkvXXu0mjfMNO_P diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_off_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_off_alt.png deleted file mode 100644 index e5bae79a9e0dcae149ba41bc0467a032f2e9c026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmV;L0cHM)P)0?A5QM+A&Ce60j%c8`0+c2N>GKLaZ|aDeA{`VFhXfKr zcW28^5!u*xFpc+CyW^Slo@_Ro(6%iig4P;i3`!|Pgb)G|B0|$Nods(LTT1_V)R ze#SU{=QAlR4UDpG;fU3-%QUCw|07*qoM6N<$ Eg2bA!2mk;8 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_on.png b/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_on.png deleted file mode 100644 index 13059490cbb3f724e4c6ae8f8a8aee12579ad86b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)N2bZe?^J zG%heMHvEiZ-v9ssElET{R5(wKQcG%tKosl?h@yBF!A9eE;b-9ifEuewzfMG=Oflrl+@vMj5rs_Pn&0FUGN$*>kX`1GF zUX}$BxI99h=K^P#-4jp^Q522i_@)7G57GDit40t6YQnm%aDoe Z@)rym{WteOmBs)7002ovPDHLkV1h^{sI>q9 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_on_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_front_on_alt.png deleted file mode 100644 index 2ceb49badef6a15d91978967735be54a1c5df367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)N7-O*3qN;=tu+{=#j48;x_w05% z09;H~RYl+TM8X^)1OSF%z!*aafe^xzg}m_o{^3mvITnle$xb4OiHGlh0Qm6hON!t9 zxZ&T=zbr1H`F2x~jR*i1m+<&}0yNL@eAd%Y&ZL}9R(Lv{n9q9VvmPLw5%HN#{&cZv zS)J9ycv&gSN=Lh3qV(6MADd&-)kQb5>!O0`befv3E;`z_O$~YTh~VX|zrTJ4pswNW z({0M;}EPgKMy=Sx86jBS1t{hX}pZ7sT_z!}Zy*~R#YnuQ7002ovPDHLkV1ne!&#M3c diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_nuke_furnace_side_alt.png deleted file mode 100644 index d7231553915b05f394a2b54333f01d1390e51091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 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 Q$U6dp{UN)X`~1)R0bUx`ga7~l