From 6a7dabbb1e49bf8103bf8b60040ad9abd507907b Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 22 May 2025 21:45:18 +0200 Subject: [PATCH] the malicious gigglefish from the silly dimension --- .../hbm/entity/projectile/EntityBuilding.java | 100 ++++++++++-------- src/main/java/com/hbm/items/ModItems.java | 2 + .../sedna/factory/GunFactoryClient.java | 6 +- .../weapon/sedna/factory/XFactory44.java | 11 +- .../weapon/sedna/factory/XFactory50.java | 35 +++++- .../com/hbm/main/ModEventHandlerClient.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 2 + .../item/weapon/sedna/ItemRenderAmat.java | 14 ++- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../textures/models/weapons/amat_penance.png | Bin 0 -> 7938 bytes .../textures/models/weapons/amat_subtlety.png | Bin 0 -> 18642 bytes 12 files changed, 117 insertions(+), 59 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/amat_penance.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/amat_subtlety.png diff --git a/src/main/java/com/hbm/entity/projectile/EntityBuilding.java b/src/main/java/com/hbm/entity/projectile/EntityBuilding.java index 8a8bd653c..3382ac4f0 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBuilding.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBuilding.java @@ -3,13 +3,17 @@ package com.hbm.entity.projectile; import java.util.List; import com.hbm.explosion.ExplosionLarge; +import com.hbm.handler.threading.PacketThreading; import com.hbm.lib.ModDamageSource; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -22,63 +26,65 @@ public class EntityBuilding extends EntityThrowable { this.ignoreFrustumCheck = true; this.isImmuneToFire = true; } - + @Override public void onUpdate() { + if(!worldObj.isRemote && this.ticksExisted == 1) { + for(int i = 0; i < 100; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "bf"); + PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, + posX + (rand.nextDouble() - 0.5) * 15, + posY + (rand.nextDouble() - 0.5) * 15, + posZ + (rand.nextDouble() - 0.5) * 15), + new TargetPoint(dimension, posX, posY, posZ, 150)); + } + } this.lastTickPosX = this.prevPosX = posX; this.lastTickPosY = this.prevPosY = posY; this.lastTickPosZ = this.prevPosZ = posZ; this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); - + this.motionY -= 0.03; - if(motionY < -1.5) - motionY = -1.5; - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F); - this.setDead(); - ExplosionLarge.spawnParticles(worldObj, posX, posY + 3, posZ, 150); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 6); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 4); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); - - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 8, posY - 8, posZ - 8, posX + 8, posY + 8, posZ + 8)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.building, 1000); - } - - for(int i = 0; i < 250; i++) { - - Vec3 vec = Vec3.createVectorHelper(1, 0, 0); - vec.rotateAroundZ((float) (-rand.nextFloat() * Math.PI / 2)); - vec.rotateAroundY((float) (rand.nextFloat() * Math.PI * 2)); - - EntityRubble rubble = new EntityRubble(worldObj, posX, posY + 3, posZ); - rubble.setMetaBasedOnBlock(Blocks.brick_block, 0); - rubble.motionX = vec.xCoord; - rubble.motionY = vec.yCoord; - rubble.motionZ = vec.zCoord; - worldObj.spawnEntityInWorld(rubble); - } - } - } + if(motionY < -1.5) motionY = -1.5; + + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F); + this.setDead(); + ExplosionLarge.spawnParticles(worldObj, posX, posY + 3, posZ, 150); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 6); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 5); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 4); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); + + List list = (List) worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 8, posY - 8, posZ - 8, posX + 8, posY + 8, posZ + 8)); + + for(Entity e : list) e.attackEntityFrom(ModDamageSource.building, 1000); + + for(int i = 0; i < 250; i++) { + + Vec3 vec = Vec3.createVectorHelper(1, 0, 0); + vec.rotateAroundZ((float) (-rand.nextFloat() * Math.PI / 2)); + vec.rotateAroundY((float) (rand.nextFloat() * Math.PI * 2)); + + EntityRubble rubble = new EntityRubble(worldObj, posX, posY + 3, posZ); + rubble.setMetaBasedOnBlock(Blocks.brick_block, 0); + rubble.motionX = vec.xCoord; + rubble.motionY = vec.yCoord; + rubble.motionZ = vec.zCoord; + worldObj.spawnEntityInWorld(rubble); + } + } + } + + @Override protected void onImpact(MovingObjectPosition p_70184_1_) { } @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - - } - - @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 25000; - } + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index ecde954ed..ff7ea8338 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -6410,6 +6410,8 @@ public class ModItems { GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName()); GameRegistry.registerItem(gun_chemthrower, gun_chemthrower.getUnlocalizedName()); GameRegistry.registerItem(gun_amat, gun_amat.getUnlocalizedName()); + GameRegistry.registerItem(gun_amat_subtlety, gun_amat_subtlety.getUnlocalizedName()); + GameRegistry.registerItem(gun_amat_penance, gun_amat_penance.getUnlocalizedName()); GameRegistry.registerItem(gun_m2, gun_m2.getUnlocalizedName()); GameRegistry.registerItem(gun_autoshotgun, gun_autoshotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_autoshotgun_shredder, gun_autoshotgun_shredder.getUnlocalizedName()); 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 0a42eb594..58945b2cf 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 @@ -70,7 +70,9 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3_zebra, new ItemRenderG3(ResourceManager.g3_zebra_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderChemthrower()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_amat, new ItemRenderAmat()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_amat, new ItemRenderAmat(ResourceManager.amat_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_amat_subtlety, new ItemRenderAmat(ResourceManager.amat_subtlety_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_amat_penance, new ItemRenderAmat(ResourceManager.amat_penance_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_shredder, new ItemRenderShredder(ResourceManager.shredder_orig_tex)); @@ -258,6 +260,8 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_stinger) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_chemthrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_amat) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_amat_subtlety) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_amat_penance) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_m2) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_autoshotgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_autoshotgun_shredder) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index 5a97bc4b5..345ab3d4d 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -58,12 +58,11 @@ public class XFactory44 { }; public static BiConsumer LAMBDA_TORPEDO = (bullet, mop) -> { - EntityTorpedo pippo = new EntityTorpedo(bullet.worldObj); - pippo.posX = mop.hitVec.xCoord; - pippo.posY = mop.hitVec.yCoord + 50; - pippo.posZ = mop.hitVec.zCoord;; - bullet.worldObj.spawnEntityInWorld(pippo); - //bullet.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); + EntityTorpedo murky = new EntityTorpedo(bullet.worldObj); + murky.posX = mop.hitVec.xCoord; + murky.posY = mop.hitVec.yCoord + 50; + murky.posZ = mop.hitVec.zCoord;; + bullet.worldObj.spawnEntityInWorld(murky); bullet.setDead(); }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java index f70d62c0c..b969bdfa8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java @@ -3,6 +3,7 @@ package com.hbm.items.weapon.sedna.factory; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import com.hbm.entity.projectile.EntityBuilding; import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.items.ModItems; import com.hbm.items.ItemEnums.EnumCasingType; @@ -37,6 +38,16 @@ public class XFactory50 { public static BulletConfig bmg50_he; public static BulletConfig bmg50_sm; public static BulletConfig bmg50_black; + public static BulletConfig bmg50_equestrian; + + public static BiConsumer LAMBDA_BUILDING = (bullet, mop) -> { + EntityBuilding silver = new EntityBuilding(bullet.worldObj); + silver.posX = mop.hitVec.xCoord; + silver.posY = mop.hitVec.yCoord + 50; + silver.posZ = mop.hitVec.zCoord;; + bullet.worldObj.spawnEntityInWorld(silver); + bullet.setDead(); + }; public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; @@ -61,7 +72,9 @@ public class XFactory50 { .setCasing(casing50.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50sm")); bmg50_black = new BulletConfig().setItem(EnumAmmoSecret.BMG50_BLACK).setWear(5F).setDoesPenetrate(true).setDamageFalloffByPen(false).setSpectral(true).setDamage(1.5F).setHeadshot(3F).setThresholdNegation(30F).setArmorPiercing(0.35F) .setCasing(casing50.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("bmg50black")); - + bmg50_equestrian = new BulletConfig().setItem(EnumAmmoSecret.BMG50_EQUESTRIAN).setDamage(0F).setOnImpact(LAMBDA_BUILDING) + .setCasing(casing50.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("bmg50equestrian")); + ModItems.gun_amat = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(350).draw(20).inspect(50).crosshair(Crosshair.CIRCLE).scopeTexture(XFactory44.scope_lilmac).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) @@ -72,6 +85,26 @@ public class XFactory50 { .setupStandardConfiguration() .anim(LAMBDA_AMAT_ANIMS).orchestra(Orchestras.ORCHESTRA_AMAT) ).setUnlocalizedName("gun_amat"); + ModItems.gun_amat_subtlety = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(1_000).draw(20).inspect(50).crosshair(Crosshair.CIRCLE).scopeTexture(XFactory44.scope_lilmac).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(50F).delay(25).dry(25).spreadHipfire(0.05F).reload(51).jam(43).sound("hbm:weapon.fire.amat", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 7).addConfigs(bmg50_equestrian, bmg50_sp, bmg50_fmj, bmg50_jhp, bmg50_ap, bmg50_du, bmg50_sm, bmg50_he)) + .offset(1, -0.0625 * 1.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_AMAT)) + .setupStandardConfiguration() + .anim(LAMBDA_AMAT_ANIMS).orchestra(Orchestras.ORCHESTRA_AMAT) + ).setUnlocalizedName("gun_amat_subtlety"); + ModItems.gun_amat_penance = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(5_000).draw(20).inspect(50).crosshair(Crosshair.CIRCLE).scopeTexture(XFactory44.scope_lilmac).thermalSights(true).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(45F).delay(25).dry(25).spreadHipfire(0F).reload(51).jam(43).sound("hbm:weapon.silencerShoot", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 7).addConfigs(bmg50_sp, bmg50_fmj, bmg50_jhp, bmg50_ap, bmg50_du, bmg50_sm, bmg50_he, bmg50_black)) + .offset(1, -0.0625 * 1.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_AMAT)) + .setupStandardConfiguration() + .anim(LAMBDA_AMAT_ANIMS).orchestra(Orchestras.ORCHESTRA_AMAT) + ).setUnlocalizedName("gun_amat_penance"); ModItems.gun_m2 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 8b3679187..4af2dd3c3 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1322,7 +1322,7 @@ public class ModEventHandlerClient { if(chestplate.thermal) thermalSights = true; } - if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT && ItemGunBaseNT.aimingProgress == 1) { ItemGunBaseNT gun = (ItemGunBaseNT) player.getHeldItem().getItem(); for(int i = 0; i < gun.getConfigCount(); i++) if(gun.getConfig(player.getHeldItem(), i).hasThermalSights(player.getHeldItem())) thermalSights = true; } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c729a7779..9d0008cff 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -998,6 +998,8 @@ public class ResourceManager { public static final ResourceLocation g3_black_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3_polymer_black.png"); public static final ResourceLocation g3_attachments = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3_attachments.png"); public static final ResourceLocation amat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/amat.png"); + public static final ResourceLocation amat_subtlety_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/amat_subtlety.png"); + public static final ResourceLocation amat_penance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/amat_penance.png"); public static final ResourceLocation shredder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder.png"); public static final ResourceLocation shredder_orig_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder_orig.png"); public static final ResourceLocation sexy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sexy.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java index 9957c23e1..b66f0e893 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java @@ -2,6 +2,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.mods.WeaponModManager; import com.hbm.main.ResourceManager; @@ -9,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 ItemRenderAmat extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderAmat(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -38,7 +46,7 @@ public class ItemRenderAmat extends ItemRenderWeaponBase { if(isScoped && ItemGunBaseNT.prevAimingProgress == 1 && ItemGunBaseNT.aimingProgress == 1) return; ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.amat_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -177,7 +185,7 @@ public class ItemRenderAmat extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.amat_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.amat.renderPart("Gun"); ResourceManager.amat.renderPart("Bolt"); ResourceManager.amat.renderPart("Magazine"); @@ -202,6 +210,6 @@ public class ItemRenderAmat extends ItemRenderWeaponBase { } public boolean isSilenced(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER); + return stack.getItem() == ModItems.gun_amat_penance || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 30106dd14..636c57c0f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2071,6 +2071,8 @@ item.gun_aberrator_eott.name=Eyes Of The Tempest item.gun_am180.name=.22er Maschinenpistole item.gun_am180_silenced.name=Schallgedämpfte .22er Maschinenpistole item.gun_amat.name=Panzerbüchse +item.gun_amat_penance.name=Penance +item.gun_amat_subtlety.name=Subtlety item.gun_autoshotgun.name=Auto-Flinte item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_shredder.name=Shredder diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 02b6a1201..d234ba27d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2882,6 +2882,8 @@ item.gun_aberrator_eott.name=Eyes Of The Tempest item.gun_am180.name=.22 Submachine Gun item.gun_am180_silenced.name=Silenced .22 Submachine Gun item.gun_amat.name=Anti-Materiel Rifle +item.gun_amat_penance.name=Penance +item.gun_amat_subtlety.name=Subtlety item.gun_autoshotgun.name=Auto Shotgun item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_shredder.name=Shredder diff --git a/src/main/resources/assets/hbm/textures/models/weapons/amat_penance.png b/src/main/resources/assets/hbm/textures/models/weapons/amat_penance.png new file mode 100644 index 0000000000000000000000000000000000000000..42f4c9c05a252ac795c4061ee864174627d5fa76 GIT binary patch literal 7938 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/amat_subtlety.png b/src/main/resources/assets/hbm/textures/models/weapons/amat_subtlety.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a85587313e59f57ab3f083bdf734129f9eb3da GIT binary patch literal 18642 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 v9p3%QCBLE7)Y?r0fj}S-2m}IwK!E=P$Q