From 78fa7b23552cf935fa55ab95cc9521c88281fb9d Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 27 Nov 2024 16:49:44 +0100 Subject: [PATCH] variants n shit --- changelog | 2 + .../com/hbm/config/FalloutConfigJSON.java | 1 + .../java/com/hbm/entity/EntityMappings.java | 1 + .../projectile/EntityBulletBaseMK4CL.java | 81 ++++++++++++++++++ src/main/java/com/hbm/items/ModItems.java | 62 +++++++------- .../hbm/items/weapon/sedna/BulletConfig.java | 2 + .../weapon/sedna/factory/GunFactory.java | 2 +- .../sedna/factory/GunFactoryClient.java | 5 +- .../hbm/items/weapon/sedna/factory/Lego.java | 6 ++ .../weapon/sedna/factory/LegoClient.java | 9 ++ .../weapon/sedna/factory/XFactoryFlamer.java | 23 ++++- .../weapon/sedna/factory/XFactoryFolly.java | 19 +++- .../sedna/hud/HUDComponentAmmoCounter.java | 1 + .../sedna/hud/HUDComponentDurabilityBar.java | 3 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../com/hbm/main/ModEventHandlerRenderer.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../item/weapon/sedna/ItemRenderFlamer.java | 12 ++- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/textures/items/ammo.png | Bin 17198 -> 17703 bytes .../textures/items/ammo_secret.folly_nuke.png | Bin 0 -> 470 bytes .../models/weapons/flamethrower_topaz.png | Bin 0 -> 6279 bytes 23 files changed, 197 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png diff --git a/changelog b/changelog index 4bc9dfdce..0a0e0f03d 100644 --- a/changelog +++ b/changelog @@ -55,6 +55,8 @@ * Wings can now be used like armor mods * At higher pollution levels, skeletons can now spawn with guns * Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6 +* Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves +* Adjusted damage values to many swords and some tools ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 039cf060e..65636f402 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -62,6 +62,7 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block).mM(10) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.red_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mB(Blocks.snow_layer) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.planks) .prim(new Triplet(ModBlocks.waste_planks, 0, 1)) .max(woodEffectRange)); /* if it can't be petrified, destroy it */ entries.add(new FalloutEntry() .mMa(Material.wood) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 352e85ca4..614ca4284 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -148,6 +148,7 @@ public class EntityMappings { addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); addEntity(EntityBulletBaseMK4.class, "entity_bullet_mk4", 250, false); + addEntity(EntityBulletBaseMK4CL.class, "entity_bullet_mk4_cl", 250, false); addEntity(EntityBulletBeamBase.class, "entity_beam_mk4", 250, false); addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java new file mode 100644 index 000000000..42591af80 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java @@ -0,0 +1,81 @@ +package com.hbm.entity.projectile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public class EntityBulletBaseMK4CL extends EntityBulletBaseMK4 implements IChunkLoader { + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public EntityBulletBaseMK4CL(World world) { + super(world); + } + + public EntityBulletBaseMK4CL(EntityLivingBase entity, BulletConfig config, float damage, float spread, double sideOffset, double heightOffset, double forwardOffset) { + super(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + } + + @Override + protected void entityInit() { + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + @Override + public void setDead() { + super.setDead(); + clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a4afc5f24..a5b47a678 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1602,6 +1602,7 @@ public class ModItems { public static Item gun_liberator; public static Item gun_congolake; public static Item gun_flamer; + public static Item gun_flamer_topaz; public static Item gun_uzi; public static Item gun_uzi_akimbo; public static Item gun_spas12; @@ -4841,7 +4842,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(10)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); - schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) + schrabidium_sword = new ItemSwordAbility(75, 0, MainRegistry.tMatSchrab) .addHitAbility(new WeaponAbility.RadiationAbility(50F)) .addHitAbility(new WeaponAbility.VampireAbility(2F)) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_sword").setTextureName(RefStrings.MODID + ":schrabidium_sword"); @@ -4892,22 +4893,22 @@ public class ModItems { steel_shovel = new ItemToolAbility(3F, 0, MainRegistry.tMatSteel, EnumToolType.SHOVEL).setUnlocalizedName("steel_shovel").setTextureName(RefStrings.MODID + ":steel_shovel"); steel_hoe = new ModHoe(MainRegistry.tMatSteel).setUnlocalizedName("steel_hoe").setTextureName(RefStrings.MODID + ":steel_hoe"); - alloy_sword = new ItemSwordAbility(9F, 0, MainRegistry.tMatAlloy) + alloy_sword = new ItemSwordAbility(8F, 0, MainRegistry.tMatAlloy) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("alloy_sword").setTextureName(RefStrings.MODID + ":alloy_sword"); - alloy_pickaxe = new ItemToolAbility(6F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) + alloy_pickaxe = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_pickaxe").setTextureName(RefStrings.MODID + ":alloy_pickaxe"); alloy_axe = new ItemToolAbility(7F, 0, MainRegistry.tMatAlloy, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("alloy_axe").setTextureName(RefStrings.MODID + ":alloy_axe"); - alloy_shovel = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) + alloy_shovel = new ItemToolAbility(4F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_shovel").setTextureName(RefStrings.MODID + ":alloy_shovel"); alloy_hoe = new ModHoe(MainRegistry.tMatAlloy).setUnlocalizedName("alloy_hoe").setTextureName(RefStrings.MODID + ":alloy_hoe"); - cmb_sword = new ItemSwordAbility(50F, 0, MainRegistry.tMatCMB) + cmb_sword = new ItemSwordAbility(35F, 0, MainRegistry.tMatCMB) .addHitAbility(new WeaponAbility.StunAbility(2)) .addHitAbility(new WeaponAbility.VampireAbility(2F)).setUnlocalizedName("cmb_sword").setTextureName(RefStrings.MODID + ":cmb_sword"); @@ -4917,7 +4918,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_pickaxe").setTextureName(RefStrings.MODID + ":cmb_pickaxe"); - cmb_axe = new ItemToolAbility(12.5F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) + cmb_axe = new ItemToolAbility(30F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -4932,16 +4933,16 @@ public class ModItems { cmb_hoe = new ModHoe(MainRegistry.tMatCMB).setUnlocalizedName("cmb_hoe").setTextureName(RefStrings.MODID + ":cmb_hoe"); - elec_sword = new ItemSwordAbilityPower(15F, 0, MainRegistry.tMatElec, 500000, 1000, 100) + elec_sword = new ItemSwordAbilityPower(12.5F, 0, MainRegistry.tMatElec, 500000, 1000, 100) .addHitAbility(new WeaponAbility.StunAbility(5)).setUnlocalizedName("elec_sword").setTextureName(RefStrings.MODID + ":elec_sword_anim"); - elec_pickaxe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) + elec_pickaxe = new ItemToolAbilityPower(6F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); - elec_axe = new ItemToolAbilityPower(12.5F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) + elec_axe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -4949,13 +4950,13 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(15)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); - elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) + elec_shovel = new ItemToolAbilityPower(5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); - desh_sword = new ItemSwordAbility(15F, 0, MainRegistry.tMatDesh) + desh_sword = new ItemSwordAbility(12.5F, 0, MainRegistry.tMatDesh) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("desh_sword").setTextureName(RefStrings.MODID + ":desh_sword"); desh_pickaxe = new ItemToolAbility(5F, -0.05, MainRegistry.tMatDesh, EnumToolType.PICKAXE) @@ -4964,7 +4965,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); - desh_axe = new ItemToolAbility(6.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) + desh_axe = new ItemToolAbility(7.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5046,14 +5047,14 @@ public class ModItems { .addBreakAbility(new ToolAbility.CentrifugeAbility()).setMaxDamage(50).setUnlocalizedName("centri_stick").setTextureName(RefStrings.MODID + ":centri_stick"); smashing_hammer = new ItemToolAbility(12F, -0.1, MainRegistry.tMatSteel, EnumToolType.MINER) .addBreakAbility(new ToolAbility.ShredderAbility()).setMaxDamage(2500).setUnlocalizedName("smashing_hammer").setTextureName(RefStrings.MODID + ":smashing_hammer"); - drax = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) + drax = new ItemToolAbilityPower(10F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.LuckAbility(2)) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); - drax_mk2 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) + drax_mk2 = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.CentrifugeAbility()) @@ -5086,7 +5087,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("bismuth_pickaxe").setTextureName(RefStrings.MODID + ":bismuth_pickaxe"); - bismuth_axe = new ItemToolAbility(125F, 0, matBismuth, EnumToolType.AXE) + bismuth_axe = new ItemToolAbility(25F, 0, matBismuth, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.ShredderAbility()) @@ -5108,7 +5109,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("volcanic_pickaxe").setTextureName(RefStrings.MODID + ":volcanic_pickaxe"); - volcanic_axe = new ItemToolAbility(125F, 0, matVolcano, EnumToolType.AXE) + volcanic_axe = new ItemToolAbility(25F, 0, matVolcano, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SmelterAbility()) @@ -5129,7 +5130,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(5F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("chlorophyte_pickaxe").setTextureName(RefStrings.MODID + ":chlorophyte_pickaxe"); - chlorophyte_axe = new ItemToolAbility(175F, 0, matChlorophyte, EnumToolType.AXE) + chlorophyte_axe = new ItemToolAbility(50F, 0, matChlorophyte, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.LuckAbility(4)) @@ -5152,7 +5153,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.PhosphorusAbility(60)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("mese_pickaxe").setTextureName(RefStrings.MODID + ":mese_pickaxe"); - mese_axe = new ItemToolAbility(250F, 0, matMese, EnumToolType.AXE) + mese_axe = new ItemToolAbility(75F, 0, matMese, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(3)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5172,18 +5173,18 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(1)).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); ToolMaterial matMeteorite = EnumHelper.addToolMaterial("HBM_METEORITE", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); - meteorite_sword = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_seared = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_reforged = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_hardened = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_alloyed = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_machined = new ItemSwordMeteorite(65F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_treated = new ItemSwordMeteorite(80F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_etched = new ItemSwordMeteorite(100F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_bred = new ItemSwordMeteorite(125F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_irradiated = new ItemSwordMeteorite(175F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_fused = new ItemSwordMeteorite(250F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_baleful = new ItemSwordMeteorite(500F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword = new ItemSwordMeteorite(9F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_seared = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_reforged = new ItemSwordMeteorite(12.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_hardened = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_alloyed = new ItemSwordMeteorite(17.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_machined = new ItemSwordMeteorite(20F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_treated = new ItemSwordMeteorite(22.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_etched = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_bred = new ItemSwordMeteorite(30F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_irradiated = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_fused = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_baleful = new ItemSwordMeteorite(75F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); mask_of_infamy = new MaskOfInfamy(ArmorMaterial.IRON, 0).setUnlocalizedName("mask_of_infamy").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_of_infamy"); @@ -6900,6 +6901,7 @@ public class ModItems { GameRegistry.registerItem(gun_liberator, gun_liberator.getUnlocalizedName()); GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_topaz, gun_flamer_topaz.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 8b4357cd7..9f7eab4ff 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -95,6 +95,7 @@ public class BulletConfig implements Cloneable { } public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } + public BulletConfig setChunkloading() { this.pType = ProjectileType.BULLET_CHUNKLOADING; return this; } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } @@ -135,6 +136,7 @@ public class BulletConfig implements Cloneable { public static enum ProjectileType { BULLET, + BULLET_CHUNKLOADING, BEAM } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index f75a882fd..eebf26029 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -91,7 +91,7 @@ public class GunFactory { } public static enum EnumAmmoSecret { - FOLLY_SM, + FOLLY_SM, FOLLY_NUKE, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 03ecc96c9..69fb56d80 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -50,7 +50,8 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_am180, new ItemRenderAm180()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_liberator, new ItemRenderLiberator()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); @@ -163,6 +164,7 @@ public class GunFactoryClient { setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); + folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -180,6 +182,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_liberator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index f76d707dd..511f5f586 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -6,6 +6,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBaseMK4CL; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; @@ -228,6 +229,11 @@ public class Lego { if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BULLET_CHUNKLOADING) { + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); } else if(config.pType == ProjectileType.BEAM) { EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); entity.worldObj.spawnEntityInWorld(mk4); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index 8725bac94..464f727fc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -190,6 +190,15 @@ public class LegoClient { GL11.glShadeModel(GL11.GL_FLAT); }; + public static BiConsumer RENDER_BIG_NUKE = (bullet, interp) -> { + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glRotated(90, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rocket_mirv_tex); + ResourceManager.projectiles.renderPart("MissileMIRV"); + GL11.glShadeModel(GL11.GL_FLAT); + }; + public static BiConsumer RENDER_RPZB = (bullet, interp) -> { GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 818c28f0d..3e90224dd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -43,7 +43,11 @@ public class XFactoryFlamer { public static BulletConfig flame_gas; public static BulletConfig flame_napalm; public static BulletConfig flame_balefire; - public static BulletConfig flame_digamma; + + public static BulletConfig flame_topaz_diesel; + public static BulletConfig flame_topaz_gas; + public static BulletConfig flame_topaz_napalm; + public static BulletConfig flame_topaz_balefire; public static Consumer LAMBDA_FIRE = (bullet) -> { if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE); @@ -103,8 +107,13 @@ public class XFactoryFlamer { flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + flame_topaz_diesel = flame_diesel.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_gas = flame_gas.clone().setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_napalm = flame_napalm.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_balefire = flame_balefire.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() - .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) .dmg(10F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire)) @@ -113,6 +122,16 @@ public class XFactoryFlamer { .setupStandardConfiguration() .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) ).setUnlocalizedName("gun_flamer"); + ModItems.gun_flamer_topaz = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(10F).delay(1).auto(true).reload(90).jam(17) + .mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + ).setUnlocalizedName("gun_flamer_topaz"); ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig() .dura(90_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index f21af90be..06ff41d47 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -5,6 +5,9 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Consumer; +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; @@ -35,10 +38,12 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; public class XFactoryFolly { public static BulletConfig folly_sm; + public static BulletConfig folly_nuke; public static Consumer LAMBDA_SM_UPDATE = (entity) -> { if(entity.worldObj.isRemote) return; @@ -78,16 +83,26 @@ public class XFactoryFolly { } }; + public static BiConsumer LAMBDA_NUKE_IMPACT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 2) return; + if(bullet.isDead) return; + bullet.setDead(); + bullet.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(bullet.worldObj, 100, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); + EntityNukeTorex.statFac(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 100); + }; + public static void init() { - + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) .setOnUpdate(LAMBDA_SM_UPDATE); + folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) + .setOnImpact(LAMBDA_NUKE_IMPACT); ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(0).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) .dmg(15F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) - .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm)) + .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm, folly_nuke)) .offset(0.75, -0.0625, -0.1875D) .canFire(LAMBDA_CAN_FIRE).fire(LAMBDA_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java index c8ccd0eb7..90398bda4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java @@ -47,6 +47,7 @@ public class HUDComponentAmmoCounter implements IHUDComponent { @Override public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { + if(type != type.HOTBAR) return; ScaledResolution resolution = event.resolution; Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java index 0afc6462e..d7160bfd3 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java @@ -33,7 +33,8 @@ public class HUDComponentDurabilityBar implements IHUDComponent { @Override public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { - + + if(type != type.HOTBAR) return; ScaledResolution resolution = event.resolution; Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 5a5adea00..8773e095d 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -617,6 +617,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4CL.class, new RenderBulletMK4()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBeamBase.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index cc5e5d459..77a667d49 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -509,7 +509,7 @@ public class ModEventHandlerRenderer { } } - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onRenderHUD(RenderGameOverlayEvent.Pre event) { if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) > 0 && ClientConfig.NUKE_HUD_SHAKE.get()) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6a90d5a77..7100fe663 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -987,6 +987,7 @@ public class ResourceManager { public static final ResourceLocation am180_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/am180.png"); public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png"); public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png"); + public static final ResourceLocation flamethrower_topaz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_topaz.png"); public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png"); public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png"); public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java index 238150adc..778dd4ba9 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java @@ -10,8 +10,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderFlamer extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderFlamer(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -36,7 +43,7 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamethrower_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -100,9 +107,10 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamethrower_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.flamethrower.renderPart("Gun"); ResourceManager.flamethrower.renderPart("Tank"); + ResourceManager.flamethrower.renderPart("Gauge"); GL11.glShadeModel(GL11.GL_FLAT); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 941ec3bff..a71c48bfe 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1151,6 +1151,7 @@ item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss item.ammo_secret.bmg50_equestrian.name=.50 BMG Zerstörer +item.ammo_secret.folly_nuke.name=Silberne Kugel, Atomar item.ammo_secret.folly_sm.name=Silberne Kugel item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger @@ -2170,6 +2171,7 @@ item.gun_fatman.name=M42 Nukleares Katapult "Fat Man" item.gun_fatman_ammo.name=Miniatombombe (LEGACY) item.gun_fireext.name=Feuerlöscher item.gun_flamer.name=Flammenwerfer +item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Signalpistole item.gun_flechette.name=Flechet-Gewehr item.gun_folly.name=Folly diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9c03239e7..5d217c811 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1874,6 +1874,7 @@ item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE Shell item.ammo_shell_w9.name=240mm W9 Nuclear Shell item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear item.ammo_secret.folly_sm.name=Silver Bullet item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder @@ -2978,6 +2979,7 @@ item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" item.gun_fatman_ammo.name=Mini Nuke (LEGACY) item.gun_fireext.name=Fire Extinguisher item.gun_flamer.name=Flamethrower +item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Flare Gun item.gun_flechette.name=Flechette Rifle item.gun_folly.name=Folly diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 5dfb80710231a4f54f48ddd2a1df3d17002e3258..58ed1d73919485edb6e67dc6e00f0e28b9684b63 100644 GIT binary patch literal 17703 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 literal 17198 zcmXwh1y~f{|Me{0DIpzFA|;(mi-LlHbb}y`h&1d{(h@2tT}qdLbV(}R(%re_0?YCr zzQ6b7VV_}UckkS}_kQY}bBWY?@r0OwjsO4v;-_lL+TgJb03ZM!4*1u)k`FF;zYyAP5mJE{g7+*ZHg)X-2m7o;nDGLI zvCHedW<6WdUH0wGgPHf%t^2?Bzt^M&{;c`c=rr5CY2~~hXro?BsPsM6>M2GxDjtIW z74k$&UghNG#@d^CVYC0+w-Y(c{+P7QRUuLdyTOyDp|lg<7Fhb!?iqDfM>z|<{MPMn ze!LE%gjz7XAIVc(Fzo_vylN0p?1nFV{uvLuWiJ~aYSSCP`GEs1NG&CrQQ{w#Q z6-^LsiDA`;y!`wQC$SEz%BBEJ!to(djLqo%e$jFx*7!a+pLI^hI$Sso>!7@Ml#O0=(u!rJ#29i!3pz6>Izx0MK`kp!_|Wa5MV@Q2}=|`kSd;AU9DSkSxC0k0-j(39~mTrKXGX$lFA|F zn_#oGt~8S+hU|K(N<9>sY6-6d3&J4l*$1~sgoZWdOj*O(#G&yetgd| zaNry>s+&1AJ<1>-ZaJ+LR4~oD<^d&i>8(4s007Lr(Q#^O@c(x z>`y)d@I34+DbTQ3mbRaLdLHKw)W322yZ!*mOrjQ&P%&w$kCcNyt*UfP|K`8O1fPdYB89(r z!;g2-s**)OfK;#e)jcegmoLfT%LnAn90nfxdrx#X+=&d*yBWXKo1n_hN~cVWJ`9IG zFa_M`Zf9y7yZ8x#r!?GBQbwrOvN95|UtL{YTL%Z-ospDOLx0#YMxxS1?HH}z@xrTi zsT_4C0rpL0jO)FlPUeL}2Y+|WAE@eJ2bz{dL|^PbO7rKJdc{=K(b$@Dmk%5q9XUj0 zmmE;;5Ta_4>_#gn6Aa1PG?fxMS!<@Vhx2lEN+_nGLCXKA9oHL$=&5`&!luHiwYu2s zSNjH~^q~x|hAm!q6&#gLUm-L&PX&u!_cISGR?!_~MfyZEzmK=YmK^*)a<+|l7*d)4 zLGE5i-ZDoX57?6ZQqS#1ZhJ!ppJFKz`)7T}KdhN)rn}wNM3Vp#uqNBNi(6b=+>w!y zARe6`ZB~^Q7YFnFiolZgiQnTu0#P=+Z?~w|*>pYlq9Q<4w`S}|Iuh9+icDEtUOIvr z|4Ag{bJ{P*eALkvVyTg%Sv0g_fu8Y1wpVrgXUSo8J!0gpm=+^j#xHh03@wF_%8}`n z8gbC^@P>*ncq=hb7L;DDA8}$Jlsz5_t(Vmo+#X4=Z7Q#vFm{+SOuqTdvWe;D=;460 zHkG4-7GmGAm}{UGV{w9s1=pTy_c_zTBe;i_cTc6xuWD%E*pRUet9<7tr<(rq4!y?* zG2-Y9Sw9mJK5p)KO~;0Ht_KeQU?yD7W%&d2ZDp1JCZTv>pufKi0Qc|&f89=AvCAV% z5ErMX5jZ6uZndqlJCV%(M+$2j8*HMY6W5YE*b0@{Zlzt94u|I}8gsP*IzNYgW-Ag? z!QJ`Fex2jM_00oboi1i`b8~B%2CAzQ>J6ph8tW(5m5;bww8iKAuxP2GkZ3fUyV#`K zfx#Rdd0k9u=u9=fnLdv#x@^bUS(qCe3&Caf*YXI`(uwx+@KB3^ii%Q+r9St_JohB2 zHDx)OeUCgTeG&fnq)ej>S53&k%V;H|KSb8=oJCfa5kBT^7^hK_#iqSO;uBI@Oh|)+ zQ|H4rSaz{};WfQ40b33}KMujWbIk_kfj|-Q*L7{ymj#mH#tl@b^l0C|e`gw6 z)&rzGkeIm~!CPBzy54PJ43oQAs901Q$k0_V94O0U?yYYQV`sr<#ZBA7f*{prXOWqy zuJ;>{T^DZU2F>f>Ev_@2q&_und;Bbbyvp#%$npsMOB*}JL}X<*ea2SlxJ;}h1^2ZA z4(Rl{_M3$GWCgWASKrIH{KmhcHb^K|Sc{IfYSWDu@JWiO{Lp2EIJB7TvDYwvX>7bZ zCUP)=!9fnVeLL0-<{}?{r=jJ}l@5BK!|huY!^iqSpF~`2d72ljN`qm vvg>oUIt6Yx1$ZhdDyKb# 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 LyihJvvI9V zqTp0IeJ(br@+Wj~74CnqfuhSBZEc5^UaC!mZ@3QSBI;-Sptsz^%RRq)pW{9F z&lLdZv7GaT@3T_?d_Fh{vH(Ia7Dvap_hf;Ehci?wcX_ih=Y|=t0Xj?b6bg9?g*30_K$PG zh56O%9qRSEKjw@vK`OvQ?oUs-O1U(+SwsM6Hk+xCO8_4SaLbRMAtETHhC)Wta-E)? zZ(D0)r4-g$ip3( z*K?@R&d=7u!ZV-Xm#Ifzr(8Ryv6)l^*JgE<5}cIcx165$CcS_V?dMmMpnw1CGWx*l zbv7SEaQ3_u$^FsOEBBrkJAP2yq8$>dNs?T;<@8sq&zmpblIB;Ybb<@H`rCPt1KVd# zhpyx|1xKw6+#Af>YhMh_$jt01p;S1Og#>y6YhvK^qkS$S>TzPh-aFno4&6gqB2CMy z9UdApe_z2}F3K|`{KwBysmb=G^_j-wBYL1Ba5rS`dwVMucOWC7BfjGrl}98)bJ0aT zrRY7>^a0d9GHFKLEh2%$EmQ%grGE6iA8M*QGxv7W?(S*X?cHh)@rXVg)a1LVGDowJ zm;ZS|J6*12I5Oo5b4yNkuW*H1)1vKpBX49^F1#9F)7v>av2f6JyYlVStpc?5o2Y{j z_Jx@&QkxZ41G$INL`Db{(Wh`Sx;?iORzY>Q4X#_$=n?2BM{URZhQ65VuW+z|h^SmO z^W0+2UJPbhbWWc^q@s1&u+LF?nm_C1s(KsZMe9AM?`$CSz10Ke;srs4eX#Av0#;lT zGcOG?uhh56gM+=PbaKN?|vD)PMUI7~!Ruj{iS`-;mKL&qdgrx;xVXeVe*X`;C`r$izPoK(z z$22_;Zk~Bq>wdhq5VIbjB$lJ=Te7u`u5IjJ&aL%AMaT~w!cqP*HH{z_Q1BYYOin6Q@>WYI zN1dpbD+vF3R7Bz|vN=BlYuPOR)o&nAjV#26XOA|}Y~|cb@&<3U2Y0!^$IQcI%lM9AN=QwUna?`@aH}urBbAIX_O+TB+ik<&NF! zavixsXFgar1k;@9x49IdQO9?B)`dm4wrcX+h1}d$5Qf0n>lSVX-3ZEw(S!vPy$>#j zv)&(5hCkXJ!eIQ%P6_IgQbx?Dm_M?r6N}7LfIV{#derck8iSv6(^TnHTm5z4g~*tL zH}d{qmotd8XTUi`+1ga(_F`$6ky4y=(+@{^_>(HmD0jPu5*bR>w;YS)HtR1YY8oMX zT_fn%Eto2(3LKvKdRq{FY-6cQPbq4M5z*rRZ#p`rTEj^E<4sl7wY>*xUq2ahb2Uq= zBKwFJkZ~EhaQ$)|O2z?AAieahX#2@**OaJs^=W3U7yhKjT-oitXFU`z9qOS;4B+(b zy`;%FZSI$_J&XW{lSmGf@w$MKEj9P5xUG#e%lcQBlK5S-H_e=)+I8cmpfGBJv$v1l zxx?k^T83x#?BC~yP3ch1;C17x0&AD9n>jfjR$iWWh(bs~iRmdkIi`MKRNjhpI@bcM zoQ#8M$TKRgvJgB$jW9wWiQten74T5OBb@=`&wWyaK8Yr9jKO#y*FfFqd%IFNZp_-N zDURg-x_6pa*GU#z91 z9>w!$rI}H>Xk4d)u$6DpSiM1Bt6bVGsciG2Dvbn~0_Fl3BV6$jJ-lv*pwCYH!rHq7q?PkN4wY6Fb+9+tS2olph;Er2)-n%pF!ZBN zvTBl)71a=3;^n%w%M4cY$>~O)JSqOReha4Ko;?uzJ`35wPdf;z_yt*hWEH!q4YDi^>83Y6lq=;8gB#l9X{!a@y|`Jt3K+0}%lDmk7l{2#LT;mOo9Jn( z$#d>&Ujk$P-6@BKK`bp8A@H?#G*Q`t4 zqm)CpY@^CKn1C|fxK@r&ohwi}Oa3>b?|Ma*Uu+{fcr^SYr62xMvy>TUQCR9eR#vFKE$)v1PXIn3+bSw$6pm zlx=PJN7>Uad6#mJLmyT%p7lOn!?1S8fA`*0E>kTKB0MTCIPLa+atDa$Wq@w>q*T&0 zw+vQ0&2`(i?oQHWobNoP!sj2wo76Pa2Bjv%lgFoHDit6Q+X?;pQWvCy-uT%nIzV% zcc&bjH~dj|%g&GLSY~~Tj2E%-m%};9j2`FzXPE#c{nqkh)CN6xbm7A>yrPQmXNYeZ z@l6z}TudagfgXJ;Vv<-W9?teymlA{$(nYT|Jbj|jkp6X_tf6ntOtW}UXeAtHXpXZh z9(0>MEJRT)SG4tM@l1W?|DO*tp)|_*s544yEtBzT4D}K7c>7vmoJ^$*C)dmV-WI2E zdg|wRh9@37TBpo-^rgUCBna@j#&5Oa9&WtU#?{B znbBL``$i$$?`;@=$|i*B#u&8#gW2|bau+ziuUPxiTcSvmy)o8 zrO+11!NF$9cqbzzb+DsQOU(=76>g@dmm_uCf!-3U%fMKX9GJDjy(N1E-a*6;irV+ZXa>}$6?hB|FZStcWjA|?9c7t+b_LKXs-Bd6F~*`gm_Ukv{AtjO%V8`~si-75l8 zuaSlPD~=YVLZ`r@?*05!2VEzol2U@fe`a4# z0Q#pjJ)!OUJ5EZg?IZ?|!$%lb|9_6D+sQM!Yj@gcvUEH2P<)eUJ_(m1SSqd8*Rd5*?A$4Nmoc~nQZ}74`u?T&HHFstO3}5v3rOZM z6s1Y5`VY9or&bJ+wOf)CZQuq>7+5jRpIQkIoU`uqw**8ahpHYsJAf{-UxYnXv1O$G zZpr~JH9_Q5n&xdbBKNI&^?=*u3M(w7o0z7%XtdE3)aYvKzZlqvv>iHB=b~*F<-xSi z%r3xgk(hxayU{d0WuW%XJOJa900W)Iq4FpvK(@Sqj6&D}qmH`*q{?R|GGEy!$*PT( zAU$uQmo4Zju@4+FAA-oZuua$t5A;5y;Av=?iRK<(YLl?l@38{N5)7(L_YPOx!(#7^ z?S32$=$IcrB(jFtOJPkLH?8{+O2a^gdZt}!c|V(L=7EM%=LwV| zDLl2mB~J|w8cNoMgJ{Uv0&iV4b0JU;d9_>iSy)EOK;`RTvJD?f=xxYh@te4}b^VeZ z;U+mnM0eS?EgqB%eLV%{Ojpov|4m++nWQt|# ze;;0UOha#6c3r0Lc}aiU)>@boE=<=r|L1^7jwTusyHzoPQ`WsG0xf@c^+bv;5Rz8c zj{dio9{BHK>uccfOsN90&@P{msst(4dNin~IkTlNM-4vx>gUU8VYgGYr8UBqe{?rz zv?LZ0O~)h6c&r5#r_uwoPoDo3Eg;)CTTvg*rbeh&r*eK6?<>BBIT!MtJ#yl$-wklU zv_bw7<-}1J4{`jYL!rR?yNa*)AHUNc($!YcGf(s zesmVI{-&_Oh&f!zYb@=2LNp=&Rg&Cjk-TUEIPFu?S)fI+NYuqDCbp(GB6@hs8c_5+ z>quMEr1syv&FWV9Z}kTAGjQy#Cc(7}YZIjf2FHYx02F9UNtY?+H9VX%2 ztmlh6*J=m%a#RsXSK9?;4`o;K0t_kU?QqBwK%@eoyDJ}`UpjUsIW>u<+O4xHqJ->o z2B+h9e^JyHDgoAh)sySmK>d8z4egxHtoK`4FO)o%xLn}L>Rc5sW`WK*>3BWZub@LBj0h=l?zf={}b^wVL(qzdV9eWXzwT_%M8Cd-| zNE^Dn1cG!XG>M|4KkCR)$Ny{|;8%7M82_Qlc31$m4E2NnN4^|~_4QlsJrBN`;|B@J z=TL5$OrlF`kVR42a)*}!3m+$J1{!<~p}zZeCi7P2$jITLvyD}vsh&?g!gfGT0-&5L zJ`n<-4)j1O<#%Sy^IE=PFZCZnycls3;8O(2s)m5hE-h=21@0eq5{QMIsGAv_Yq+y@ zIIxHXnqn;{iw&)gf2yT2g~UNycT{Ym7auXm7*Y4jE) zMz*H?o`#*OINzgJ`p$=q45>U5j=r;*x{(Ac?YV-3ofZ5Xa2@38=8*{ul>dIV^ou0? zevC8N`!9Xvl5*YHhBX?Irf+Vkuj~le70Cw)@mT^*`B+Ic>&Oxu!JzW4&26%K)6G}_ z=%XEkowSpHVSEW1A8wnhCa;`Wezl^HxX$c`Zr$OLSin62=izlhC0SVM^J*cW#oJUO zjk@2pIg?50dy>tq(jT{WQVzmUM#5BnaP~;T`d(W%qTsY#u2iq06tG1iyZJWA7acDc1!Zy)G$~mQyLp8k6YI z+_)i8iDSk77mlLCpnd@6Q1b7E_HlmDMPN6m|83VHbrCs7IRks{77I#j7fWdNO6laP_A2|Cs!eIuZCNf6{pWT>qK z=;A|-+P`wWVy1iZ2V>@lHsg}skUU}DSjRqe?C_GArh=^-Kn$M}{E`2VY#t+D*iR&= z^_a9*qFP&9-79Od{s-qEC26?KiuvH`#ziIxh*RtxO6BABXz~Pfi4y1eFTWGx-#I&j z5!By9hhpytgAGlgzh>nhcC2LQFiKLVBztf$^!A-dvgdNp@f7oCToWvS9%qqcy-`wG z)v*13wY(;EPJ-OkxwfV`M<_rZjgto1kJ_PCTi6*j%S%)4+=6!yqhi02Bt_evY*ea6 zc&U;|2{e+RH8rM5k}RJ_)*dbm+V|B zq`NyTWd*DEg+KZR235<5jMcXNxVw{}7kxfVemCzb@xZ{$^lLh9F!AX}J+g}>s!$H! zRVn8dVK<(0Qt0bLU!~xyozF#hNp$w7Imj^k8D>Ak)*MGM{gQFS4Y=qq^u2O(n>%el zv=NyA7-Fc%9GGIfH)Yt@E5XYt(HVRaC4XL)02vVO|{3g zWA-<^K29dUT>STh!KWmB9*G%NWG4&8o2XY$jA?51v(xe_eYbi2jk|6pC zq4A;}&VZN3BY&(jSi7T<;)GQ8a&=g=qeOcTf7Mn23nnKZMki_-pj}+f-EjZ6R$1k5 zTj(Jt{8jCcrRPrrHt$S-BP*^=&Kq-0h7NuA9IN7VC(~D^+r6BfozF)!K-~1{2wP~4 zmQp7${|#2m>~4p7UD;eWy$6K|(+SU|iY