Fixed tails and necks rendering on spectator mode players,

fixed spectators missing snouts and ears, and fixed spectators
bodies rotating when flying
This commit is contained in:
Sollace 2024-12-16 22:51:40 +01:00
parent a09500ddaa
commit 0489c4bb21
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
5 changed files with 25 additions and 18 deletions

View file

@ -131,6 +131,7 @@ public class ModelAttributes {
isGoingFast &= zMotion > 0.4F; isGoingFast &= zMotion > 0.4F;
isGoingFast |= entity.isUsingRiptide(); isGoingFast |= entity.isUsingRiptide();
isGoingFast |= entity.isFallFlying(); isGoingFast |= entity.isFallFlying();
isGoingFast &= !entity.isSpectator();
motionLerp = MathUtil.clampLimit(zMotion * 30, 1); motionLerp = MathUtil.clampLimit(zMotion * 30, 1);

View file

@ -115,6 +115,15 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
rightPants.copyTransform(rightLeg); rightPants.copyTransform(rightLeg);
jacket.copyTransform(body); jacket.copyTransform(body);
hat.copyTransform(head); hat.copyTransform(head);
hat.visible = head.visible && !attributes.isHorsey;
neck.visible = body.visible;
if (attributes.isHorsey) {
neck.visible = head.visible;
} else {
neck.hidden = !head.visible;
}
parts.forEach(part -> part.setVisible(body.visible, attributes));
} }
protected void setModelAngles(T entity, float limbAngle, float limbSpeed, float animationProgress, float headYaw, float headPitch) { protected void setModelAngles(T entity, float limbAngle, float limbSpeed, float animationProgress, float headYaw, float headPitch) {
@ -539,14 +548,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
} }
} }
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
neck.visible = visible;
hat.visible &= !attributes.isHorsey;
parts.forEach(part -> part.setVisible(visible, attributes));
}
@Override @Override
public final void setArmAngle(Arm arm, MatrixStack matrices) { public final void setArmAngle(Arm arm, MatrixStack matrices) {
super.setArmAngle(arm, matrices); super.setArmAngle(arm, matrices);

View file

@ -6,6 +6,8 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import com.minelittlepony.api.model.SubModel; import com.minelittlepony.api.model.SubModel;
import com.minelittlepony.api.pony.meta.Race;
import com.minelittlepony.api.config.PonyConfig;
import com.minelittlepony.api.model.ModelAttributes; import com.minelittlepony.api.model.ModelAttributes;
import com.minelittlepony.mson.api.*; import com.minelittlepony.mson.api.*;
import com.minelittlepony.mson.api.model.PartBuilder; import com.minelittlepony.mson.api.model.PartBuilder;
@ -57,8 +59,9 @@ public class PonyEars implements SubModel, MsonModel {
@Override @Override
public void setVisible(boolean visible, ModelAttributes attributes) { public void setVisible(boolean visible, ModelAttributes attributes) {
right.visible = visible && !attributes.metadata.race().isHuman(); Race race = PonyConfig.getEffectiveRace(attributes.metadata.race());
left.visible = visible && !attributes.metadata.race().isHuman(); right.visible = !race.isHuman();
left.visible = !race.isHuman();
if (attributes.isHorsey) { if (attributes.isHorsey) {
left.pivotX = -1; left.pivotX = -1;

View file

@ -39,8 +39,8 @@ public class PonySnout implements SubModel, MsonModel {
@Override @Override
public void setVisible(boolean visible, ModelAttributes attributes) { public void setVisible(boolean visible, ModelAttributes attributes) {
visible &= !attributes.isHorsey visible = !attributes.isHorsey
&& !attributes.metadata.race().isHuman() && !PonyConfig.getEffectiveRace(attributes.metadata.race()).isHuman()
&& PonyConfig.getInstance().snuzzles.get(); && PonyConfig.getInstance().snuzzles.get();
Gender gender = attributes.metadata.gender(); Gender gender = attributes.metadata.gender();

View file

@ -87,6 +87,7 @@ public class PonyTail implements SubModel, MsonModel {
@Override @Override
public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlay, int light, int color, ModelAttributes attributes) { public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlay, int light, int color, ModelAttributes attributes) {
if (tail.visible) {
stack.push(); stack.push();
tail.rotate(stack); tail.rotate(stack);
@ -96,6 +97,7 @@ public class PonyTail implements SubModel, MsonModel {
stack.pop(); stack.pop();
} }
}
public static class Segment { public static class Segment {
private final ModelPart tree; private final ModelPart tree;