From 355da3e1f99704b6e0b3cde0d7c9ad2ce0fa3534 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 4 Feb 2025 14:06:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0entity=20mixin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/mixins/EntityMixin.java | 28 +++++++++++++++++++ src/main/resources/mixins.superbwarfare.json | 1 + 2 files changed, 29 insertions(+) create mode 100644 src/main/java/com/atsuishio/superbwarfare/mixins/EntityMixin.java diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/EntityMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/EntityMixin.java new file mode 100644 index 000000000..a00269470 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/EntityMixin.java @@ -0,0 +1,28 @@ +package com.atsuishio.superbwarfare.mixins; + +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Entity.class) +public class EntityMixin { + + // TODO 优化后续逻辑 + @Redirect(method = "turn(DD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;setXRot(F)V", ordinal = 1)) + public void turn(Entity instance, float pXRot) { + if (instance instanceof Player player) { + player.setXRot(player.getXRot()); + while (player.getXRot() > 180F) { + player.setXRot(player.getXRot() - 360F); + } + while (player.getYRot() <= -180F) { + player.setXRot(player.getXRot() + 360F); + } + } else { + instance.setXRot(Mth.clamp(instance.getXRot(), -90.0F, 90.0F)); + } + } +} diff --git a/src/main/resources/mixins.superbwarfare.json b/src/main/resources/mixins.superbwarfare.json index 37adaadf1..5243d5a6a 100644 --- a/src/main/resources/mixins.superbwarfare.json +++ b/src/main/resources/mixins.superbwarfare.json @@ -5,6 +5,7 @@ "refmap": "mixins.superbwarfare.refmap.json", "mixins": [ "ClientboundSetEntityMotionPacketMixin", + "EntityMixin", "ExplosionMixin", "LivingEntityMixin", "PlayerEntityMixin"