diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 41491660c..ecde954ed 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1469,6 +1469,8 @@ public class ModItems { public static Item gun_stinger; public static Item gun_chemthrower; public static Item gun_amat; + public static Item gun_amat_subtlety; + public static Item gun_amat_penance; public static Item gun_m2; public static Item gun_autoshotgun; public static Item gun_autoshotgun_shredder; diff --git a/src/main/java/com/hbm/items/tool/ItemSwordAbility.java b/src/main/java/com/hbm/items/tool/ItemSwordAbility.java index 784a6a764..563a09730 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordAbility.java @@ -17,7 +17,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; -import net.minecraft.util.EnumChatFormatting; public class ItemSwordAbility extends ItemSword { diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 56455bbb2..65db47377 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -34,6 +34,7 @@ public class GunConfig { public static final String I_INSPECTCANCEL = "I_INSPECTCANCEL"; public static final String O_CROSSHAIR = "O_CROSSHAIR"; public static final String B_HIDECROSSHAIR = "B_HIDECROSSHAIR"; + public static final String B_THERMALSIGHTS = "B_THERMALSIGHTS"; public static final String B_RELOADREQUIRESTYPECHANGE = "B_RELOADREQUIRESTYPECHANGE"; public static final String B_RELOADANIMATIONSEQUENTIAL = "B_RELOADANIMATIONSEQUENTIAL"; public static final String O_SCOPETEXTURE = "O_SCOPETEXTURE"; @@ -62,6 +63,7 @@ public class GunConfig { protected boolean inspectCancel_DNA = true; protected Crosshair crosshair_DNA; protected boolean hideCrosshair_DNA = true; + protected boolean thermalSights_DNA = false; protected boolean reloadRequiresTypeChange_DNA = false; protected boolean reloadAnimationsSequential_DNA; protected ResourceLocation scopeTexture_DNA; @@ -94,6 +96,7 @@ public class GunConfig { public boolean getInspectCancel(ItemStack stack) { return WeaponModManager.eval(inspectCancel_DNA, stack, I_INSPECTCANCEL, this, this.index); } public Crosshair getCrosshair(ItemStack stack) { return WeaponModManager.eval(crosshair_DNA, stack, O_CROSSHAIR, this, this.index); } public boolean getHideCrosshair(ItemStack stack) { return WeaponModManager.eval(hideCrosshair_DNA, stack, B_HIDECROSSHAIR, this, this.index); } + public boolean hasThermalSights(ItemStack stack) { return WeaponModManager.eval(thermalSights_DNA, stack, B_THERMALSIGHTS, this, this.index); } public boolean getReloadChangesType(ItemStack stack) { return WeaponModManager.eval(reloadRequiresTypeChange_DNA, stack, B_RELOADREQUIRESTYPECHANGE, this, this.index); } public boolean getReloadAnimSequential(ItemStack stack) { return WeaponModManager.eval(reloadAnimationsSequential_DNA, stack, B_RELOADANIMATIONSEQUENTIAL, this, this.index); } public ResourceLocation getScopeTexture(ItemStack stack) { return WeaponModManager.eval(scopeTexture_DNA, stack, O_SCOPETEXTURE, this, this.index); } @@ -124,6 +127,7 @@ public class GunConfig { public GunConfig inspectCancel(boolean flag) { this.inspectCancel_DNA = flag; return this; } public GunConfig crosshair(Crosshair crosshair) { this.crosshair_DNA = crosshair; return this; } public GunConfig hideCrosshair(boolean flag) { this.hideCrosshair_DNA = flag; return this; } + public GunConfig thermalSights(boolean flag) { this.thermalSights_DNA = flag; return this; } public GunConfig reloadChangeType(boolean flag) { this.reloadRequiresTypeChange_DNA = flag; return this; } public GunConfig reloadSequential(boolean flag) { this.reloadAnimationsSequential_DNA = flag; return this; } public GunConfig scopeTexture(ResourceLocation tex) { this.scopeTexture_DNA = tex; return this; } 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 98b4f09e8..f389b40a1 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 @@ -101,7 +101,7 @@ public class GunFactory { R762_HE, BMG50_HE, G10_EXPLOSIVE, P45_SP, P45_FMJ, P45_JHP, P45_AP, P45_DU, CT_HOOK, CT_MORTAR, CT_MORTAR_CHARGE, - NUKE_BALEFIRE, + NUKE_BALEFIRE, BMG50_SM, //ONLY ADD NEW ENTRIES AT THE BOTTOM TO AVOID SHIFTING! ; @@ -116,7 +116,7 @@ public class GunFactory { P45_SP, P45_FMJ, P45_JHP, P45_AP, P45_DU, R556_SP, R556_FMJ, R556_JHP, R556_AP, R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU, R762_HE, - BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, BMG50_HE, + BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, BMG50_SM, BMG50_HE, B75, B75_INC, B75_EXP, G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, G10, G10_SHRAPNEL, G10_DU, G10_SLUG, G10_EXPLOSIVE, @@ -139,7 +139,7 @@ public class GunFactory { public static enum EnumAmmoSecret { FOLLY_SM, FOLLY_NUKE, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN, - P35_800 + P35_800, BMG50_BLACK } public static enum EnumModTest { 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 ceb18f250..0a42eb594 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 @@ -159,6 +159,8 @@ public class GunFactoryClient { bmg50_ap.setRenderer(LegoClient.RENDER_AP_BULLET); bmg50_du.setRenderer(LegoClient.RENDER_DU_BULLET); bmg50_he.setRenderer(LegoClient.RENDER_HE_BULLET); + bmg50_sm.setRenderer(LegoClient.RENDER_SM_BULLET); + bmg50_black.setRenderer(LegoClient.RENDER_BLACK_BULLET); b75.setRenderer(LegoClient.RENDER_AP_BULLET); b75_inc.setRenderer(LegoClient.RENDER_AP_BULLET); 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 ac476aa60..11d4b4012 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 @@ -72,6 +72,18 @@ public class LegoClient { renderBulletStandard(Tessellator.instance, 0xD8CA00, 0xFFF19D, length, true); }; + public static BiConsumer RENDER_SM_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x42A8DD, 0xFFFFFF, length, true); + }; + + public static BiConsumer RENDER_BLACK_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x000000, 0x7F006E, length, true); + }; + public static BiConsumer RENDER_TRACER_BULLET = (bullet, interp) -> { double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; if(length <= 0) return; 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 075bcf63e..f70d62c0c 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 @@ -14,6 +14,7 @@ import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineBelt; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.particle.SpentCasing; @@ -34,6 +35,8 @@ public class XFactory50 { public static BulletConfig bmg50_ap; public static BulletConfig bmg50_du; public static BulletConfig bmg50_he; + public static BulletConfig bmg50_sm; + public static BulletConfig bmg50_black; public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; @@ -41,25 +44,29 @@ public class XFactory50 { }; public static void init() { - SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(1.5F); + SpentCasing casing50 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(1.5F); bmg50_sp = new BulletConfig().setItem(EnumAmmo.BMG50_SP).setCasing(EnumCasingType.LARGE, 12) - .setCasing(casing762.clone().register("bmg50")); + .setCasing(casing50.clone().register("bmg50")); bmg50_fmj = new BulletConfig().setItem(EnumAmmo.BMG50_FMJ).setCasing(EnumCasingType.LARGE, 12).setDamage(0.8F).setThresholdNegation(7F).setArmorPiercing(0.1F) - .setCasing(casing762.clone().register("bmg50fmj")); + .setCasing(casing50.clone().register("bmg50fmj")); bmg50_jhp = new BulletConfig().setItem(EnumAmmo.BMG50_JHP).setCasing(EnumCasingType.LARGE, 12).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) - .setCasing(casing762.clone().register("bmg50jhp")); + .setCasing(casing50.clone().register("bmg50jhp")); bmg50_ap = new BulletConfig().setItem(EnumAmmo.BMG50_AP).setCasing(EnumCasingType.LARGE_STEEL, 12).setDoesPenetrate(true).setDamageFalloffByPen(false).setDamage(1.25F).setThresholdNegation(17.5F).setArmorPiercing(0.15F) - .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50ap")); + .setCasing(casing50.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50ap")); bmg50_du = new BulletConfig().setItem(EnumAmmo.BMG50_DU).setCasing(EnumCasingType.LARGE_STEEL, 12).setDoesPenetrate(true).setDamageFalloffByPen(false).setDamage(1.5F).setThresholdNegation(21F).setArmorPiercing(0.25F) - .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50du")); + .setCasing(casing50.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50du")); bmg50_he = new BulletConfig().setItem(EnumAmmo.BMG50_HE).setCasing(EnumCasingType.LARGE_STEEL, 12).setWear(3F).setDoesPenetrate(true).setDamageFalloffByPen(false).setDamage(1.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE) - .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50he")); + .setCasing(casing50.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50he")); + bmg50_sm = new BulletConfig().setItem(EnumAmmo.BMG50_SM).setCasing(EnumCasingType.LARGE_STEEL, 12).setWear(10F).setDoesPenetrate(true).setDamageFalloffByPen(false).setDamage(2.5F).setThresholdNegation(30F).setArmorPiercing(0.35F) + .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")); 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) .dmg(30F).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_sp, bmg50_fmj, bmg50_jhp, bmg50_ap, bmg50_du, bmg50_he)) + .mag(new MagazineFullReload(0, 7).addConfigs(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() diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 354043ab4..8b3679187 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1313,14 +1313,21 @@ public class ModEventHandlerClient { if(hudOn) { RenderOverhead.renderMarkers(event.partialTicks); + boolean thermalSights = false; if(ArmorFSB.hasFSBArmor(player)) { ItemStack plate = player.inventory.armorInventory[2]; ArmorFSB chestplate = (ArmorFSB) plate.getItem(); - if(chestplate.thermal) - RenderOverhead.renderThermalSight(event.partialTicks); + if(chestplate.thermal) thermalSights = true; } + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) { + 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; + } + + if(thermalSights) RenderOverhead.renderThermalSight(event.partialTicks); } RenderOverhead.renderActionPreview(event.partialTicks); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 013fca1e3..30106dd14 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1053,6 +1053,7 @@ item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss item.ammo_shell_w9.name=240mm W9-Atomgeschoss item.ammo_secret.bmg50_equestrian.name=.50 BMG Zerstörer +item.ammo_secret.bmg50_black.name=.50 BMG Bypass 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 @@ -1066,6 +1067,7 @@ item.ammo_standard.bmg50_du.name=.50 BMG Patrone (Urangeschoss) item.ammo_standard.bmg50_he.name=.50 BMG Patrone (Explosiv) item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) item.ammo_standard.bmg50_jhp.name=.50 BMG Patrone (Hohlspitz) +item.ammo_standard.bmg50_sm.name=.50 BMG Patrone (Sternenmetall) item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) item.ammo_standard.capacitor.name=Kondensator (Standard) item.ammo_standard.capacitor_ir.name=Capacitor (niedrige Wellenlänge) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b7cd17203..02b6a1201 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1778,6 +1778,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.bmg50_black.name=.50 BMG Bypass Round 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 @@ -1791,6 +1792,7 @@ item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) item.ammo_standard.bmg50_he.name=.50 BMG Round (High-Explosive) item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) +item.ammo_standard.bmg50_sm.name=.50 BMG Round (Starmetal) item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) item.ammo_standard.capacitor.name=Capacitor (Standard) item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_black.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_black.png new file mode 100644 index 000000000..f76090251 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_black.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.p35_800_bl.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.p35_800_bl.png new file mode 100644 index 000000000..8fdc55b86 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.p35_800_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_sm.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_sm.png new file mode 100644 index 000000000..61ac0ca85 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_sm.png differ