Fix collission with other mods changing eye height/hitboxes

This commit is contained in:
Sollace 2024-07-23 15:01:17 +02:00
parent 8a801e7c41
commit f4ea6d5ef0
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB

View file

@ -7,15 +7,13 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.minelittlepony.client.render.EquineRenderManager.RegistrationHandler; import com.minelittlepony.client.render.EquineRenderManager.RegistrationHandler;
import com.minelittlepony.client.render.EquineRenderManager.SyncedPony; import com.minelittlepony.client.render.EquineRenderManager.SyncedPony;
@Mixin(PlayerEntity.class) @Mixin(PlayerEntity.class)
abstract class MixinPlayerEntity extends LivingEntity implements RegistrationHandler { abstract class MixinPlayerEntity implements RegistrationHandler {
MixinPlayerEntity() { super(null, null); }
private final SyncedPony syncedPony = new SyncedPony(); private final SyncedPony syncedPony = new SyncedPony();
@Override @Override
@ -23,14 +21,11 @@ abstract class MixinPlayerEntity extends LivingEntity implements RegistrationHan
return syncedPony; return syncedPony;
} }
@Inject(method = "getBaseDimensions", at = @At("RETURN"), cancellable = true) @ModifyReturnValue(method = "getBaseDimensions(Lnet/minecraft/entity/EntityPose;)Lnet/minecraft/entity/EntityDimensions;",
private void onGetBaseDimensions(EntityPose pose, CallbackInfoReturnable<EntityDimensions> info) { at = @At("RETURN"))
private EntityDimensions modifyEyeHeight(EntityDimensions dimensions, EntityPose pose) {
float factor = syncedPony.getCachedPonyData().size().eyeHeightFactor(); float factor = syncedPony.getCachedPonyData().size().eyeHeightFactor();
return factor == 1 ? dimensions : dimensions.withEyeHeight(dimensions.eyeHeight() * factor);
if (factor != 1) {
EntityDimensions dimensions = info.getReturnValue();
info.setReturnValue(dimensions.withEyeHeight(dimensions.eyeHeight() * factor));
}
} }
@Inject(method = "tick()V", at = @At("TAIL")) @Inject(method = "tick()V", at = @At("TAIL"))