From 247ddb30c3a598bcf906bbdccc51dfade37516b4 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sun, 11 May 2025 22:57:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E9=98=BB=E6=AD=A2=E5=A4=96?= =?UTF-8?q?=E9=83=A8stopriding=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 4 -- .../entity/mixin/CustomStopRiding.java | 12 ------ .../entity/vehicle/base/VehicleEntity.java | 37 ------------------- .../mixins/LivingEntityMixin.java | 11 ------ .../superbwarfare/mixins/PlayerMixin.java | 24 +----------- .../message/send/PlayerStopRidingMessage.java | 5 +-- 6 files changed, 2 insertions(+), 91 deletions(-) delete mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/mixin/CustomStopRiding.java diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index cc0c9af3c..7768169ad 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.compat.CompatHolder; import com.atsuishio.superbwarfare.compat.clothconfig.ClothConfigHelper; import com.atsuishio.superbwarfare.config.client.ReloadConfig; import com.atsuishio.superbwarfare.entity.MortarEntity; -import com.atsuishio.superbwarfare.entity.mixin.CustomStopRiding; import com.atsuishio.superbwarfare.entity.vehicle.base.ArmedVehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.CannonEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; @@ -469,8 +468,5 @@ public class ClickHandler { return; } PacketDistributor.sendToServer(new PlayerStopRidingMessage(0)); - - CustomStopRiding customStopRiding = CustomStopRiding.getInstance(player); - customStopRiding.superbwarfare$stopRiding(); } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/mixin/CustomStopRiding.java b/src/main/java/com/atsuishio/superbwarfare/entity/mixin/CustomStopRiding.java deleted file mode 100644 index 42f55bb87..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/entity/mixin/CustomStopRiding.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.atsuishio.superbwarfare.entity.mixin; - -import net.minecraft.world.entity.Entity; - -public interface CustomStopRiding { - - static CustomStopRiding getInstance(Entity entity) { - return (CustomStopRiding) entity; - } - - void superbwarfare$stopRiding(); -} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java index 4909af580..0d7c3fd0b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java @@ -2,7 +2,6 @@ package com.atsuishio.superbwarfare.entity.vehicle.base; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.VehicleConfig; -import com.atsuishio.superbwarfare.entity.mixin.CustomStopRiding; import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; @@ -719,14 +718,6 @@ public abstract class VehicleEntity extends Entity { } public void destroy() { - this.getPassengers().forEach(p -> { - if (p instanceof Player player) { - CustomStopRiding customStopRiding = CustomStopRiding.getInstance(player); - customStopRiding.superbwarfare$stopRiding(); - } else { - p.stopRiding(); - } - }); this.discard(); } @@ -980,34 +971,6 @@ public abstract class VehicleEntity extends Entity { return getEyePosition(); } - @Override - public void ejectPassengers() { - for(int i = this.passengers.size() - 1; i >= 0; --i) { - var passenger = this.passengers.get(i); - if (passenger instanceof Player player) { - CustomStopRiding stopRiding = CustomStopRiding.getInstance(player); - stopRiding.superbwarfare$stopRiding(); - } else { - passenger.stopRiding(); - } - } - } - -// @Override -// public void remove(RemovalReason pReason) { -// if (this.getRemovalReason() == null) { -// this.removalReason = pReason; -// } -// -// if (this.getRemovalReason().shouldDestroy()) { -// this.stopRiding(); -// } -// -// this.getPassengers().forEach(Entity::stopRiding); -// this.levelCallback.onRemove(pReason); -// this.invalidateCaps(); -// } - /** * 渲染载具的第一人称UI * 务必标记 @OnlyIn(Dist.CLIENT) ! diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java index daba1e87c..9148f5ec2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java @@ -1,9 +1,7 @@ package com.atsuishio.superbwarfare.mixins; import com.atsuishio.superbwarfare.entity.mixin.ICustomKnockback; -import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; @@ -41,13 +39,4 @@ public class LivingEntityMixin implements ICustomKnockback { } } } - - @Inject(method = "stopRiding()V", at = @At("HEAD"), cancellable = true) - public void stopRiding(CallbackInfo ci) { - var living = ((LivingEntity) (Object) this); - Entity entity = living.getVehicle(); - if (entity instanceof VehicleEntity && living instanceof Player) { - ci.cancel(); - } - } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/PlayerMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/PlayerMixin.java index 2beadd56d..170d1d395 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/PlayerMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/PlayerMixin.java @@ -1,14 +1,11 @@ package com.atsuishio.superbwarfare.mixins; -import com.atsuishio.superbwarfare.entity.mixin.CustomStopRiding; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; -import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -16,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = Player.class, priority = 1145) -public abstract class PlayerMixin extends Entity implements CustomStopRiding { +public abstract class PlayerMixin extends Entity { public PlayerMixin(EntityType type, Level world) { super(type, world); @@ -38,23 +35,4 @@ public abstract class PlayerMixin extends Entity implements CustomStopRiding { this.setPose(Pose.STANDING); } } - - @Override - public void superbwarfare$stopRiding() { - Entity entity = this.getVehicle(); - this.removeVehicle(); - if (entity != null && entity != this.getVehicle() && !this.level().isClientSide) { - Vec3 vec3; - if (this.isRemoved()) { - vec3 = this.position(); - } else if (!entity.isRemoved() && !this.level().getBlockState(entity.blockPosition()).is(BlockTags.PORTALS)) { - vec3 = entity.getDismountLocationForPassenger((Player) (Object) this); - } else { - double d0 = Math.max(this.getY(), entity.getY()); - vec3 = new Vec3(this.getX(), d0, this.getZ()); - } - - this.dismountTo(vec3.x, vec3.y, vec3.z); - } - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/PlayerStopRidingMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/PlayerStopRidingMessage.java index df828a098..418148b79 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/PlayerStopRidingMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/PlayerStopRidingMessage.java @@ -1,7 +1,6 @@ package com.atsuishio.superbwarfare.network.message.send; import com.atsuishio.superbwarfare.Mod; -import com.atsuishio.superbwarfare.entity.mixin.CustomStopRiding; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.ByteBufCodecs; @@ -25,9 +24,7 @@ public record PlayerStopRidingMessage(int msgType) implements CustomPacketPayloa var vehicle = player.getVehicle(); if (!(vehicle instanceof VehicleEntity)) return; - CustomStopRiding customStopRiding = CustomStopRiding.getInstance(player); - customStopRiding.superbwarfare$stopRiding(); - + player.stopRiding(); player.setJumping(false); }