From 05cacbe570beb544606549288dea0f779c1ee094 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 4 Feb 2025 02:40:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E4=BF=AE=E5=A4=8D=E6=8C=89=E9=94=AEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 2 +- .../entity/projectile/ProjectileEntity.java | 26 +++++++------------ .../entity/vehicle/Ah6Entity.java | 12 ++++----- .../superbwarfare/event/GunEventHandler.java | 6 ++--- .../network/message/FireMessage.java | 6 ++--- 5 files changed, 23 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index bc318c9f2..b7e74132c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -201,7 +201,7 @@ public class ClickHandler { if (key == Minecraft.getInstance().options.keyJump.getKey().getValue()) { handleDoubleJump(player); } - if (key == ModKeyMappings.CONFIG.getKey().getValue()) { + if (key == ModKeyMappings.CONFIG.getKey().getValue() && ModKeyMappings.CONFIG.getKeyModifier().isActive(KeyConflictContext.IN_GAME)) { handleConfigScreen(player); } if (key == ModKeyMappings.RELOAD.getKey().getValue()) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java index 936725233..5e39c07eb 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java @@ -90,11 +90,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 int jhpLevel = 0; - private boolean heBullet = false; private int heLevel = 0; - private boolean fireBullet = false; private int fireLevel = 0; private boolean dragonBreath = false; private float knockback = 0.05f; @@ -289,11 +286,11 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa this.setDeltaMovement(vec.x, vec.y - 0.02, vec.z); - if (this.tickCount > (fireBullet ? 10 : 40)) { + if (this.tickCount > (fireLevel > 0 ? 10 : 40)) { this.discard(); } - if (fireBullet && dragonBreath && this.level() instanceof ServerLevel serverLevel) { + if (fireLevel > 0 && dragonBreath && this.level() instanceof ServerLevel serverLevel) { double randomPos = this.tickCount * 0.08 * (Math.random() - 0.5); ParticleTool.sendParticle(serverLevel, ParticleTypes.FLAME, (this.xo + this.getX()) / 2 + randomPos, (this.yo + this.getY()) / 2 + randomPos, (this.zo + this.getZ()) / 2 + randomPos, @@ -356,10 +353,10 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa } this.onHitBlock(hitVec); - if (heBullet) { + if (heLevel > 0) { explosionBulletBlock(this, this.damage, heLevel, monsterMultiple + 1, hitVec); } - if (fireBullet && this.level() instanceof ServerLevel serverLevel) { + if (fireLevel > 0 && this.level() instanceof ServerLevel serverLevel) { ParticleTool.sendParticle(serverLevel, ParticleTypes.LAVA, hitVec.x, hitVec.y, hitVec.z, 3, 0, 0, 0, 0.5, true); } @@ -508,15 +505,15 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa this.damage *= this.undeadMultiple; } - if (entity instanceof LivingEntity living && jhpBullet) { + if (entity instanceof LivingEntity living && jhpLevel > 0) { this.damage *= (1.0f + 0.12f * jhpLevel) * ((float) (10 / (living.getAttributeValue(Attributes.ARMOR) + 10)) + 0.25f); } - if (heBullet) { + if (heLevel > 0) { explosionBulletEntity(this, entity, this.damage, heLevel, mMultiple); } - if (fireBullet) { + if (fireLevel > 0) { if (!entity.level().isClientSide() && entity instanceof LivingEntity living) { living.addEffect(new MobEffectInstance(ModMobEffects.BURN.get(), 60 + fireLevel * 20, fireLevel, false, false), this.shooter); } @@ -839,20 +836,17 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa return this; } - public ProjectileEntity jhpBullet(boolean jhpBullet, int jhpLevel) { - this.jhpBullet = true; + public ProjectileEntity jhpBullet(int jhpLevel) { this.jhpLevel = jhpLevel; return this; } - public ProjectileEntity heBullet(boolean heBullet, int heLevel) { - this.heBullet = true; + public ProjectileEntity heBullet(int heLevel) { this.heLevel = heLevel; return this; } - public ProjectileEntity fireBullet(boolean fireBullet, int fireLevel, boolean dragonBreath) { - this.fireBullet = true; + public ProjectileEntity fireBullet(int fireLevel, boolean dragonBreath) { this.fireLevel = fireLevel; this.dragonBreath = dragonBreath; return this; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java index 4b21aafd7..fe810e4f2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java @@ -568,10 +568,10 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli .shooter(player) .damage(VehicleConfig.AH_6_CANNON_DAMAGE.get()) .headShot(2f) - .zoom(false); + .zoom(false) + .heBullet(2) + .bypassArmorRate(0.2f); - projectileRight.heBullet(true, 2); - projectileRight.bypassArmorRate(0.2f); projectileRight.setPos(worldPositionRight.x, worldPositionRight.y, worldPositionRight.z); projectileRight.shoot(player, this.getLookAngle().x, this.getLookAngle().y + 0.018, this.getLookAngle().z, 20, (float) 0.2); @@ -587,10 +587,10 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli .shooter(player) .damage(VehicleConfig.AH_6_CANNON_DAMAGE.get()) .headShot(2f) - .zoom(false); + .zoom(false) + .heBullet(2) + .bypassArmorRate(0.2f); - projectileLeft.heBullet(true, 1); - projectileLeft.bypassArmorRate(0.2f); projectileLeft.setPos(worldPositionLeft.x, worldPositionLeft.y, worldPositionLeft.z); projectileLeft.shoot(player, this.getLookAngle().x, this.getLookAngle().y + 0.018, this.getLookAngle().z, 20, (float) 0.2); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java index 0c6a340f0..571ccabbd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java @@ -244,13 +244,13 @@ public class GunEventHandler { projectile.beast(); } else if (perk == ModPerks.JHP_BULLET.get()) { int level = PerkHelper.getItemPerkLevel(perk, stack); - projectile.jhpBullet(true, level); + projectile.jhpBullet(level); } else if (perk == ModPerks.HE_BULLET.get()) { int level = PerkHelper.getItemPerkLevel(perk, stack); - projectile.heBullet(true, level); + projectile.heBullet(level); } else if (perk == ModPerks.INCENDIARY_BULLET.get()) { int level = PerkHelper.getItemPerkLevel(perk, stack); - projectile.fireBullet(true, level, stack.is(ModTags.Items.SHOTGUN)); + projectile.fireBullet(level, stack.is(ModTags.Items.SHOTGUN)); } var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java index 3a81e40b5..490f1ca91 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java @@ -299,13 +299,13 @@ public class FireMessage { projectile.beast(); } else if (perk == ModPerks.JHP_BULLET.get()) { int level = PerkHelper.getItemPerkLevel(perk, stack); - projectile.jhpBullet(true, level); + projectile.jhpBullet(level); } else if (perk == ModPerks.HE_BULLET.get()) { int level = PerkHelper.getItemPerkLevel(perk, stack); - projectile.heBullet(true, level); + projectile.heBullet(level); } else if (perk == ModPerks.INCENDIARY_BULLET.get()) { int level = PerkHelper.getItemPerkLevel(perk, stack); - projectile.fireBullet(true, level, !zoom); + projectile.fireBullet(level, !zoom); } var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);