From b87ed700cc80cee3863f4abfbb2f5251da808f30 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Thu, 26 Sep 2024 22:56:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A9=BA=E5=B0=96=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/projectile/ProjectileEntity.java | 17 +++++++++++++++++ .../superbwarfare/event/GunEventHandler.java | 4 ++++ .../mcreator/superbwarfare/init/ModPerks.java | 2 ++ .../assets/superbwarfare/lang/en_us.json | 2 ++ .../assets/superbwarfare/lang/zh_cn.json | 2 ++ .../superbwarfare/models/item/jhp_bullet.json | 6 ++++++ .../textures/item/perk/jhp_bullet.png | Bin 0 -> 1126 bytes 7 files changed, 33 insertions(+) create mode 100644 src/main/resources/assets/superbwarfare/models/item/jhp_bullet.json create mode 100644 src/main/resources/assets/superbwarfare/textures/item/perk/jhp_bullet.png diff --git a/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java index b08572f38..33bb426d2 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java @@ -34,6 +34,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -95,6 +96,8 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa private boolean zoom = false; private float bypassArmorRate = 0.0f; private float undeadMultiple = 1.0f; + private boolean jhpBullet = false; + private float jhpLevel = 0f; private Supplier mobEffect = () -> null; public ProjectileEntity(EntityType p_i50159_1_, Level p_i50159_2_) { @@ -475,6 +478,10 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa this.damage *= this.undeadMultiple; } + if (entity instanceof LivingEntity living && jhpBullet) { + this.damage *= (1.0f + 0.12f * jhpLevel) * ((float)(10 / (living.getAttributeValue(Attributes.ARMOR) + 10)) + 0.25f); + } + if (headshot) { if (!this.shooter.level().isClientSide() && this.shooter instanceof ServerPlayer player) { var holder = Holder.direct(ModSounds.HEADSHOT.get()); @@ -755,6 +762,16 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa return this; } + public ProjectileEntity jhpBullet() { + this.jhpBullet = true; + return this; + } + + public ProjectileEntity jhpLevel(float jhpLevel) { + this.jhpLevel = jhpLevel; + return this; + } + public ProjectileEntity zoom(boolean zoom) { this.zoom = zoom; return this; diff --git a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java index 60c84b0bf..29fcf9a2c 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java @@ -232,6 +232,10 @@ public class GunEventHandler { projectile.undeadMultiple(1.0f + 0.5f * level); } else if (perk == ModPerks.BEAST_BULLET.get()) { projectile.beast(); + } else if (perk == ModPerks.JHP_BULLET.get()) { + int level = PerkHelper.getItemPerkLevel(perk, heldItem); + projectile.jhpBullet(); + projectile.jhpLevel(level); } var dmgPerk = PerkHelper.getPerkByType(heldItem, Perk.Type.DAMAGE); diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java index 2e7895bd3..c1af1c69a 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java @@ -30,6 +30,8 @@ public class ModPerks { public static final RegistryObject AP_BULLET = AMMO_PERKS.register("ap_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("ap_bullet", Perk.Type.AMMO).bypassArmorRate(0.4f).rgb(230, 0, 0))); + public static final RegistryObject JHP_BULLET = AMMO_PERKS.register("jhp_bullet", + () -> new AmmoPerk(new AmmoPerk.Builder("jhp_bullet", Perk.Type.AMMO).bypassArmorRate(-0.2f).rgb(230, 131, 65))); public static final RegistryObject SILVER_BULLET = AMMO_PERKS.register("silver_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("silver_bullet", Perk.Type.AMMO).bypassArmorRate(0.05f).rgb(87, 166, 219))); public static final RegistryObject POISONOUS_BULLET = AMMO_PERKS.register("poisonous_bullet", diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 038216651..9f6edd615 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -219,6 +219,8 @@ "des.superbwarfare.curse_flame_bullet": "命中后会使目标受到咒火效果", "item.superbwarfare.longer_wire": "Longer Wire", "des.superbwarfare.longer_wire": "Increases the range of Taser Gun", + "item.superbwarfare.jhp_bullet": "JHP Bullet", + "des.superbwarfare.jhp_bullet": "增加对低护甲目标的伤害", "item.superbwarfare.heal_clip": "Heal Clip", "des.superbwarfare.heal_clip": "Reloading after dealing a final blow will heal you and your nearby allies", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 79a95ab0f..e4ce78a3f 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -219,6 +219,8 @@ "des.superbwarfare.curse_flame_bullet": "命中后会使目标受到咒火效果", "item.superbwarfare.longer_wire": "延长导线", "des.superbwarfare.longer_wire": "增加泰瑟枪的射程", + "item.superbwarfare.jhp_bullet": "空尖弹", + "des.superbwarfare.jhp_bullet": "增加对低护甲目标的伤害", "item.superbwarfare.heal_clip": "治疗弹匣", "des.superbwarfare.heal_clip": "最后一击后短时间内填装,可治疗自身和附近队友", diff --git a/src/main/resources/assets/superbwarfare/models/item/jhp_bullet.json b/src/main/resources/assets/superbwarfare/models/item/jhp_bullet.json new file mode 100644 index 000000000..2c23d137c --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/jhp_bullet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "superbwarfare:item/perk/jhp_bullet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/textures/item/perk/jhp_bullet.png b/src/main/resources/assets/superbwarfare/textures/item/perk/jhp_bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..5058866a6036b012786210808d3f8b0a69e0a2fb GIT binary patch literal 1126 zcmV-s1eyDZP)9`jhr0Ld$^=3E(3EX1$VLt#U0T+%H0NmZ(Jua=t61cy= zUtPx!hrooZsj-IBlf#> zGo@2GHFBd~mT+PT&?Y<&5t{KHnO@>11Za#;8P-m2QPL~ZnoP4HV9oZ@D#Sic!SuWM zS(4Wx3|Rs+bw0;5r&P&!Nq$M5R;Ln%8==GD0AOOgYUOi?2{WS{NAP4m`n)uk20y>O z8``JSX*KbH+D#4xV|+(m94395aHxUnG)N&a-}iGy2j&&QlHk>$gsKY>ssOh_o9&S^ zy0n@h$}`MiQ#L^p0ysqD_q%nVN(vj54nXL~bmW<^*&f9_;6Zf=L{Oth+~$lQazRqg z0)TF_J$C!uIuLnXKc?g6sX;RWl7!a@E6>F}?L&ryQHad853qvC_90yz<7y2gBr-bE z9?k8AivT*QqtuNMW1AT-mf{v9n3EuNWzP;zssIXkG*OODr%iT(Z{B||DlHg4T16Ve zwMe{VD5uuNNOyuN0t|2ykS0vaSPKa$0b&SP;;S?<-4{sDNUNB0cTYHo1URyH?*3p@ z(qKGmaA7Eo*NmHOCm4|_hvwX1*iEwY=8z@8Q(9WC4Ek&jlJ%u|JXI-6fF=$t;|iG6 z|NfciC3N>U3Z2@L3@Ae&_d|x1aB{JpkTU5nl~yXF)_6d<56DfNnVc#-xG<6$o*?Zj z?IK6dTa6cQge0U#Qf50E3h%5p^reyZsV+-uRzAXY7SP<{#^Y=M%H@J|rRh1MV`L0u zv@jl+;XWWHu-;P!m(E;fq#i*NTp*{vK#$k0j0a}851?%g3FI_LpARH~1}@>HZ7*iq z2+`9T{w2X~vpohu@j#vdFz?N969RIIF}FZKPeN=beepY~bmrzTqdEknRT1J|{j*z5 ze+kWU00*b*R@Hecst73kMn`vy>Dbt&@9B56O=U^v04v-CSbm`NctUCATawUpA0S+a z0I>amgd}gVeE?U>HLxh`m1*^YDi83if<|GFOs_XoU5n3w8rd|=v~pah!CF-QYGjsQ z!mRrM4bpOXZY)Z`oO^sN7A0Uw!y}%A2P}!ja{#a`5l@1EB{A6t{CW7igdS(Z?d>h% s4LHCMKszr1FCh>c&*8s5UoZpy0-5;dQ`#-qlmGw#07*qoM6N<$f;1oQSO5S3 literal 0 HcmV?d00001