From 24ef4cb0cab618a120e86226d23060c82f6db48c Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 16 Sep 2023 19:46:56 +0200 Subject: [PATCH] power gauge, fixes --- changelog | 13 +- gradle.properties | 2 +- src/main/java/api/hbm/energy/PowerNet.java | 2 + src/main/java/api/hbm/fluid/PipeNet.java | 2 + src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../hbm/blocks/network/BlockCableGauge.java | 165 ++++++++++++++++++ .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 17 ++ src/main/java/com/hbm/items/ModItems.java | 3 - src/main/java/com/hbm/lib/HbmWorldGen.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 3 +- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/tileentity/TileMappings.java | 2 + .../java/com/hbm/util/EntityDamageUtil.java | 6 +- src/main/resources/assets/hbm/lang/de_DE.lang | 6 + src/main/resources/assets/hbm/lang/en_US.lang | 6 + .../hbm/textures/blocks/cable_gauge.png | Bin 0 -> 305 bytes 18 files changed, 227 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/BlockCableGauge.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/cable_gauge.png diff --git a/changelog b/changelog index 607efd8b8..03232f545 100644 --- a/changelog +++ b/changelog @@ -15,6 +15,12 @@ * Industrial smokestack * An even larger smokestack, matching the size of the coker unit * Reduced pollution by 90%, as opposed to the brick smokestack's 75% +* Power gauge + * Like the flow gauge pipe for cable networks + * Shows the total amount of power being transferred within the connected network +* Trenchmaster armor + * A new unique set of armor that is currently unobtainable + * Has new traits like faster reloads, a 33% chance of not using up ammo and step-assist ## Changed * Updated russian localization @@ -36,6 +42,8 @@ * Smokestacks now capture fly ash and are now compatible with ashpits * Industrial smokestacks can also capture fine soot * Reduced strings required for making coal filters, filters are now also available in tier 2 anvils +* Fireboxes and heating ovens can now be disassembled in tier 2 anvils, yielding most of the resources used for making them +* Signal beacons now only spawn half as often ## Fixed * Fixed the bomber not spawning if the chunkloading radios is too small @@ -48,4 +56,7 @@ * Hopefully fixed issue where the tom impact effects will last even when switching worlds * Fixed logspam caused by custom machine crafting handler * Fixed issue with the assemblers and chemplants where recipes with larger input requirements would break the input funnel -* Fixed crash caused by reloading when the ammo item is in the last slot \ No newline at end of file +* Fixed crash caused by reloading when the ammo item is in the last slot +* Power and fluid networks will no longer transfer amounts less or equal than 0, preventing negative values and removing unnecessary operations where nothing would happen anyways +* Fixed bug where damage sources that bypass iframes would deal significantly more damage if the victim has taken a lot of damage prior +* Fixed duplicate balefire shell existing, the one that was usable was not the one that was craftable diff --git a/gradle.properties b/gradle.properties index 0f150c67e..f918fa348 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=4711 +mod_build_number=4724 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 172e22dde..a2165b49b 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -153,6 +153,8 @@ public class PowerNet implements IPowerNet { public static long fairTransfer(List subscribers, long power) { + if(power <= 0) return 0; + if(subscribers.isEmpty()) return power; diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 8ad18725d..412af45c5 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -106,6 +106,8 @@ public class PipeNet implements IPipeNet { public static long fairTransfer(List subList, FluidType type, int pressure, long fill) { + if(fill <= 0) return 0; + List weight = new ArrayList(); long totalReq = 0; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8a91ad707..7f809f174 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -782,6 +782,7 @@ public class ModBlocks { public static Block red_cable; public static Block red_cable_classic; public static Block red_cable_paintable; + public static Block red_cable_gauge; public static Block red_connector; public static Block red_pylon; public static Block red_pylon_large; @@ -1949,6 +1950,7 @@ public class ModBlocks { red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); red_cable_paintable = new BlockCablePaintable().setBlockName("red_cable_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); @@ -3210,6 +3212,7 @@ public class ModBlocks { GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); GameRegistry.registerBlock(red_cable_paintable, red_cable_paintable.getUnlocalizedName()); + register(red_cable_gauge); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java new file mode 100644 index 000000000..93b29daec --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -0,0 +1,165 @@ +package com.hbm.blocks.network; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.TileEntityCableBaseNT; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, ILookOverlay, ITooltipProvider { + + @SideOnly(Side.CLIENT) protected IIcon overlayGauge; + + public BlockCableGauge() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCableGauge(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(RefStrings.MODID + ":deco_red_copper"); + this.overlayGauge = reg.registerIcon(RefStrings.MODID + ":cable_gauge"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + if(RenderBlockMultipass.currentPass == 0) { + return blockIcon; + } + + return side == world.getBlockMetadata(x, y, z) ? this.overlayGauge : this.blockIcon; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public int getPasses() { + return 2; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityCableGauge)) + return; + + TileEntityCableGauge duct = (TileEntityCableGauge) te; + + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(duct.deltaTick) + "HE/t"); + text.add(BobMathUtil.getShortNumber(duct.deltaLastSecond) + "HE/s"); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public int getRenderType(){ + return IBlockMultiPass.getRenderType(); + } + + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent { + + private BigInteger lastMeasurement = BigInteger.valueOf(10); + private long deltaTick = 0; + private long deltaSecond = 0; + private long deltaLastSecond = 0; + + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote) { + + if(network != null) { + BigInteger total = network.getTotalTransfer(); + BigInteger delta = total.subtract(this.lastMeasurement); + this.lastMeasurement = total; + + try { + this.deltaTick = delta.longValueExact(); + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.deltaLastSecond = this.deltaSecond; + this.deltaSecond = 0; + } + this.deltaSecond += deltaTick; + + } catch(Exception ex) { } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("deltaT", deltaTick); + data.setLong("deltaS", deltaLastSecond); + INBTPacketReceiver.networkPack(this, data, 25); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); + this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); + } + + public String getComponentName() { + return "ntm_cable_gauge"; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getTransfer(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord}; + } + } +} diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 65160734e..003f4c7e3 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -98,7 +98,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "IIM", "WPH", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ModItems.plate_polymer, 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bf_ammo, 1), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', ModItems.hull_small_steel, 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 568f66a6f..18c3f31e9 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -693,6 +693,23 @@ public class AnvilRecipes { } public static void registerConstructionRecycling() { + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.heater_firebox), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.plate_steel, 8)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 6)) + } + ).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.heater_oven), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.ingot_firebrick, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)) + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.barrel_tcalloy), new AnvilOutput[] { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 62b4e98ce..576140252 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1542,7 +1542,6 @@ public class ModItems { public static Item gun_proto; public static Item gun_mirv; public static Item gun_bf; - public static Item gun_bf_ammo; public static Item gun_chemthrower; public static Item gun_mp40; public static Item gun_thompson; @@ -4142,7 +4141,6 @@ public class ModItems { gun_fatman = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); - gun_bf_ammo = new Item().setUnlocalizedName("gun_bf_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf_ammo"); gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); @@ -7065,7 +7063,6 @@ public class ModItems { //GameRegistry.registerItem(gun_stinger_ammo, gun_stinger_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_fatman_ammo, gun_fatman_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_mirv_ammo, gun_mirv_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_bf_ammo, gun_bf_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_mp40_ammo, gun_mp40_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_uzi_ammo, gun_uzi_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_uboinik_ammo, gun_uboinik_ammo.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 6182148ab..b832541ce 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -393,7 +393,7 @@ public class HbmWorldGen implements IWorldGenerator { } } - if(rand.nextInt(1000) == 0) { + if(rand.nextInt(2000) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index b27af5248..3df3c0458 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 (4711)"; + public static final String VERSION = "1.0.27 BETA (4724)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 4d29c4ee7..fbf14fab9 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -259,7 +259,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 16), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 8), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_double, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_triple, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor_double, 'P', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_chute, 3), new Object[] { "IGI", "IGI", "ICI" , 'I', IRON.ingot(), 'G', ModBlocks.steel_grate, 'C', ModBlocks.conveyor }); @@ -281,6 +281,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.machine_battery_potato, 1), new Object[] { "PCP", "WRW", "PCP", 'P', ItemBattery.getEmptyBattery(ModItems.battery_potato), 'C', CU.ingot(), 'R', REDSTONE.block(), 'W', KEY_PLANKS }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index b1458de1f..9dc506768 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1173,6 +1173,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.recycled_electronic"); ignoreMappings.add("hbm:item.recycled_nuclear"); ignoreMappings.add("hbm:item.recycled_misc"); + ignoreMappings.add("hbm:item.gun_bf_ammo"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f865030c1..3ff167e2e 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -19,6 +19,7 @@ import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; +import com.hbm.blocks.network.BlockCableGauge.TileEntityCableGauge; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -190,6 +191,7 @@ public class TileMappings { put(TileEntityDeaerator.class, "tileentity_deaerator"); put(TileEntityCableBaseNT.class, "tileentity_ohgod"); // what? put(TileEntityCablePaintable.class, "tileentity_cable_paintable"); + put(TileEntityCableGauge.class, "tileentity_cable_gauge"); put(TileEntityPipeBaseNT.class, "tileentity_pipe_base"); put(TileEntityPipePaintable.class, "tileentity_pipe_paintable"); put(TileEntityPipeGauge.class, "tileentity_pipe_gauge"); diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index e1c299c7c..c86fb2ee9 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -67,7 +67,11 @@ public class EntityDamageUtil { if(!victim.attackEntityFrom(src, damage)) { if(victim instanceof EntityLivingBase) { - damage += ((EntityLivingBase) victim).lastDamage; + EntityLivingBase living = (EntityLivingBase) victim; + + if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F) { + damage += living.lastDamage; + } } return victim.attackEntityFrom(src, damage); } else { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 50a1f341b..c06ee2508 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3244,6 +3244,10 @@ item.titanium_shovel.name=Titanschaufel item.titanium_sword.name=Titanschwert item.toothpicks.name=Zahnstocher item.train.cargo_tram.name=Elektrischer Flachwagen +item.trenchmaster_boots.name=Stiefel des Trenchmasters +item.trenchmaster_helmet.name=Helm des Trenchmasters +item.trenchmaster_legs.name=Hose des Trenchmasters +item.trenchmaster_plate.name=Brustpanzer des Trenchmasters item.trinitite.name=Trinitit item.tritium_deuterium_cake.name=Tritium-Deuterium-Kuchen item.tsar_core.name=Fusionskern @@ -4334,6 +4338,8 @@ tile.reactor_inserter.name=Reaktor-Brennstoffeinlass tile.red_barrel.name=Explosives Fass tile.red_cable.name=Rotes Kupferkabel tile.red_cable_classic.name=Rotes Kupferkabel (Klassisch) +tile.red_cable_gauge.name=Strommessgerät +tile.red_cable_gauge.desc=Kabel welches anzeight, wie viel Strom$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die über Energiespeicherblöcke$verbunden sind, werden als ein einzelnes gezählt. tile.red_cable_paintable.name=Geschirmtes rotes Kupferkabel (Färbbar) tile.red_connector.name=Stromverbindungsstück tile.red_pylon.name=Strommasten diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d9255f011..17a91ee2f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4161,6 +4161,10 @@ item.titanium_shovel.name=Titanium Shovel item.titanium_sword.name=Titanium Sword item.toothpicks.name=Toothpicks item.train.cargo_tram.name=Electric Flat Bed Tram +item.trenchmaster_boots.name=Trenchmaster's Boots +item.trenchmaster_helmet.name=Trenchmaster's Helmet +item.trenchmaster_legs.name=Trenchmaster's Leggings +item.trenchmaster_plate.name=Trenchmaster's Chestplate item.trinitite.name=Trinitite item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake item.tritium_deuterium_cake.desc=Not actual cake, but great$universal fusion fuel! @@ -5311,6 +5315,8 @@ tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) +tile.red_cable_gauge.name=Power Gauge +tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$stroage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole diff --git a/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png b/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..206104da9d0df1170deb56da8bb2f22ba4f84a5f GIT binary patch literal 305 zcmV-10nYx3P)f=Kg-S(cHe8PNRy$MH^4 zRU}#u14JBYx&Zo{H(%KrJg2IPw_>fWyX*Uk@9*>g0wGkS*7=DO00000NkvXXu0mjf DL+61X literal 0 HcmV?d00001