From 94e1bed1e8802c445b2204afaf6eb5138a1e1daf Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Thu, 5 Jun 2025 15:23:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=80=E6=9C=89=E8=BD=BD=E5=85=B7=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=AC=AC=E4=B8=89=E4=BA=BA=E7=A7=B0=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E8=B7=9D=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/atsuishio/superbwarfare/client/ClickHandler.java | 4 ++-- .../superbwarfare/entity/vehicle/AnnihilatorEntity.java | 3 ++- .../atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java | 5 +++-- .../superbwarfare/entity/vehicle/Hpj11Entity.java | 3 ++- .../superbwarfare/entity/vehicle/Lav150Entity.java | 5 +++-- .../atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java | 3 ++- .../superbwarfare/entity/vehicle/Mle1934Entity.java | 3 ++- .../superbwarfare/entity/vehicle/PrismTankEntity.java | 3 ++- .../superbwarfare/entity/vehicle/SpeedboatEntity.java | 3 ++- .../superbwarfare/entity/vehicle/WheelChairEntity.java | 7 +++++++ .../superbwarfare/entity/vehicle/Yx100Entity.java | 5 +++-- .../java/com/atsuishio/superbwarfare/tools/CameraTool.java | 4 ++-- 12 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index ffdec8fcc..8391b1fb5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -152,8 +152,8 @@ public class ClickHandler { double scroll = event.getScrollDeltaY(); - // 按下自由视角键时,为具有自由视角功能的载具调整相机距离 - if (player.getVehicle() instanceof VehicleEntity vehicle && vehicle.allowFreeCam() && player == vehicle.getFirstPassenger() && ModKeyMappings.FREE_CAMERA.isDown()) { + // 按下自由视角键时,为载具调整相机距离 + if (player.getVehicle() instanceof VehicleEntity vehicle && player == vehicle.getFirstPassenger() && ModKeyMappings.FREE_CAMERA.isDown()) { ClientMouseHandler.custom3pDistance = Mth.clamp(ClientMouseHandler.custom3pDistance - event.getScrollDeltaY(), -3, 8); event.setCanceled(true); return; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java index 31ad8faba..44ca2843c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java @@ -11,6 +11,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.LaserWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -90,7 +91,7 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity, @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(16, 1.3, 0); + return new ThirdPersonCameraPosition(16 + 2 * ClientMouseHandler.custom3pDistanceLerp, 1.3, 0); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java index 7f746b673..322117c0c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java @@ -13,6 +13,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.weapon.ProjectileWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.SmallCannonShellWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.WgMissileWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -118,7 +119,7 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(3, 1, 0); + return new ThirdPersonCameraPosition(3 + ClientMouseHandler.custom3pDistanceLerp, 1, 0); } @Override @@ -318,7 +319,7 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit var smallCannonShell = ((SmallCannonShellWeapon) getWeapon(0)).create(player); smallCannonShell.setPos(worldPosition.x - 1.1 * this.getDeltaMovement().x, worldPosition.y, worldPosition.z - 1.1 * this.getDeltaMovement().z); - smallCannonShell.shoot(getBarrelVector(1).x, getBarrelVector(1).y + 0.005f, getBarrelVector(1).z, 20, + smallCannonShell.shoot(getBarrelVector(1).x, getBarrelVector(1).y + 0.005f, getBarrelVector(1).z, 35, 0.25f); this.level().addFreshEntity(smallCannonShell); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java index 66a5bcd2c..4344872d1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java @@ -8,6 +8,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.*; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.SmallCannonShellWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.item.ContainerBlockItem; @@ -106,7 +107,7 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(2, 0.75, 0); + return new ThirdPersonCameraPosition(2 + 0.75 * ClientMouseHandler.custom3pDistanceLerp, 0.75, 0); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java index 8bb0d1edc..7452e63fc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java @@ -12,6 +12,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.ProjectileWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.SmallCannonShellWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -99,7 +100,7 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(2.75, 1, 0); + return new ThirdPersonCameraPosition(2.75 + ClientMouseHandler.custom3pDistanceLerp, 1, 0); } @Override @@ -226,7 +227,7 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt var smallCannonShell = ((SmallCannonShellWeapon) getWeapon(0)).create(player); smallCannonShell.setPos(worldPosition.x - 1.1 * this.getDeltaMovement().x, worldPosition.y, worldPosition.z - 1.1 * this.getDeltaMovement().z); - smallCannonShell.shoot(getBarrelVector(1).x, getBarrelVector(1).y + 0.005f, getBarrelVector(1).z, 20, + smallCannonShell.shoot(getBarrelVector(1).x, getBarrelVector(1).y + 0.005f, getBarrelVector(1).z, 35, 0.25f); this.level().addFreshEntity(smallCannonShell); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java index 96b82e8a4..10473f9a3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java @@ -10,6 +10,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.CannonShellWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -103,7 +104,7 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(8, 1, 0); + return new ThirdPersonCameraPosition(8 + ClientMouseHandler.custom3pDistanceLerp, 1, 0); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java index febd330b1..f541eb725 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java @@ -10,6 +10,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.CannonShellWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -95,7 +96,7 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(10, 1.3, 0); + return new ThirdPersonCameraPosition(10 + 1.25 * ClientMouseHandler.custom3pDistanceLerp, 1.3, 0); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java index 3e9488c47..424079a07 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java @@ -11,6 +11,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.WeaponVehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.LaserWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.network.message.receive.ClientIndicatorMessage; @@ -100,7 +101,7 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(4, 1, 1); + return new ThirdPersonCameraPosition(4 + ClientMouseHandler.custom3pDistanceLerp, 1, 1); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java index 418b1fbe8..cceccf7bd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java @@ -8,6 +8,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.*; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.ProjectileWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -80,7 +81,7 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { - return new ThirdPersonCameraPosition(3, 1, 0); + return new ThirdPersonCameraPosition(3 + ClientMouseHandler.custom3pDistanceLerp, 1, 0); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java index 0acf9b328..524e7eb1b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java @@ -4,6 +4,8 @@ import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; import com.atsuishio.superbwarfare.entity.vehicle.base.MobileVehicleEntity; +import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModCriteriaTriggers; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; @@ -68,6 +70,11 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity { } } + @Override + public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { + return new ThirdPersonCameraPosition(0.5 * ClientMouseHandler.custom3pDistanceLerp, 0, 0); + } + @Override public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java index c7bd055e1..9bd194678 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java @@ -14,6 +14,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.weapon.CannonShellWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.ProjectileWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.SwarmDroneWeapon; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; +import com.atsuishio.superbwarfare.event.ClientMouseHandler; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -171,8 +172,8 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti @Override public ThirdPersonCameraPosition getThirdPersonCameraPosition(int index) { return switch (index) { - case 0 -> new ThirdPersonCameraPosition(5, 1.5, -0.8669625); - case 1 -> new ThirdPersonCameraPosition(-1, 0.5, 0); + case 0 -> new ThirdPersonCameraPosition(5 + ClientMouseHandler.custom3pDistanceLerp, 1.5, -0.8669625); + case 1 -> new ThirdPersonCameraPosition(-1 + 0.5 * ClientMouseHandler.custom3pDistanceLerp, 0.5, 0); default -> null; }; } diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/CameraTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/CameraTool.java index 2a2048fd4..8ab84a67d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/CameraTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/CameraTool.java @@ -19,9 +19,9 @@ public class CameraTool { Vec3 toVec = vehiclePosVec3.vectorTo(maxCameraPosVec3); if (player != null) { - HitResult hitresult = player.level().clip(new ClipContext(vehiclePosVec3, vehiclePosVec3.add(toVec), ClipContext.Block.VISUAL, ClipContext.Fluid.NONE, player)); + HitResult hitresult = player.level().clip(new ClipContext(vehiclePosVec3, vehiclePosVec3.add(toVec).add(toVec.normalize().scale(1)), ClipContext.Block.VISUAL, ClipContext.Fluid.NONE, player)); if (hitresult.getType() == HitResult.Type.BLOCK) { - return hitresult.getLocation().add(toVec.normalize().scale(-0.25)); + return hitresult.getLocation().add(toVec.normalize().scale(-1)); } } return maxCameraPosVec3;