From 6305395aaa27be771c4b1b853c782c34de814b82 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 5 Feb 2023 18:40:25 +0100 Subject: [PATCH] fixes, tweaks, quesadillas --- .../com/hbm/crafting/ConsumableRecipes.java | 1 + .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../standard/EntityProcessorCross.java | 125 ++++++++++++++++++ .../hbm/handler/BulletConfigSyncingUtil.java | 6 +- .../handler/guncfg/Gun357MagnumFactory.java | 21 --- .../handler/guncfg/Gun44MagnumFactory.java | 4 +- .../hbm/handler/guncfg/Gun45ACPFactory.java | 80 +++++++++-- .../hbm/handler/guncfg/Gun556mmFactory.java | 6 +- .../guncfg/GunRocketHomingFactory.java | 50 ++++--- .../java/com/hbm/items/ItemAmmoEnums.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 7 +- .../java/com/hbm/items/food/ItemLemon.java | 4 + .../com/hbm/items/weapon/ItemAmmoArty.java | 4 +- .../com/hbm/items/weapon/ItemAmmoHIMARS.java | 4 +- .../com/hbm/items/weapon/ItemGunBase.java | 6 +- src/main/java/com/hbm/lib/HbmCollection.java | 4 +- .../com/hbm/particle/ParticleSpentCasing.java | 2 +- .../turret/TileEntityTurretArty.java | 3 +- .../turret/TileEntityTurretBaseNT.java | 1 - .../turret/TileEntityTurretJeremy.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 17 +++ src/main/resources/assets/hbm/lang/en_US.lang | 17 +++ .../assets/hbm/textures/items/ammo_45.png | Bin 1936 -> 337 bytes .../assets/hbm/textures/items/ammo_45_ap.png | Bin 1911 -> 343 bytes .../assets/hbm/textures/items/ammo_45_du.png | Bin 1992 -> 355 bytes .../{ammo_762_blank.png => ammo_762_k.png} | Bin .../assets/hbm/textures/items/assembly_45.png | Bin 2006 -> 363 bytes .../assets/hbm/textures/items/quesadilla.png | Bin 0 -> 332 bytes .../assets/hbm/textures/misc/Thumbs.db | Bin 0 -> 19456 bytes .../hbm/textures/misc/Thumbs.db:encryptable | 0 .../assets/hbm/textures/misc/scope_44.png | Bin 0 -> 15186 bytes 31 files changed, 294 insertions(+), 74 deletions(-) create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java rename src/main/resources/assets/hbm/textures/items/{ammo_762_blank.png => ammo_762_k.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/quesadilla.png create mode 100644 src/main/resources/assets/hbm/textures/misc/Thumbs.db create mode 100644 src/main/resources/assets/hbm/textures/misc/Thumbs.db:encryptable create mode 100644 src/main/resources/assets/hbm/textures/misc/scope_44.png diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 46109d04e..466a04d52 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -59,6 +59,7 @@ public class ConsumableRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.coffee_radium), new Object[] { ModItems.coffee, RA226.nugget() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ingot_smore), new Object[] { Items.wheat, new ItemStack(ModItems.marshmallow, 1, 1), new ItemStack(Items.dye, 1, 3) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.marshmallow), new Object[] { Items.stick, Items.sugar, Items.wheat_seeds }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.quesadilla, 3), new Object[] { ModItems.cheese, ModItems.cheese, Items.bread }); //Peas CraftingManager.addRecipeAuto(new ItemStack(ModItems.peas), new Object[] { " S ", "SNS", " S ", 'S', Items.wheat_seeds, 'N', GOLD.nugget() }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 5ca759935..df4a1b0ea 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -207,7 +207,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 32), " I", "GC", " P", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44, 'P', ModItems.primer_44); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 32), " I", "GC", " P", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_9); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 4), new Object[] { " B ", "GCG", "GPG", 'B', ModItems.billet_u238, 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 4), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); //Folly shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', STAR.ingot(), 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java new file mode 100644 index 000000000..64c4de445 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -0,0 +1,125 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashMap; +import java.util.List; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; +import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; +import com.hbm.explosion.vanillant.interfaces.IEntityRangeMutator; + +import net.minecraft.enchantment.EnchantmentProtection; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; + +/** The amount of good decisions in NTM is few and far between, but the VNT explosion surely is one of them. */ +public class EntityProcessorCross implements IEntityProcessor { + + protected double nodeDist = 2D; + protected IEntityRangeMutator range; + protected ICustomDamageHandler damage; + + public EntityProcessorCross(double nodeDist) { + this.nodeDist = nodeDist; + } + + @Override + public HashMap process(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashMap affectedPlayers = new HashMap(); + + size *= 2.0F; + + if(range != null) { + size = range.mutateRange(explosion, size); + } + + double minX = x - (double) size - 1.0D; + double maxX = x + (double) size + 1.0D; + double minY = y - (double) size - 1.0D; + double maxY = y + (double) size + 1.0D; + double minZ = z - (double) size - 1.0D; + double maxZ = z + (double) size + 1.0D; + + List list = world.getEntitiesWithinAABBExcludingEntity(explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); + + ForgeEventFactory.onExplosionDetonate(world, explosion.compat, list, size); + + Vec3[] nodes = new Vec3[7]; + + for(int i = 0; i < 7; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + nodes[i] = Vec3.createVectorHelper(x + dir.offsetX * nodeDist, y + dir.offsetY * nodeDist, z + dir.offsetZ * nodeDist); + } + + for(int index = 0; index < list.size(); ++index) { + + Entity entity = (Entity) list.get(index); + double distanceScaled = entity.getDistance(x, y, z) / size; + + if(distanceScaled <= 1.0D) { + + double deltaX = entity.posX - x; + double deltaY = entity.posY + entity.getEyeHeight() - y; + double deltaZ = entity.posZ - z; + double distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + + if(distance != 0.0D) { + + deltaX /= distance; + deltaY /= distance; + deltaZ /= distance; + + double density = 0; + + for(Vec3 vec : nodes) { + double d = world.getBlockDensity(vec, entity.boundingBox); + if(d > density) { + density = d; + } + } + + double knockback = (1.0D - distanceScaled) * density; + + entity.attackEntityFrom(DamageSource.setExplosionSource(explosion.compat), (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D))); + double enchKnockback = EnchantmentProtection.func_92092_a(entity, knockback); + + entity.motionX += deltaX * enchKnockback; + entity.motionY += deltaY * enchKnockback; + entity.motionZ += deltaZ * enchKnockback; + + if(entity instanceof EntityPlayer) { + affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback)); + } + + if(damage != null) { + damage.handleAttack(explosion, entity, distanceScaled); + } + } + } + } + + return affectedPlayers; + } + + public EntityProcessorCross withRangeMod(float mod) { + range = new IEntityRangeMutator() { + @Override + public float mutateRange(ExplosionVNT explosion, float range) { + return range * mod; + } + }; + return this; + } + + public EntityProcessorCross withDamageMod(ICustomDamageHandler damage) { + this.damage = damage; + return this; + } +} diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 7f79d825e..89860b309 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -95,8 +95,10 @@ public class BulletConfigSyncingUtil { public static int P9_AP = i++; public static int P9_DU = i++; public static int P9_ROCKET = i++; - + public static int ACP_45 = i++; + public static int ACP_45_AP = i++; + public static int ACP_45_DU = i++; public static int BMG50_NORMAL = i++; public static int BMG50_INCENDIARY = i++; @@ -372,6 +374,8 @@ public class BulletConfigSyncingUtil { configSet.put(P9_ROCKET, Gun9mmFactory.get9mmRocketConfig()); configSet.put(ACP_45, Gun45ACPFactory.get45AutoConfig()); + configSet.put(ACP_45_AP, Gun45ACPFactory.get45AutoAPConfig()); + configSet.put(ACP_45_DU, Gun45ACPFactory.get45AutoDUConfig()); configSet.put(BMG50_NORMAL, Gun50BMGFactory.get50BMGConfig()); configSet.put(BMG50_INCENDIARY, Gun50BMGFactory.get50BMGFireConfig()); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java index 5e774758b..1a16da32a 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java @@ -204,27 +204,6 @@ public class Gun357MagnumFactory { return config; } - public static GunConfiguration getRevolverBioConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 100000; - config.firingSound = "hbm:weapon.deagleShoot"; - config.reloadDuration = 53; - config.crosshair = Crosshair.CIRCLE; - - config.name = "bio"; - config.manufacturer = EnumGunManufacturer.RYAN; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.IRON_HS); - config.config.add(BulletConfigSyncingUtil.STEEL_HS); - config.config.add(BulletConfigSyncingUtil.GOLD_HS); - config.config.add(BulletConfigSyncingUtil.DESH_HS); - - return config; - } - //// // // // // ////// ////// ////// // // // // // // // // // //// // // // // //// // ////// diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index efdc4c796..7520b5c0a 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -81,7 +81,7 @@ public class Gun44MagnumFactory { return config; } - public static final ResourceLocation pips_amazing_scope_wow = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_basic.png"); + public static final ResourceLocation scope_lilmac = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_44.png"); public static GunConfiguration getMacintoshConfig() { @@ -96,7 +96,7 @@ public class Gun44MagnumFactory { config.hasSights = true; config.absoluteFOV = true; config.zoomFOV = 0.25F; - config.scopeTexture = pips_amazing_scope_wow; + config.scopeTexture = scope_lilmac; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.M44_PIP); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java index 5444c3b35..70891310b 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -2,20 +2,57 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; +import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo45ACP; import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import net.minecraft.util.Vec3; + public class Gun45ACPFactory { + + private static final CasingEjector EJECTOR_REVOLVER; + private static final SpentCasing CASING45; + + static { + EJECTOR_REVOLVER = new CasingEjector().setMotion(Vec3.createVectorHelper(0, 0, -0.03)).setOffset(Vec3.createVectorHelper(0, -0.15, 0)).setAngleRange(0.01F, 0.05F).setAfterReload().setAmount(6); + CASING45 = new SpentCasing(CasingType.STRAIGHT).setBounceMotion(0.01F, 0.05F).setScale(1.25F, 1.25F, 1F).setColor(SpentCasing.COLOR_CASE_BRASS).register("45ACP"); + } + + public static GunConfiguration getBaseConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 10; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 10; + config.firingDuration = 0; + config.ammoCap = 6; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CLASSIC; + config.reloadSound = GunConfiguration.RSOUND_REVOLVER; + config.firingSound = "hbm:weapon.revolverShoot"; + config.reloadSoundEnd = false; + + config.ejector = EJECTOR_REVOLVER; + + return config; + } public static GunConfiguration getThompsonConfig() { @@ -44,6 +81,23 @@ public class Gun45ACPFactory { return config; } + + public static GunConfiguration getRevolverBioConfig() { + + GunConfiguration config = getBaseConfig(); + + config.durability = 100000; + config.firingSound = "hbm:weapon.deagleShoot"; + config.reloadDuration = 53; + config.crosshair = Crosshair.CIRCLE; + + config.name = "bio"; + config.manufacturer = EnumGunManufacturer.RYAN; + + config.config = HbmCollection.fourtyFiveACP; + + return config; + } public static GunConfiguration getUACPistolConfig() { GunConfiguration config = new GunConfiguration(); @@ -115,28 +169,38 @@ public class Gun45ACPFactory { bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.STOCK)); bullet.spread *= inaccuracy; - bullet.dmgMax = 30; - bullet.dmgMin = 27; + bullet.dmgMax = 12; + bullet.dmgMin = 16; + + bullet.spentCasing = CASING45; return bullet; } public static BulletConfiguration get45AutoAPConfig() { - BulletConfiguration bullet = get45AutoConfig().clone(); + BulletConfiguration bullet = get45AutoConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.AP)); - bullet.dmgMax *= 1.5; - bullet.dmgMin *= 1.5; + bullet.dmgMax = 18; + bullet.dmgMin = 26; + bullet.wear = 15; + bullet.leadChance = 10; + + bullet.spentCasing = CASING45; return bullet; } public static BulletConfiguration get45AutoDUConfig() { - BulletConfiguration bullet = get45AutoAPConfig().clone(); + BulletConfiguration bullet = get45AutoConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.DU)); - bullet.dmgMax *= 1.5; - bullet.dmgMin *= 1.5; + bullet.dmgMax = 30; + bullet.dmgMin = 44; + bullet.wear = 25; + bullet.leadChance = 50; + + bullet.spentCasing = CASING45; return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index d0bc11109..dfb332281 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -67,8 +67,10 @@ public class Gun556mmFactory { config.comment.add("Why is this gun so sticky?"); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.R556_GOLD); + //config.config = new ArrayList(); + //config.config.add(BulletConfigSyncingUtil.R556_GOLD); + + config.config = HbmCollection.NATO; return config; } diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java index 919797412..9ace3b45f 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java @@ -216,18 +216,21 @@ GunConfiguration config = new GunConfiguration(); if(!bullet.worldObj.isRemote) { - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + + if(player.getDistanceToEntity(bullet) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); bullet.setDead(); } @@ -252,18 +255,21 @@ GunConfiguration config = new GunConfiguration(); if(!bullet.worldObj.isRemote) { - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + + if(player.getDistanceToEntity(bullet) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); bullet.setDead(); } diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java index da40e8af4..d42eb4015 100644 --- a/src/main/java/com/hbm/items/ItemAmmoEnums.java +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -328,7 +328,7 @@ public class ItemAmmoEnums { DU("ammo_762_du", HbmCollection.DUType), TRACER("ammo_762_tracer", AmmoItemTrait.NEU_TRACER), PHOSPHORUS("ammo_762_phosphorus", HbmCollection.PhosphorusType), - BLANK("ammo_762_blank", AmmoItemTrait.NEU_BLANK); + BLANK("ammo_762_k", AmmoItemTrait.NEU_BLANK); private final Set traits; private final String unloc; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8efed6b52..36f6a8ea1 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1864,6 +1864,7 @@ public class ModItems { public static Item peas; public static Item marshmallow; public static Item cheese; + public static Item quesadilla; public static Item med_ipecac; public static Item med_ptsd; @@ -4305,7 +4306,7 @@ public class ModItems { ammo_cell = new ItemCustomLore().setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_cell").setMaxStackSize(16); ammo_dart = (ItemEnumMulti) new ItemAmmo(AmmoDart.class).setUnlocalizedName("ammo_dart").setMaxStackSize(16); ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); - ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class, "desc.misc.luna").setUnlocalizedName("ammo_luna_sniper"); + ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); ammo_misc = new ItemAmmo(AmmoMisc.class).setUnlocalizedName("ammo_misc"); /*ammo_12gauge = new ItemAmmo().setUnlocalizedName("ammo_12gauge"); @@ -4499,7 +4500,7 @@ public class ModItems { gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); gun_revolver_red = new ItemGunBase(Gun44MagnumFactory.getRedConfig()).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); - gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); + gun_bio_revolver = new ItemGunBio(Gun45ACPFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); //gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); @@ -4671,6 +4672,7 @@ public class ModItems { peas = new ItemPeas().setUnlocalizedName("peas").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":peas"); marshmallow = new ItemMarshmallow().setUnlocalizedName("marshmallow").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":marshmallow"); cheese = new ItemLemon(5, 10, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese"); + quesadilla = new ItemLemon(8, 10, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla"); mucho_mango = new ItemMuchoMango(10).setUnlocalizedName("mucho_mango").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mucho_mango"); defuser = new ItemTooling(ToolType.DEFUSER, 100).setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser"); @@ -7862,6 +7864,7 @@ public class ModItems { GameRegistry.registerItem(peas, peas.getUnlocalizedName()); GameRegistry.registerItem(marshmallow, marshmallow.getUnlocalizedName()); GameRegistry.registerItem(cheese, cheese.getUnlocalizedName()); + GameRegistry.registerItem(quesadilla, quesadilla.getUnlocalizedName()); GameRegistry.registerItem(med_ipecac, med_ipecac.getUnlocalizedName()); GameRegistry.registerItem(med_ptsd, med_ptsd.getUnlocalizedName()); GameRegistry.registerItem(canteen_13, canteen_13.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 661661140..abfd05a2c 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -220,6 +220,10 @@ public class ItemLemon extends ItemFood { if(this == ModItems.peas) { list.add("He accepts your offering."); } + + if(this == ModItems.quesadilla) { + list.add("That's what a 50 year old yeast infection does to you."); + } } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 478e837ea..44a668afc 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -13,7 +13,7 @@ import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.RefStrings; @@ -197,7 +197,7 @@ public class ItemAmmoArty extends Item { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); } - xnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(rangeMod)); + xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); xnt.setSFX(new ExplosionEffectStandard()); xnt.explode(); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 0a76f7cd9..1af138e0a 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -6,7 +6,7 @@ import com.hbm.entity.projectile.EntityArtilleryRocket; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.RefStrings; @@ -74,7 +74,7 @@ public class ItemAmmoHIMARS extends Item { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); } - xnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(rangeMod)); + xnt.setEntityProcessor(new EntityProcessorCross(7.5).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); xnt.setSFX(new ExplosionEffectStandard()); xnt.explode(); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 54973c62f..b60ec1d14 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -16,12 +16,10 @@ import com.hbm.interfaces.IItemHUD; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.IEquipReceiver; import com.hbm.lib.HbmCollection; -import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.particle.SpentCasing; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; @@ -116,7 +114,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(mainConfig.reloadType != mainConfig.RELOAD_NONE || (altConfig != null && altConfig.reloadType != 0)) { - if(GameSettings.isKeyDown(HbmKeybinds.reloadKey) && (getMag(stack) < mainConfig.ammoCap || hasInfinity(stack, mainConfig))) { + if(GameSettings.isKeyDown(HbmKeybinds.reloadKey) && Minecraft.getMinecraft().currentScreen == null && (getMag(stack) < mainConfig.ammoCap || hasInfinity(stack, mainConfig))) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 2)); setIsReloading(stack, true); resetReloadCycle(stack); @@ -762,7 +760,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu NBTTagCompound data = new NBTTagCompound(); data.setString("type", "casing"); - data.setFloat("pitch", (float) Math.toRadians(entity.rotationPitch)); + data.setFloat("pitch", -(float) Math.toRadians(entity.rotationPitch)); data.setFloat("yaw", (float) Math.toRadians(entity.rotationYaw)); data.setBoolean("crouched", entity.isSneaking()); data.setString("name", bullet.spentCasing.getName()); diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index ef842740d..7fa984f47 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -41,14 +41,14 @@ public class HbmCollection { /** 9MM Parabellum **/ public static final List nineMM = ImmutableList.of(BulletConfigSyncingUtil.P9_NORMAL, BulletConfigSyncingUtil.P9_AP, BulletConfigSyncingUtil.P9_DU, BulletConfigSyncingUtil.CHL_P9, BulletConfigSyncingUtil.P9_ROCKET); /** .45 AUTOMATIC COLT PISTOL **/ - public static final List fourtyFiveACP = ImmutableList.of(BulletConfigSyncingUtil.ACP_45); + public static final List fourtyFiveACP = ImmutableList.of(BulletConfigSyncingUtil.ACP_45, BulletConfigSyncingUtil.ACP_45_AP, BulletConfigSyncingUtil.ACP_45_DU); // RIFLE CALIBER /** .50 BROWNING MACHINE GUN **/ public static final List fiftyBMG = ImmutableList.of(BulletConfigSyncingUtil.BMG50_NORMAL, BulletConfigSyncingUtil.BMG50_INCENDIARY, BulletConfigSyncingUtil.BMG50_PHOSPHORUS, BulletConfigSyncingUtil.BMG50_EXPLOSIVE, BulletConfigSyncingUtil.BMG50_AP, BulletConfigSyncingUtil.BMG50_DU, BulletConfigSyncingUtil.BMG50_STAR, BulletConfigSyncingUtil.CHL_BMG50, BulletConfigSyncingUtil.BMG50_SLEEK); /** .50 BROWNING MACHINE GUN (FLECHETTE) **/ public static final List fiftyBMGFlechette = ImmutableList.of(BulletConfigSyncingUtil.BMG50_FLECHETTE_AM, BulletConfigSyncingUtil.BMG50_FLECHETTE_NORMAL, BulletConfigSyncingUtil.BMG50_FLECHETTE_PO); /** 5.56MMx45 NATO (BASIC) **/ - public static final List NATO = ImmutableList.of(BulletConfigSyncingUtil.R556_NORMAL, BulletConfigSyncingUtil.R556_TRACER, BulletConfigSyncingUtil.R556_PHOSPHORUS, BulletConfigSyncingUtil.R556_AP, BulletConfigSyncingUtil.R556_DU, BulletConfigSyncingUtil.R556_STAR, BulletConfigSyncingUtil.CHL_R556, BulletConfigSyncingUtil.R556_SLEEK, BulletConfigSyncingUtil.R556_K); + public static final List NATO = ImmutableList.of(BulletConfigSyncingUtil.R556_NORMAL, BulletConfigSyncingUtil.R556_TRACER, BulletConfigSyncingUtil.R556_PHOSPHORUS, BulletConfigSyncingUtil.R556_AP, BulletConfigSyncingUtil.R556_DU, BulletConfigSyncingUtil.R556_STAR, BulletConfigSyncingUtil.CHL_R556, BulletConfigSyncingUtil.R556_SLEEK, BulletConfigSyncingUtil.R556_K, BulletConfigSyncingUtil.R556_GOLD); /** 5.56MMx45 NATO (FLECHETTE) **/ public static final List NATOFlechette = ImmutableList.of(BulletConfigSyncingUtil.R556_FLECHETTE, BulletConfigSyncingUtil.R556_FLECHETTE_INCENDIARY, BulletConfigSyncingUtil.R556_FLECHETTE_PHOSPHORUS, BulletConfigSyncingUtil.R556_FLECHETTE_DU, BulletConfigSyncingUtil.CHL_R556_FLECHETTE, BulletConfigSyncingUtil.R556_FLECHETTE_SLEEK, BulletConfigSyncingUtil.R556_K); /** 7.62x51mm NATO **/ diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index f448d4adf..59e6ae201 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -8,7 +8,6 @@ import java.util.Random; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.util.Tuple.Pair; @@ -228,6 +227,7 @@ public class ParticleSpentCasing extends EntityFX { nodeAlpha *= timeAlpha; pastAlpha *= timeAlpha; + tessellator.setNormal(0F, 1F, 0F); tessellator.setColorRGBA_F(1F, 1F, 1F, nodeAlpha); tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); tessellator.setColorRGBA_F(1F, 1F, 1F, 0F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 1cb0c93c0..a32914fc3 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -404,7 +404,7 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen } } - protected static CasingEjector ejector = new CasingEjector().setMotion(0, 0.4, -1.2).setAngleRange(0.1F, 0.1F); + protected static CasingEjector ejector = new CasingEjector().setMotion(0, 0.6, -1).setAngleRange(0.1F, 0.1F); @Override protected CasingEjector getEjector() { @@ -462,6 +462,7 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen nbt.setShort("mode", this.mode); } + @Override protected void spawnCasing() { if(cachedCasingConfig == null) return; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 62ad67f84..6d54d6a3a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -18,7 +18,6 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemTurretBiometry; import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.particle.SpentCasing; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index 3b142f53b..1e344c870 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -117,7 +117,7 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { return Vec3.createVectorHelper(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord); } - protected static CasingEjector ejector = new CasingEjector().setAngleRange(0.01F, 0.01F).setMotion(0, 0, -0.1); + protected static CasingEjector ejector = new CasingEjector().setAngleRange(0.01F, 0.01F).setMotion(0, 0, -0.2); @Override protected CasingEjector getEjector() { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 3ee5c30f2..659be366e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -816,6 +816,9 @@ item.ammo_44_pip.name=.44 Magnum Patrone (Güterwagon) item.ammo_44_rocket.name=.44 Magnum Rakete item.ammo_44_silver.name=.44 Magnum Patrone (Gebäude) item.ammo_44_star.name=.44 Magnum Patrone (Sternenmetall) +item.ammo_45.name=.45 ACP Patrone +item.ammo_45_ap.name=.45 ACP Patrone (AP) +item.ammo_45_du.name=.45 ACP Patrone (DU) item.ammo_4gauge.name=Kaliber 20 Schrot item.ammo_4gauge_balefire.name=23mm Balefire-Granate item.ammo_4gauge_canister.name=23mm Rakete (Katusche) @@ -867,6 +870,12 @@ item.ammo_5mm_chlorophyte.name=5mm Patrone (Grünalgen) item.ammo_5mm_du.name=5mm Patrone (DU) item.ammo_5mm_explosive.name=5mm Patrone (Explosiv) item.ammo_5mm_star.name=5mm Patrone (Sternenmetall) +item.ammo_762.name=7.62mm Patrone +item.ammo_762_ap.name=7.62mm Patrone (AP) +item.ammo_762_du.name=7.62mm Patrone (DU) +item.ammo_762_k.name=7.62mm K-Patrone +item.ammo_762_phosphorus.name=7.62mm Patrone (WP) +item.ammo_762_tracer.name=7.62mm Patrone (Leuchtspur) item.ammo_75bolt.name=30er .75 Bolzenmagazin item.ammo_75bolt_incendiary.name=30er .75 Bolzenmagazin (Brand) item.ammo_75bolt_he.name=30er .75 Bolzenmagazin (Explosiv) @@ -914,6 +923,9 @@ item.ammo_grenade_toxic.name=40mm Granate (Chemisch) item.ammo_grenade_tracer.name=40mm Übungsgranate item.ammo_himars_standard.name=M28 gelenkte Artillerierakete item.ammo_himars_single.name=M39A1 gelenkte Artillerierakete +item.ammo_luna.name=Lunatic Sniper Sabot +item.ammo_luna_explosive.name=Lunatic Sniper Explosivgeschoss +item.ammo_luna_incendiary.name=Lunatic Sniper Brandgeschoss item.ammo_mirv.name=Mini-MIRV item.ammo_mirv_high.name=Mini-MIRV (Stark) item.ammo_mirv_low.name=Mini-MIRV (Schwach) @@ -990,7 +1002,9 @@ item.asbestos_helmet.name=Hitzeschutzhelm item.asbestos_legs.name=Hitzeschutzhose item.asbestos_plate.name=Hitzeschutzbrustplatte item.ashglasses.name=Aschegläser +item.assembly_45.name=.45 ACP Patronensatz item.assembly_556.name=5.56mm Patronensatz +item.assembly_762.name=7.62mm Patronensatz item.assembly_actionexpress.name=.50 AE Patronensatz item.assembly_calamity.name=.50 BMG Patronensatz item.assembly_desh.name=Desh-Patronensatz @@ -998,6 +1012,7 @@ item.assembly_gold.name=Goldpatronensatz item.assembly_iron.name=Eisenpatronensatz item.assembly_lacunae.name=5mm Patronensatz item.assembly_lead.name=Glaspatronensatz +item.assembly_luna.name=Lunatic Sniper Patronensatz item.assembly_nightmare.name=Nightmare-Patronensatz item.assembly_nopip.name=.44er Patronensatz item.assembly_nuke.name=Miniatombombengehäuse @@ -1284,6 +1299,7 @@ item.centrifuge_element.name=Zentrifugenelement item.centrifuge_tower.name=Zentrifugenturm item.chainsaw.name=Kettensäge item.cheese.name=Käse +item.cheese_quesadilla.name=Käse-Quesadilla item.chemistry_set.name=Laborgläser item.chemistry_set_boron.name=Laborgläser (Borglas) item.chemistry_template.name=Chemievorlage: @@ -2862,6 +2878,7 @@ item.shimmer_head.name=Schwerer Hammerkopf item.shimmer_sledge.name=Shimmer Sledge item.singularity.name=Singularität item.singularity_counter_resonant.name=Eingefasste nicht-resonante Singularität +item.singularity_micro.name=Mikrosingularität item.singularity_spark.name=Spark'sche Singularität item.singularity_super_heated.name=Supererhitzte resonante Singularität item.siox.name=SiOX-Krebsmedikament diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7fc06eb46..ae28468de 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1418,6 +1418,9 @@ item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar) item.ammo_44_rocket.name=.44 Magnum Rocket item.ammo_44_silver.name=.44 Magnum Bullet (Building) item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) +item.ammo_45.name=.45 ACP Bullet +item.ammo_45_ap.name=.45 ACP Bullet (AP) +item.ammo_45_du.name=.45 ACP Bullet (DU) item.ammo_4gauge.name=4 Gauge Buckshot item.ammo_4gauge_balefire.name=23mm Balefire Grenade item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) @@ -1472,6 +1475,12 @@ item.ammo_5mm_star.name=5mm Round (Starmetal) item.ammo_75bolt.name=.75 Bolt Magazine (30rnd) item.ammo_75bolt_incendiary.name=.75 Incendiary Bolt Magazine (30rnd) item.ammo_75bolt_he.name=.75 Bolt High-Explosive Magazine (30rnd) +item.ammo_762.name=7.62mm Round +item.ammo_762_ap.name=7.62mm Round (AP) +item.ammo_762_du.name=7.62mm Round (DU) +item.ammo_762_k.name=7.62mm K-Round +item.ammo_762_phosphorus.name=7.62mm Round (WP) +item.ammo_762_tracer.name=7.62mm Round (Tracer) item.ammo_9mm.name=9mm Round item.ammo_9mm_ap.name=9mm Round (Armor Piercing) item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte) @@ -1516,6 +1525,9 @@ item.ammo_grenade_toxic.name=40mm Grenade (Chemical) item.ammo_grenade_tracer.name=40mm Training Grenade item.ammo_himars_standard.name=M28 Guided Artillery Rocket Pod item.ammo_himars_single.name=M39A1 Guided Artillery Rocket Pod +item.ammo_luna.name=Lunatic Sniper Sabot Round +item.ammo_luna_explosive.name=Lunatic Sniper Explosive Round +item.ammo_luna_incendiary.name=Lunatic Sniper Incendiary Round item.ammo_mirv.name=Mini MIRV item.ammo_mirv_high.name=Mini MIRV (High Yield) item.ammo_mirv_low.name=Mini MIRV (Low Yield) @@ -1595,7 +1607,9 @@ item.asbestos_helmet.name=Fire Proximity Helmet item.asbestos_legs.name=Fire Proximity Leggings item.asbestos_plate.name=Fire Proximity Chestplate item.ashglasses.name=Ash Goggles +item.assembly_45.name=.45 ACP Assembly item.assembly_556.name=5.56mm Assembly +item.assembly_762.name=7.62mm Assembly item.assembly_actionexpress.name=.50 AE Assembly item.assembly_calamity.name=.50 BMG Assembly item.assembly_desh.name=Desh Bullet Assembly @@ -1603,6 +1617,7 @@ item.assembly_gold.name=Gold Bullet Assembly item.assembly_iron.name=Iron Bullet Assembly item.assembly_lacunae.name=.5mm Assembly item.assembly_lead.name=Glass Bullet Assembly +item.assembly_luna.name=Lunatic Sniper Bullet Assembly item.assembly_nightmare.name=Nightmare Bullet Assembly item.assembly_nopip.name=.44 Magnum Assembly item.assembly_nuke.name=Mini Nuke Shell @@ -1904,6 +1919,7 @@ item.centrifuge_element.name=Centrifuge Element item.centrifuge_tower.name=Centrifuge Tower item.chainsaw.name=Chainsaw item.cheese.name=Cheese +item.cheese_quesadilla.name=Cheese Quesadilla item.chemistry_set.name=Laboratory Glassware item.chemistry_set_boron.name=Laboratory Glassware (Boron Glass) item.chemistry_template.name=Chemistry Template: @@ -3653,6 +3669,7 @@ item.shimmer_head.name=Heavy Hammer Head item.shimmer_sledge.name=Shimmer Sledge item.singularity.name=Singularity item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity +item.singularity_micro.name=Micro Singularity item.singularity_spark.name=Spark Singularity item.singularity_super_heated.name=Superheated Resonating Singularity item.siox.name=SiOX Cancer Medication diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45.png b/src/main/resources/assets/hbm/textures/items/ammo_45.png index d7702dda683a523af496b1515a037664084e6dc3..cf405752f0d2fbe53abadf2f19d4eb1c81d429e3 100644 GIT binary patch delta 311 zcmV-70m%N4577dUBYyw{b3#c}2nYxWdoqz!(W~y#G!0q!{#_Oc`E2dc(lLaP&VhhA<&>V47dtxzC_1!Ot+QSo%LM zjaUtUX@2+WE5mEU9}J-Z&IAoXabkiT?|*L~?>J57t zvU;Cl^$v;)7CidQxP$2~gS@mL!;ABW7#P@v7(^7s@VbNrU107W21W*kEB_f77#NHg z4lzg=+A)YIGBAV&I5RLX?ER1K5)1=KHG~P90Wd?>ZM(v7?#dImcUEuM%Mcpi%#iHD zKrnXTAlZfC|1j1*o&U)$4FCT>Dfv&5W^9I#tQpx5vNh8b001@}ZI5WedqMyJ002ov JPDHLkV1fdmgX{nR delta 1922 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 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45_du.png b/src/main/resources/assets/hbm/textures/items/ammo_45_du.png index a27125ce9b4225676bb19e2edca1657f4ea7df30..f46671ea31f7960b0138de6ee027f0bb2bb554ce 100644 GIT binary patch delta 329 zcmV-P0k;0g590!mBYyw{b3#c}2nYxWdV46R^`p6)rD#kFaSo%LM zjaUtUX?}L?8AGhVBZklbXM%>HI8nw_=D)0-EJLioBZkb1Y<~uZpYIsn+<(Qedc$6Z ztlp}@LBYy;aB^>EX>4U6ba`-PAZ2)IW&i+q+TB-elIti8 z{Ld-&2uMN*j)O5&?G5($+k7OGOlC59dGE*8hO)sRi>6xw$F+a{?(Q%Am~wJKEyWz8 z$1miNxuB8!`sH~iALe~O_)Fui-(3e7U4mNHqm^x6(61jaTz}@EcOk7+i*hJm)LZDbuymaZAUP$bSkWbxe1A%_p}hm zxL68mnfJ)6x4=dnDv`@tLCD?mt_1p9g6>GZwA^R*udPqybJ_j!iOaY-LgUK;(yz&% z6yHoNS44b20DnLBu$+DMex}~rT3rbdjK&>N-d)%k@4)Z?$+ByY?{1RfIv zDnQN>_<#bW$|pc_5M+xpPCVwuJ4Vx%l_QUC>`f3tC5l0tECphPpokv}2{BYuG^lD+ z)8sU3iGLD9)EJ}1vB?z^3#Jy$ELpaaB!#3YCQB*hR5EA59;i8H%PHqv3cG@d3VapV z7xWx_$Po@b;$cTR@=+?nr-rIER;#JzT24OY#5Qrp)6R6}vovxIJ4FjkTWr=+%dK?8 zT9+QW_Smhbo_o2fwpD#7zn~gz)p#m3?Ch!`roPD;0hTt=Sftnm9}XM<|(fkk(xMGXETnJ z#3nF-RHR41D}dsbgNPJg?;qLY>vS!qD}Pd-=d?OL$DY;hCj)$(s4Xnsgpl%cj*MOF zjxYztnl8gQ_qW+(&`rxMVks}cbuZz50v8+T^y|7LE73|=&(#BfZc!zds}N@}%6lyd z{mHfrB{%I;HH|IYM#LKdL9MuR3t6an_};pnnp^)cOBbs~E$5ck!Vn$^(M_4F4S)Oj z*2R=+e3NhYjK^c!Gmegja58+`Z+Fp->K^ESlYRF<|6A-+bL9oLA76W9-#yU(z&^NL z3mAufE41?kGx?Pg_-i-5*mB*R1!Qh|n{hWO|1kl+QXn6j^@eW>B<&_8Cy|DLnfoO+ zKf)2S>7v}?kFo9AJ8XZ!zWYA-TYp@^V3zaG_}u5@yTz9tCjK6;dk**>?=w{Hl`Y~G z7TupXivE+12>;jcA^9)h_3Db8+_S6z00D(*LqkwWLqi~Na&Km7Y-Iodc$|HaJxIeq z9K~N#wIUS0H3O~9qfEh$& zW*Kvmlz`{>x`&UicTt|@eeTcEt7a_*_(bAaW|%hd2JzIUZE)Tv4zYr)5}y-COu8WP zBiEG%zj4mHEbz>bnM%$RhkuC0d>bom%nGJPJV_i@HJ$Q>bc0pSTb#90g*ETVUl`2l zE6ZG`IgB_Ku>=Vs6jV?|2{xj%>ZDjm(tgatKjiu)aw+60f{|kZWoVFHKlmT~?$*jp zj5m^kF`)CsaXv z4lwv+$foQ{ewsoq2fUxrH)VkSTcBsH(OYvLrw>4ix=P#t2Zz9Dp0d|H-re2a+rMX; z{rv#DCUV4$oM(Li000JJOGiWiBLF@CBlECVLjV8(32;bRa{vGf6951U69E94oEQKA z00(qQO+^Rh0|x;QBY*OP7u)~<0TxL_K~y-)V_+C)z=+IIwp0EOW8Xb=mys9)SYQkp zQ@U|^WLhki5JqIp3=9km zw;Ca0$u124gS>PYjC5oeBn<5cdk5JN7)W+u_`kJJ=l}Cv9{>NpZu>v2So;6#!*TzU zUC`93)ieBuVKiKZB)c&D|No=}Q!_pnU^4`#W?U{nHUw{q!l#+0006=wi`oH@lHmXV N002ovPDHLkV1mi&wk7}o diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_blank.png b/src/main/resources/assets/hbm/textures/items/ammo_762_k.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_762_blank.png rename to src/main/resources/assets/hbm/textures/items/ammo_762_k.png diff --git a/src/main/resources/assets/hbm/textures/items/assembly_45.png b/src/main/resources/assets/hbm/textures/items/assembly_45.png index 523e5c303328da9e6642b87c5ef0bcf95bb1ecb3..d64ceb33b286e3be3790f1247f60393422d859cb 100644 GIT binary patch delta 337 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/misc/Thumbs.db:encryptable b/src/main/resources/assets/hbm/textures/misc/Thumbs.db:encryptable new file mode 100644 index 000000000..e69de29bb diff --git a/src/main/resources/assets/hbm/textures/misc/scope_44.png b/src/main/resources/assets/hbm/textures/misc/scope_44.png new file mode 100644 index 0000000000000000000000000000000000000000..dc53998bb917cdad3b78e1f4e9f7d50170262c99 GIT binary patch literal 15186 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 S+zX7nf|L~0