优化部分代码,修复按键bug

This commit is contained in:
17146 2025-02-04 02:40:05 +08:00
parent eb8c23c28c
commit 05cacbe570
5 changed files with 23 additions and 29 deletions

View file

@ -201,7 +201,7 @@ public class ClickHandler {
if (key == Minecraft.getInstance().options.keyJump.getKey().getValue()) { if (key == Minecraft.getInstance().options.keyJump.getKey().getValue()) {
handleDoubleJump(player); handleDoubleJump(player);
} }
if (key == ModKeyMappings.CONFIG.getKey().getValue()) { if (key == ModKeyMappings.CONFIG.getKey().getValue() && ModKeyMappings.CONFIG.getKeyModifier().isActive(KeyConflictContext.IN_GAME)) {
handleConfigScreen(player); handleConfigScreen(player);
} }
if (key == ModKeyMappings.RELOAD.getKey().getValue()) { if (key == ModKeyMappings.RELOAD.getKey().getValue()) {

View file

@ -90,11 +90,8 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
private boolean zoom = false; private boolean zoom = false;
private float bypassArmorRate = 0.0f; private float bypassArmorRate = 0.0f;
private float undeadMultiple = 1.0f; private float undeadMultiple = 1.0f;
private boolean jhpBullet = false;
private int jhpLevel = 0; private int jhpLevel = 0;
private boolean heBullet = false;
private int heLevel = 0; private int heLevel = 0;
private boolean fireBullet = false;
private int fireLevel = 0; private int fireLevel = 0;
private boolean dragonBreath = false; private boolean dragonBreath = false;
private float knockback = 0.05f; 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); 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(); 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); double randomPos = this.tickCount * 0.08 * (Math.random() - 0.5);
ParticleTool.sendParticle(serverLevel, ParticleTypes.FLAME, ParticleTool.sendParticle(serverLevel, ParticleTypes.FLAME,
(this.xo + this.getX()) / 2 + randomPos, (this.yo + this.getY()) / 2 + randomPos, (this.zo + this.getZ()) / 2 + randomPos, (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); this.onHitBlock(hitVec);
if (heBullet) { if (heLevel > 0) {
explosionBulletBlock(this, this.damage, heLevel, monsterMultiple + 1, hitVec); 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, ParticleTool.sendParticle(serverLevel, ParticleTypes.LAVA, hitVec.x, hitVec.y, hitVec.z,
3, 0, 0, 0, 0.5, true); 3, 0, 0, 0, 0.5, true);
} }
@ -508,15 +505,15 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
this.damage *= this.undeadMultiple; 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); 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); explosionBulletEntity(this, entity, this.damage, heLevel, mMultiple);
} }
if (fireBullet) { if (fireLevel > 0) {
if (!entity.level().isClientSide() && entity instanceof LivingEntity living) { if (!entity.level().isClientSide() && entity instanceof LivingEntity living) {
living.addEffect(new MobEffectInstance(ModMobEffects.BURN.get(), 60 + fireLevel * 20, fireLevel, false, false), this.shooter); 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; return this;
} }
public ProjectileEntity jhpBullet(boolean jhpBullet, int jhpLevel) { public ProjectileEntity jhpBullet(int jhpLevel) {
this.jhpBullet = true;
this.jhpLevel = jhpLevel; this.jhpLevel = jhpLevel;
return this; return this;
} }
public ProjectileEntity heBullet(boolean heBullet, int heLevel) { public ProjectileEntity heBullet(int heLevel) {
this.heBullet = true;
this.heLevel = heLevel; this.heLevel = heLevel;
return this; return this;
} }
public ProjectileEntity fireBullet(boolean fireBullet, int fireLevel, boolean dragonBreath) { public ProjectileEntity fireBullet(int fireLevel, boolean dragonBreath) {
this.fireBullet = true;
this.fireLevel = fireLevel; this.fireLevel = fireLevel;
this.dragonBreath = dragonBreath; this.dragonBreath = dragonBreath;
return this; return this;

View file

@ -568,10 +568,10 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
.shooter(player) .shooter(player)
.damage(VehicleConfig.AH_6_CANNON_DAMAGE.get()) .damage(VehicleConfig.AH_6_CANNON_DAMAGE.get())
.headShot(2f) .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.setPos(worldPositionRight.x, worldPositionRight.y, worldPositionRight.z);
projectileRight.shoot(player, this.getLookAngle().x, this.getLookAngle().y + 0.018, this.getLookAngle().z, 20, projectileRight.shoot(player, this.getLookAngle().x, this.getLookAngle().y + 0.018, this.getLookAngle().z, 20,
(float) 0.2); (float) 0.2);
@ -587,10 +587,10 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
.shooter(player) .shooter(player)
.damage(VehicleConfig.AH_6_CANNON_DAMAGE.get()) .damage(VehicleConfig.AH_6_CANNON_DAMAGE.get())
.headShot(2f) .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.setPos(worldPositionLeft.x, worldPositionLeft.y, worldPositionLeft.z);
projectileLeft.shoot(player, this.getLookAngle().x, this.getLookAngle().y + 0.018, this.getLookAngle().z, 20, projectileLeft.shoot(player, this.getLookAngle().x, this.getLookAngle().y + 0.018, this.getLookAngle().z, 20,
(float) 0.2); (float) 0.2);

View file

@ -244,13 +244,13 @@ public class GunEventHandler {
projectile.beast(); projectile.beast();
} else if (perk == ModPerks.JHP_BULLET.get()) { } else if (perk == ModPerks.JHP_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, stack); int level = PerkHelper.getItemPerkLevel(perk, stack);
projectile.jhpBullet(true, level); projectile.jhpBullet(level);
} else if (perk == ModPerks.HE_BULLET.get()) { } else if (perk == ModPerks.HE_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, stack); int level = PerkHelper.getItemPerkLevel(perk, stack);
projectile.heBullet(true, level); projectile.heBullet(level);
} else if (perk == ModPerks.INCENDIARY_BULLET.get()) { } else if (perk == ModPerks.INCENDIARY_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, stack); 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); var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);

View file

@ -299,13 +299,13 @@ public class FireMessage {
projectile.beast(); projectile.beast();
} else if (perk == ModPerks.JHP_BULLET.get()) { } else if (perk == ModPerks.JHP_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, stack); int level = PerkHelper.getItemPerkLevel(perk, stack);
projectile.jhpBullet(true, level); projectile.jhpBullet(level);
} else if (perk == ModPerks.HE_BULLET.get()) { } else if (perk == ModPerks.HE_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, stack); int level = PerkHelper.getItemPerkLevel(perk, stack);
projectile.heBullet(true, level); projectile.heBullet(level);
} else if (perk == ModPerks.INCENDIARY_BULLET.get()) { } else if (perk == ModPerks.INCENDIARY_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, stack); int level = PerkHelper.getItemPerkLevel(perk, stack);
projectile.fireBullet(true, level, !zoom); projectile.fireBullet(level, !zoom);
} }
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE); var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);