From 37f03edd2cbd2c4016bea95142e734fc4c28b906 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 26 Feb 2021 10:11:03 +0200 Subject: [PATCH] Added an event to allow mods to change the state of pony models before render --- .../client/model/AbstractPonyModel.java | 3 +++ .../client/model/ClientPonyModel.java | 2 ++ .../client/render/EquineRenderManager.java | 3 ++- .../fabric/PonyModelPrepareCallback.java | 19 +++++++++++++++++++ .../capabilities/fabric/package-info.java | 4 ++++ 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/minelittlepony/model/capabilities/fabric/PonyModelPrepareCallback.java create mode 100644 src/main/java/com/minelittlepony/model/capabilities/fabric/package-info.java diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index 8396f258..5fb1915e 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -1,6 +1,8 @@ package com.minelittlepony.client.model; import com.minelittlepony.client.model.armour.PonyArmourModel; +import com.minelittlepony.client.render.EquineRenderManager; +import com.minelittlepony.model.capabilities.fabric.PonyModelPrepareCallback; import com.minelittlepony.api.pony.meta.Race; import com.minelittlepony.client.model.armour.ArmourWrapper; import com.minelittlepony.client.transform.PonyTransformation; @@ -67,6 +69,7 @@ public abstract class AbstractPonyModel extends ClientPo @Override public void setAngles(T entity, float move, float swing, float ticks, float headYaw, float headPitch) { attributes.checkRainboom(entity, swing, canFly()); + PonyModelPrepareCallback.EVENT.invoker().onPonyModelPrepared(entity, this, EquineRenderManager.Mode.OTHER); super.setAngles(entity, move, swing, ticks, headYaw, headPitch); diff --git a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java index a6678c15..f7601a0b 100644 --- a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java @@ -5,6 +5,7 @@ import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.entity.LivingEntity; import net.minecraft.util.Arm; +import com.minelittlepony.model.capabilities.fabric.PonyModelPrepareCallback; import com.minelittlepony.api.pony.IPony; import com.minelittlepony.api.pony.IPonyData; import com.minelittlepony.api.pony.meta.Size; @@ -36,6 +37,7 @@ public abstract class ClientPonyModel extends MsonPlayer public void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { child = entity.isBaby(); attributes.updateLivingState(entity, pony, mode); + PonyModelPrepareCallback.EVENT.invoker().onPonyModelPrepared(entity, this, mode); sneaking = attributes.isCrouching; riding = attributes.isSitting; } diff --git a/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java b/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java index 5cbc62d7..cdf44ca1 100644 --- a/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java +++ b/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java @@ -198,6 +198,7 @@ public class EquineRenderManager EVENT = EventFactory.createArrayBacked(PonyModelPrepareCallback.class, listeners -> (entity, model, mode) -> { + for (PonyModelPrepareCallback event : listeners) { + event.onPonyModelPrepared(entity, model, mode); + } + }); + + void onPonyModelPrepared(Entity entity, IModel model, EquineRenderManager.Mode mode); +} diff --git a/src/main/java/com/minelittlepony/model/capabilities/fabric/package-info.java b/src/main/java/com/minelittlepony/model/capabilities/fabric/package-info.java new file mode 100644 index 00000000..fc6d010f --- /dev/null +++ b/src/main/java/com/minelittlepony/model/capabilities/fabric/package-info.java @@ -0,0 +1,4 @@ +@ParametersAreNonnullByDefault +package com.minelittlepony.model.capabilities.fabric; + +import javax.annotation.ParametersAreNonnullByDefault;