diff --git a/src/main/java/com/minelittlepony/api/model/IModel.java b/src/main/java/com/minelittlepony/api/model/IModel.java
index 19134402..6a748c87 100644
--- a/src/main/java/com/minelittlepony/api/model/IModel.java
+++ b/src/main/java/com/minelittlepony/api/model/IModel.java
@@ -26,7 +26,9 @@ public interface IModel {
/**
* Gets the skin metadata associated with this model.
*/
- IPonyData getMetadata();
+ default IPonyData getMetadata() {
+ return getAttributes().metadata;
+ }
/**
* Sets the pony metadata object associated with this model.
@@ -42,8 +44,13 @@ public interface IModel {
/**
* Returns true if this model is riding a boat, horse, or other animals.
+ *
+ * @deprecated User model#getAttributes().isSitting
*/
- boolean isRiding();
+ @Deprecated
+ default boolean isRiding() {
+ return getAttributes().isSitting;
+ }
default Race getRace() {
return PonyConfig.getEffectiveRace(getMetadata().getRace());
@@ -70,7 +77,7 @@ public interface IModel {
return 0;
}
- return MathHelper.sin(MathHelper.sqrt(getSwingAmount()) * PonyModelConstants.PI * 2) * 0.04F;
+ return MathHelper.sin(MathHelper.sqrt(getSwingAmount()) * MathHelper.PI * 2) * 0.04F;
}
/**
diff --git a/src/main/java/com/minelittlepony/api/model/IPart.java b/src/main/java/com/minelittlepony/api/model/IPart.java
index d52b8300..db6a059e 100644
--- a/src/main/java/com/minelittlepony/api/model/IPart.java
+++ b/src/main/java/com/minelittlepony/api/model/IPart.java
@@ -3,7 +3,7 @@ package com.minelittlepony.api.model;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
-public interface IPart extends PonyModelConstants {
+public interface IPart {
/**
* Sets the model's various rotation angles.
*
diff --git a/src/main/java/com/minelittlepony/api/model/IPegasus.java b/src/main/java/com/minelittlepony/api/model/IPegasus.java
index 2bea883b..00fcd015 100644
--- a/src/main/java/com/minelittlepony/api/model/IPegasus.java
+++ b/src/main/java/com/minelittlepony/api/model/IPegasus.java
@@ -2,8 +2,12 @@ package com.minelittlepony.api.model;
import com.minelittlepony.api.pony.meta.Wearable;
import com.minelittlepony.client.MineLittlePony;
+import com.minelittlepony.util.MathUtil;
public interface IPegasus extends IModel {
+ public static final float WINGS_HALF_SPREAD_ANGLE = MathUtil.Angles._270_DEG;
+ public static final float WINGS_FULL_SPREAD_ANGLE = MathUtil.Angles._270_DEG + 0.4F;
+ public static final float WINGS_RAISED_ANGLE = 4;
/**
* Returns true if the wings are spread.
diff --git a/src/main/java/com/minelittlepony/api/model/ModelAttributes.java b/src/main/java/com/minelittlepony/api/model/ModelAttributes.java
index 0f5da808..ed9b9ca6 100644
--- a/src/main/java/com/minelittlepony/api/model/ModelAttributes.java
+++ b/src/main/java/com/minelittlepony/api/model/ModelAttributes.java
@@ -14,10 +14,6 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
-import static com.minelittlepony.api.model.PonyModelConstants.ROTATE_270;
-import static com.minelittlepony.api.model.PonyModelConstants.WING_ROT_Z_SNEAK;
-import static com.minelittlepony.api.model.PonyModelConstants.WING_ROT_Z_FLYING;
-
public class ModelAttributes {
/**
* True if the model is sleeping in a bed.
@@ -128,12 +124,12 @@ public class ModelAttributes {
private float calcWingRotationFactor(float ticks) {
if (isSwimming) {
- return (MathHelper.sin(ticks * 0.136f) / 2) + ROTATE_270;
+ return (MathHelper.sin(ticks * 0.136f) / 2) + MathUtil.Angles._270_DEG;
}
if (isFlying) {
- return MathHelper.sin(ticks * 0.536f) + WING_ROT_Z_FLYING;
+ return MathHelper.sin(ticks * 0.536f) + IPegasus.WINGS_FULL_SPREAD_ANGLE;
}
- return WING_ROT_Z_SNEAK;
+ return IPegasus.WINGS_RAISED_ANGLE;
}
public void updateLivingState(LivingEntity entity, IPony pony, Mode mode) {
diff --git a/src/main/java/com/minelittlepony/api/model/Pivot.java b/src/main/java/com/minelittlepony/api/model/Pivot.java
new file mode 100644
index 00000000..5f2ab6a1
--- /dev/null
+++ b/src/main/java/com/minelittlepony/api/model/Pivot.java
@@ -0,0 +1,13 @@
+package com.minelittlepony.api.model;
+
+import net.minecraft.client.model.ModelPart;
+
+public record Pivot(float x, float y, float z) {
+ public void set(ModelPart part) {
+ part.setPivot(x, y, z);
+ }
+
+ public void add(ModelPart part) {
+ part.setPivot(part.pivotX + x, part.pivotY + y, part.pivotZ + z);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/minelittlepony/api/model/PonyModelConstants.java b/src/main/java/com/minelittlepony/api/model/PonyModelConstants.java
deleted file mode 100644
index 19cb74ce..00000000
--- a/src/main/java/com/minelittlepony/api/model/PonyModelConstants.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.minelittlepony.api.model;
-
-public interface PonyModelConstants {
- float
- PI = (float)Math.PI,
-
- ROTATE_270 = 4.712F,
- ROTATE_90 = 1.571F,
-
- BASE_MODEL_SCALE = 15/16F,
-
- BODY_ROT_X = 0,
- BODY_ROT_X_SNEAK = 0.4F,
- BODY_ROT_X_RIDING = PI * 3.8F,
-
- BODY_RP_Y = 0,
- BODY_RP_Y_SNEAK = 7,
- BODY_RP_Y_RIDING = 1,
-
- BODY_RP_Z = 0,
- BODY_RP_Z_SNEAK = -4,
- BODY_RP_Z_RIDING = 4,
-
- FRONT_LEG_RP_Y = 8,
- FRONT_LEG_RP_Y_SNEAK = 8,
-
- WING_ROT_Z_FLYING = ROTATE_270 + 0.4F,
- WING_ROT_Z_SNEAK = 4,
-
- LEG_ROT_X_SNEAK_ADJ = 0.4F,
-
- LEG_SLEEP_OFFSET_Y = 2,
- FRONT_LEG_SLEEP_OFFSET_Z = 6,
- BACK_LEG_SLEEP_OFFSET_Z = -8,
-
- TAIL_RP_Z = 14,
- TAIL_RP_Z_SNEAK = 15,
-
- TAIL_RP_Y_RIDING = 3,
- TAIL_RP_Z_RIDING = 13,
-
- HEAD_RP_X_SNEAK = 0,
- HEAD_RP_Y_SNEAK = 6,
- HEAD_RP_Z_SNEAK = -2,
-
- HEAD_RP_X_SLEEP = 1,
- HEAD_RP_Y_SLEEP = 2,
-
- HEAD_RP_Y_SWIM = -2,
- HEAD_RP_Z_SWIM = -4,
-
- NECK_ROT_X = 0.166F,
-
- FIN_ROT_Y = PI / 6;
-}
diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java
index e0eab2df..bdd9908f 100644
--- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java
+++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java
@@ -5,7 +5,7 @@ import com.minelittlepony.api.model.fabric.PonyModelPrepareCallback;
import com.minelittlepony.api.pony.meta.Sizes;
import com.minelittlepony.client.transform.PonyTransformation;
import com.minelittlepony.client.util.render.RenderList;
-import com.minelittlepony.mson.util.PartUtil;
+import com.minelittlepony.util.MathUtil;
import java.util.ArrayList;
import java.util.List;
@@ -22,6 +22,19 @@ import net.minecraft.util.math.*;
* Foundation class for all types of ponies.
*/
public abstract class AbstractPonyModel extends ClientPonyModel {
+ public static final float NECK_X = 0.166F;
+ public static final float LEG_SNEAKING_PITCH_ADJUSTMENT = 0.4F;
+ public static final float BODY_RIDING_PITCH = MathHelper.PI * 3.8F;
+ public static final float BODY_SNEAKING_PITCH = 0.4F;
+ public static final float FRONT_LEGS_Y = 8;
+
+ public static final Pivot ORIGIN = new Pivot(0, 0, 0);
+ public static final Pivot HEAD_SNEAKING = new Pivot(0, 6, -2);
+ public static final Pivot HEAD_SLEEPING = new Pivot(1, 2, 0);
+ public static final Pivot BODY_SNEAKING = new Pivot(0, 7, -4);
+ public static final Pivot BODY_RIDING = new Pivot(0, 1, 4);
+ public static final Pivot FONT_LEGS_SLEEPING = new Pivot(0, 2, 6);
+ public static final Pivot BACK_LEGS_SLEEPING = new Pivot(0, 2, -6);
protected final ModelPart neck;
@@ -133,10 +146,10 @@ public abstract class AbstractPonyModel extends ClientPo
} else if (riding) {
ponySit();
} else {
- adjustBody(BODY_ROT_X, BODY_RP_Y, BODY_RP_Z);
+ adjustBody(0, ORIGIN);
- rightLeg.pivotY = FRONT_LEG_RP_Y;
- leftLeg.pivotY = FRONT_LEG_RP_Y;
+ rightLeg.pivotY = FRONT_LEGS_Y;
+ leftLeg.pivotY = FRONT_LEGS_Y;
if (!attributes.isSleeping) {
animateBreathing(animationProgress);
@@ -165,76 +178,76 @@ public abstract class AbstractPonyModel extends ClientPo
* Aligns legs to a sneaky position.
*/
protected void ponyCrouch() {
- adjustBody(BODY_ROT_X_SNEAK, BODY_RP_Y_SNEAK, BODY_RP_Z_SNEAK);
- head.setPivot(HEAD_RP_X_SNEAK, HEAD_RP_Y_SNEAK, HEAD_RP_Z_SNEAK);
+ adjustBody(BODY_SNEAKING_PITCH, BODY_SNEAKING);
+ HEAD_SNEAKING.set(head);
- rightArm.pitch -= LEG_ROT_X_SNEAK_ADJ;
- leftArm.pitch -= LEG_ROT_X_SNEAK_ADJ;
+ rightArm.pitch -= LEG_SNEAKING_PITCH_ADJUSTMENT;
+ leftArm.pitch -= LEG_SNEAKING_PITCH_ADJUSTMENT;
- leftLeg.pivotY = FRONT_LEG_RP_Y_SNEAK;
- rightLeg.pivotY = FRONT_LEG_RP_Y_SNEAK;
+ leftLeg.pivotY = FRONT_LEGS_Y;
+ rightLeg.pivotY = FRONT_LEGS_Y;
}
protected void ponySleep() {
- rightArm.pitch = -ROTATE_90;
- leftArm.pitch = -ROTATE_90;
+ rightArm.pitch = -MathUtil.Angles._90_DEG;
+ leftArm.pitch = -MathUtil.Angles._90_DEG;
- rightLeg.pitch = ROTATE_90;
- leftLeg.pitch = ROTATE_90;
+ rightLeg.pitch = MathUtil.Angles._90_DEG;
+ leftLeg.pitch = MathUtil.Angles._90_DEG;
- head.setPivot(HEAD_RP_X_SLEEP, HEAD_RP_Y_SLEEP, sneaking ? -1 : 1);
+ HEAD_SLEEPING.set(head);
+ head.pivotZ = sneaking ? -1 : 1;
- PartUtil.shift(rightArm, 0, LEG_SLEEP_OFFSET_Y, FRONT_LEG_SLEEP_OFFSET_Z);
- PartUtil.shift(leftArm, 0, LEG_SLEEP_OFFSET_Y, FRONT_LEG_SLEEP_OFFSET_Z);
- PartUtil.shift(rightLeg, 0, LEG_SLEEP_OFFSET_Y, BACK_LEG_SLEEP_OFFSET_Z);
- PartUtil.shift(leftLeg, 0, LEG_SLEEP_OFFSET_Y, BACK_LEG_SLEEP_OFFSET_Z);
+ FONT_LEGS_SLEEPING.add(rightArm);
+ FONT_LEGS_SLEEPING.add(leftArm);
+ BACK_LEGS_SLEEPING.add(rightLeg);
+ BACK_LEGS_SLEEPING.add(leftLeg);
}
protected void ponySit() {
+ adjustBodyComponents(BODY_RIDING_PITCH * (attributes.isRidingInteractive ? 2 : 1), BODY_RIDING);
if (attributes.isRidingInteractive) {
- adjustBodyComponents(BODY_ROT_X_RIDING * 2, BODY_RP_Y_RIDING, BODY_RP_Z_RIDING);
- neck.setPivot(NECK_ROT_X + BODY_ROT_X * 2, BODY_RP_Y, BODY_RP_Z - 4);
+ neck.setPivot(NECK_X, 0, -4);
head.setPivot(0, -2, -5);
} else {
- adjustBodyComponents(BODY_ROT_X_RIDING, BODY_RP_Y_RIDING, BODY_RP_Z_RIDING);
- neck.setPivot(NECK_ROT_X + BODY_ROT_X, BODY_RP_Y, BODY_RP_Z);
+ neck.setPivot(NECK_X, 0, 0);
head.setPivot(0, 0, 0);
}
leftLeg.pivotZ = 14;
leftLeg.pivotY = 17;
- leftLeg.pitch = -PI / 4;
- leftLeg.yaw = -PI / 7;
+ leftLeg.pitch = -MathHelper.PI / 4;
+ leftLeg.yaw = -MathHelper.PI / 7;
leftLeg.pitch += body.pitch;
rightLeg.pivotZ = 15;
rightLeg.pivotY = 17;
- rightLeg.pitch = -PI / 4;
- rightLeg.yaw = PI / 7;
+ rightLeg.pitch = -MathHelper.PI / 4;
+ rightLeg.yaw = MathHelper.PI / 7;
rightLeg.pitch += body.pitch;
- leftArm.roll = -PI * 0.06f;
+ leftArm.roll = -MathHelper.PI * 0.06f;
leftArm.pitch += body.pitch;
- rightArm.roll = PI * 0.06f;
+ rightArm.roll = MathHelper.PI * 0.06f;
rightArm.pitch += body.pitch;
if (attributes.isRidingInteractive) {
- leftLeg.yaw = PI / 15;
- leftLeg.pitch = PI / 9;
+ leftLeg.yaw = MathHelper.PI / 15;
+ leftLeg.pitch = MathHelper.PI / 9;
leftLeg.pivotZ = 10;
leftLeg.pivotY = 7;
- rightLeg.yaw = -PI / 15;
- rightLeg.pitch = PI / 9;
+ rightLeg.yaw = -MathHelper.PI / 15;
+ rightLeg.pitch = MathHelper.PI / 9;
rightLeg.pivotZ = 10;
rightLeg.pivotY = 7;
- leftArm.pitch = PI / 6;
- rightArm.pitch = PI / 6;
+ leftArm.pitch = MathHelper.PI / 6;
+ rightArm.pitch = MathHelper.PI / 6;
leftArm.roll *= 2;
rightArm.roll *= 2;
@@ -285,10 +298,10 @@ public abstract class AbstractPonyModel extends ClientPo
float lerp = entity.isSwimming() ? (float)attributes.motionLerp : 1;
- float legLeft = (ROTATE_90 + MathHelper.sin((move / 3) + 2 * PI/3) / 2) * lerp;
+ float legLeft = (MathUtil.Angles._90_DEG + MathHelper.sin((move / 3) + 2 * MathHelper.PI/3) / 2) * lerp;
- float left = (ROTATE_90 + MathHelper.sin((move / 3) + 2 * PI) / 2) * lerp;
- float right = (ROTATE_90 + MathHelper.sin(move / 3) / 2) * lerp;
+ float left = (MathUtil.Angles._90_DEG + MathHelper.sin((move / 3) + 2 * MathHelper.PI) / 2) * lerp;
+ float right = (MathUtil.Angles._90_DEG + MathHelper.sin(move / 3) / 2) * lerp;
leftArm.setAngles(-left, -left/2, left/2);
rightArm.setAngles(-right, right/2, -right/2);
@@ -301,7 +314,7 @@ public abstract class AbstractPonyModel extends ClientPo
*
*/
protected void rotateLegsOnGround(float move, float swing, float ticks, T entity) {
- float angle = PI * (float) Math.pow(swing, 16);
+ float angle = MathHelper.PI * (float) Math.pow(swing, 16);
float baseRotation = move * 0.6662F; // magic number ahoy
float scale = swing / 4;
@@ -313,10 +326,10 @@ public abstract class AbstractPonyModel extends ClientPo
);
float yAngle = 0.2F * rainboomLegLotation;
- leftArm.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + angle) * scale, -ROTATE_90 * rainboomLegLotation), -yAngle, 0);
- rightArm.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + PI + angle / 2) * scale, -ROTATE_90 * rainboomLegLotation), yAngle, 0);
- leftLeg.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + PI - (angle * 0.4f)) * scale, ROTATE_90 * rainboomLegLotation), yAngle, leftLeg.roll);
- rightLeg.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + angle / 5) * scale, ROTATE_90 * rainboomLegLotation), -yAngle, rightLeg.roll);
+ leftArm.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + angle) * scale, -MathUtil.Angles._90_DEG * rainboomLegLotation), -yAngle, 0);
+ rightArm.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + MathHelper.PI + angle / 2) * scale, -MathUtil.Angles._90_DEG * rainboomLegLotation), yAngle, 0);
+ leftLeg.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + MathHelper.PI - (angle * 0.4f)) * scale, MathUtil.Angles._90_DEG * rainboomLegLotation), yAngle, leftLeg.roll);
+ rightLeg.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + angle / 5) * scale, MathUtil.Angles._90_DEG * rainboomLegLotation), -yAngle, rightLeg.roll);
}
protected float getLegOutset() {
@@ -372,8 +385,8 @@ public abstract class AbstractPonyModel extends ClientPo
}
float mult = 1 - swag/2;
- arm.pitch = arm.pitch * mult - (PI / 10) * swag;
- arm.roll = -sigma * (PI / 15);
+ arm.pitch = arm.pitch * mult - (MathHelper.PI / 10) * swag;
+ arm.roll = -sigma * (MathHelper.PI / 15);
if (attributes.isCrouching) {
arm.pivotX -= sigma * 2;
@@ -386,9 +399,9 @@ public abstract class AbstractPonyModel extends ClientPo
break;
case BLOCK:
arm.pitch = (arm.pitch / 2 - 0.9424779F) - 0.3F;
- arm.yaw = sigma * PI / 9;
+ arm.yaw = sigma * MathHelper.PI / 9;
if (complement == pose) {
- arm.yaw -= sigma * PI / 18;
+ arm.yaw -= sigma * MathHelper.PI / 18;
}
arm.pivotX += sigma;
arm.pivotZ += 3;
@@ -402,7 +415,7 @@ public abstract class AbstractPonyModel extends ClientPo
case CROSSBOW_HOLD:
aimBow(arm, limbSpeed);
- arm.pitch = head.pitch - ROTATE_90;
+ arm.pitch = head.pitch - MathUtil.Angles._90_DEG;
arm.yaw = head.yaw + 0.06F;
break;
case CROSSBOW_CHARGE:
@@ -412,7 +425,7 @@ public abstract class AbstractPonyModel extends ClientPo
arm.yaw = head.yaw + 0.06F;
break;
case THROW_SPEAR:
- arm.pitch = ROTATE_90 * 2;
+ arm.pitch = MathUtil.Angles._90_DEG * 2;
break;
case SPYGLASS:
float addedPitch = sneaking ? -0.2617994F : 0;
@@ -439,7 +452,7 @@ public abstract class AbstractPonyModel extends ClientPo
}
protected void aimBow(ModelPart arm, float limbSpeed) {
- arm.pitch = ROTATE_270 + head.pitch + (MathHelper.sin(limbSpeed * 0.067F) * 0.05F);
+ arm.pitch = MathUtil.Angles._270_DEG + head.pitch + (MathHelper.sin(limbSpeed * 0.067F) * 0.05F);
arm.yaw = head.yaw - 0.06F;
arm.roll = MathHelper.cos(limbSpeed * 0.09F) * 0.05F + 0.05F;
@@ -469,8 +482,8 @@ public abstract class AbstractPonyModel extends ClientPo
protected void swingArm(ModelPart arm) {
float swing = 1 - (float)Math.pow(1 - getSwingAmount(), 3);
- float deltaX = MathHelper.sin(swing * PI);
- float deltaZ = MathHelper.sin(getSwingAmount() * PI);
+ float deltaX = MathHelper.sin(swing * MathHelper.PI);
+ float deltaZ = MathHelper.sin(getSwingAmount() * MathHelper.PI);
float deltaAim = deltaZ * (0.7F - head.pitch) * 0.75F;
@@ -502,15 +515,15 @@ public abstract class AbstractPonyModel extends ClientPo
}
}
- protected void adjustBody(float rotateAngleX, float rotationPointY, float rotationPointZ) {
- adjustBodyComponents(rotateAngleX, rotationPointY, rotationPointZ);
- neck.setPivot(NECK_ROT_X + rotateAngleX, rotationPointY, rotationPointZ);
+ protected void adjustBody(float pitch, Pivot pivot) {
+ adjustBodyComponents(pitch, pivot);
+ neck.setPivot(NECK_X + pitch, pivot.y(), pivot.z());
}
- protected void adjustBodyComponents(float rotateAngleX, float rotationPointY, float rotationPointZ) {
- body.pitch = rotateAngleX;
- body.pivotY = rotationPointY;
- body.pivotZ = rotationPointZ;
+ protected void adjustBodyComponents(float pitch, Pivot pivot) {
+ body.pitch = pitch;
+ body.pivotY = pivot.y();
+ body.pivotZ = pivot.z();
}
@Override
diff --git a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java
index 1917dea4..116b6458 100644
--- a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java
+++ b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java
@@ -56,20 +56,15 @@ public abstract class ClientPonyModel extends MsonPlayer
}
@Override
- public void copyAttributes(BipedEntityModel other) {
+ public final void copyAttributes(BipedEntityModel other) {
copyStateTo(other);
}
@Override
- public ModelAttributes getAttributes() {
+ public final ModelAttributes getAttributes() {
return attributes;
}
- @Override
- public IPonyData getMetadata() {
- return attributes.metadata;
- }
-
@Override
public Size getSize() {
return child ? Sizes.FOAL : getMetadata().getSize();
@@ -80,22 +75,11 @@ public abstract class ClientPonyModel extends MsonPlayer
attributes.metadata = meta;
}
- @Override
- public ModelPart getHead() {
- return head;
- }
-
- @Override
- public boolean isRiding() {
- return riding;
- }
-
@Override
public float getSwingAmount() {
return handSwingProgress;
}
-
@Override
public ModelPart getArm(Arm side) {
return super.getArm(side);
diff --git a/src/main/java/com/minelittlepony/client/model/IMobModel.java b/src/main/java/com/minelittlepony/client/model/IMobModel.java
index e24864f5..5d570ac2 100644
--- a/src/main/java/com/minelittlepony/client/model/IMobModel.java
+++ b/src/main/java/com/minelittlepony/client/model/IMobModel.java
@@ -4,7 +4,6 @@ import net.minecraft.client.model.ModelPart;
import net.minecraft.util.Arm;
import net.minecraft.util.math.MathHelper;
-import com.minelittlepony.api.model.PonyModelConstants;
import com.minelittlepony.mson.util.PartUtil;
/**
@@ -20,8 +19,8 @@ public interface IMobModel {
* @param ticks Render partial ticks
*/
static void rotateArmHolding(ModelPart arm, float direction, float swingProgress, float ticks) {
- float swing = MathHelper.sin(swingProgress * PonyModelConstants.PI);
- float roll = MathHelper.sin((1 - (1 - swingProgress) * (1 - swingProgress)) * PonyModelConstants.PI);
+ float swing = MathHelper.sin(swingProgress * MathHelper.PI);
+ float roll = MathHelper.sin((1 - (1 - swingProgress) * (1 - swingProgress)) * MathHelper.PI);
float cos = MathHelper.cos(ticks * 0.09F) * 0.05F + 0.05F;
float sin = MathHelper.sin(ticks * 0.067F) / 10;
diff --git a/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java b/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java
index 2ccf8fd1..38dadaf8 100644
--- a/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java
+++ b/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java
@@ -43,11 +43,6 @@ public interface IPonyMixinModel
mixin().transform(part, stack);
}
- @Override
- default IPonyData getMetadata() {
- return mixin().getMetadata();
- }
-
@Override
default ModelAttributes getAttributes() {
return mixin().getAttributes();
@@ -63,11 +58,6 @@ public interface IPonyMixinModel
mixin().setMetadata(meta);
}
- @Override
- default boolean isRiding() {
- return mixin().isRiding();
- }
-
@Override
default float getSwingAmount() {
return mixin().getSwingAmount();
diff --git a/src/main/java/com/minelittlepony/client/model/IPonyModel.java b/src/main/java/com/minelittlepony/client/model/IPonyModel.java
index e0da776e..482bfe07 100644
--- a/src/main/java/com/minelittlepony/client/model/IPonyModel.java
+++ b/src/main/java/com/minelittlepony/client/model/IPonyModel.java
@@ -8,11 +8,10 @@ import com.minelittlepony.api.model.BodyPart;
import com.minelittlepony.api.model.ICapitated;
import com.minelittlepony.api.model.IModel;
import com.minelittlepony.api.model.ModelAttributes;
-import com.minelittlepony.api.model.PonyModelConstants;
import com.minelittlepony.api.pony.IPony;
import com.minelittlepony.mson.api.MsonModel;
-public interface IPonyModel extends PonyModelConstants, IModel, ICapitated, MsonModel {
+public interface IPonyModel extends IModel, ICapitated, MsonModel {
void copyAttributes(BipedEntityModel other);
diff --git a/src/main/java/com/minelittlepony/client/model/PonyElytra.java b/src/main/java/com/minelittlepony/client/model/PonyElytra.java
index 55c98093..466b3f11 100644
--- a/src/main/java/com/minelittlepony/client/model/PonyElytra.java
+++ b/src/main/java/com/minelittlepony/client/model/PonyElytra.java
@@ -4,12 +4,11 @@ import net.minecraft.client.model.ModelPart;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.entity.model.AnimalModel;
import net.minecraft.entity.LivingEntity;
+import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import com.google.common.collect.ImmutableList;
-import static com.minelittlepony.api.model.PonyModelConstants.*;
-
/**
* Modified from ModelElytra.
*/
@@ -42,11 +41,11 @@ public class PonyElytra extends AnimalModel {
*/
@Override
public void setAngles(T entity, float limbDistance, float limbAngle, float age, float headYaw, float headPitch) {
- float rotateX = PI / 2;
- float rotateY = PI / 8;
- float rotateZ = PI / 12;
+ float rotateX = MathHelper.PI / 2;
+ float rotateY = MathHelper.PI / 8;
+ float rotateZ = MathHelper.PI / 12;
- float rpY = BODY_RP_Y;
+ float rpY = 0;
if (entity.isFallFlying()) {
float velY = 1;
@@ -56,13 +55,13 @@ public class PonyElytra extends AnimalModel {
velY = 1 - (float) Math.pow(-motion.normalize().y, 1.5);
}
- rotateX = velY * PI * (2 / 3F) + (1 - velY) * rotateX;
- rotateY = velY * (PI / 2) + (1 - velY) * rotateY;
+ rotateX = velY * MathHelper.PI * (2 / 3F) + (1 - velY) * rotateX;
+ rotateY = velY * (MathHelper.PI / 2) + (1 - velY) * rotateY;
} else if (isSneaking) {
- rotateX = PI * 1.175F;
- rotateY = PI / 2;
- rotateZ = PI / 4;
- rpY = BODY_RP_Y_SNEAK;
+ rotateX = MathHelper.PI * 1.175F;
+ rotateY = MathHelper.PI / 2;
+ rotateZ = MathHelper.PI / 4;
+ rpY = AbstractPonyModel.BODY_SNEAKING.y();
}
leftWing.pivotX = 5;
diff --git a/src/main/java/com/minelittlepony/client/model/entity/BreezieModel.java b/src/main/java/com/minelittlepony/client/model/entity/BreezieModel.java
index 8766088b..be3debf5 100644
--- a/src/main/java/com/minelittlepony/client/model/entity/BreezieModel.java
+++ b/src/main/java/com/minelittlepony/client/model/entity/BreezieModel.java
@@ -10,8 +10,6 @@ import net.minecraft.util.math.MathHelper;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
-import static com.minelittlepony.api.model.PonyModelConstants.PI;
-
public class BreezieModel extends BipedEntityModel {
private ModelPart neck;
@@ -48,13 +46,13 @@ public class BreezieModel extends BipedEntityModel {
leftArm.pitch = MathHelper.cos(move * 0.6662F) * swing;
leftArm.roll = 0;
- rightArm.setAngles(swing * MathHelper.cos(move * 0.6662F + PI), 0, 0);
- leftLeg .setAngles(swing * MathHelper.cos(move * 0.6662F + PI) * 1.4F, 0, 0);
- rightLeg.setAngles(swing * MathHelper.cos(move * 0.6662F) * 1.4F, 0, 0);
+ rightArm.setAngles(swing * MathHelper.cos(move * 0.6662F + MathHelper.PI), 0, 0);
+ leftLeg .setAngles(swing * MathHelper.cos(move * 0.6662F + MathHelper.PI) * 1.4F, 0, 0);
+ rightLeg.setAngles(swing * MathHelper.cos(move * 0.6662F) * 1.4F, 0, 0);
if (riding) {
- leftArm.pitch += -PI / 5;
- rightArm.pitch += -PI / 5;
+ leftArm.pitch += -MathHelper.PI / 5;
+ rightArm.pitch += -MathHelper.PI / 5;
rotateLegRiding(leftLeg, -1);
rotateLegRiding(rightLeg, 1);
@@ -100,11 +98,11 @@ public class BreezieModel extends BipedEntityModel {
protected void rotateLegRiding(ModelPart leg, float factor) {
- leg.setAngles(-1.4137167F, factor * PI / 10, factor * 0.07853982F);
+ leg.setAngles(-1.4137167F, factor * MathHelper.PI / 10, factor * 0.07853982F);
}
protected void swingArms(Arm mainHand) {
- body.yaw = MathHelper.sin(MathHelper.sqrt(handSwingProgress) * PI * 2) / 5;
+ body.yaw = MathHelper.sin(MathHelper.sqrt(handSwingProgress) * MathHelper.TAU) / 5;
if (mainHand == Arm.LEFT) {
body.yaw *= -1;
@@ -124,13 +122,13 @@ public class BreezieModel extends BipedEntityModel {
float swingAmount = 1 - (float)Math.pow(1 - handSwingProgress, 4);
- float swingFactorX = MathHelper.sin(swingAmount * PI);
- float swingX = MathHelper.sin(handSwingProgress * PI) * (0.7F - head.pitch) * 0.75F;
+ float swingFactorX = MathHelper.sin(swingAmount * MathHelper.PI);
+ float swingX = MathHelper.sin(handSwingProgress * MathHelper.PI) * (0.7F - head.pitch) * 0.75F;
ModelPart mainArm = getArm(mainHand);
mainArm.pitch -= swingFactorX * 1.2F + swingX;
mainArm.yaw += body.yaw * 2;
- mainArm.roll -= MathHelper.sin(handSwingProgress * PI) * 0.4F;
+ mainArm.roll -= MathHelper.sin(handSwingProgress * MathHelper.PI) * 0.4F;
}
protected void rotateArm(ModelPart arm, ArmPose pose, float factor) {
@@ -139,7 +137,7 @@ public class BreezieModel extends BipedEntityModel {
arm.yaw = 0;
break;
case ITEM:
- arm.pitch = arm.pitch / 2 - (PI / 10);
+ arm.pitch = arm.pitch / 2 - (MathHelper.PI / 10);
arm.yaw = 0;
case BLOCK:
arm.pitch = arm.pitch / 2 - 0.9424779F;
@@ -151,9 +149,9 @@ public class BreezieModel extends BipedEntityModel {
protected void raiseArm(ModelPart up, ModelPart down, float factor) {
up.yaw = head.yaw + (factor / 10);
- up.pitch = head.pitch - (PI / 2);
+ up.pitch = head.pitch - MathHelper.HALF_PI;
down.yaw = head.yaw - (factor / 2);
- down.pitch = head.pitch - (PI / 2);
+ down.pitch = head.pitch - MathHelper.HALF_PI;
}
}
diff --git a/src/main/java/com/minelittlepony/client/model/entity/EnderStallionModel.java b/src/main/java/com/minelittlepony/client/model/entity/EnderStallionModel.java
index 0fa4a898..7ab47868 100644
--- a/src/main/java/com/minelittlepony/client/model/entity/EnderStallionModel.java
+++ b/src/main/java/com/minelittlepony/client/model/entity/EnderStallionModel.java
@@ -85,6 +85,6 @@ public class EnderStallionModel extends SkeleponyModel {
@Override
public float getWingRotationFactor(float ticks) {
- return MathHelper.sin(ticks) + WING_ROT_Z_SNEAK;
+ return MathHelper.sin(ticks) + WINGS_HALF_SPREAD_ANGLE;
}
}
diff --git a/src/main/java/com/minelittlepony/client/model/entity/WitchPonyModel.java b/src/main/java/com/minelittlepony/client/model/entity/WitchPonyModel.java
index ea23a3fc..78c3a603 100644
--- a/src/main/java/com/minelittlepony/client/model/entity/WitchPonyModel.java
+++ b/src/main/java/com/minelittlepony/client/model/entity/WitchPonyModel.java
@@ -44,7 +44,7 @@ public class WitchPonyModel extends EarthPonyModel {
if (rot > 1) rot = 1;
if (rot < -1) rot = -1;
- float legDrinkingAngle = -1 * PI/3 + rot;
+ float legDrinkingAngle = -1 * MathHelper.PI/3 + rot;
rightArm.pitch = legDrinkingAngle;
rightArm.yaw = 0.1F;
diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/ChangelingModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/ChangelingModel.java
index eda44883..22273c5d 100644
--- a/src/main/java/com/minelittlepony/client/model/entity/race/ChangelingModel.java
+++ b/src/main/java/com/minelittlepony/client/model/entity/race/ChangelingModel.java
@@ -18,8 +18,8 @@ public class ChangelingModel extends AlicornModel {
@Override
public float getWingRotationFactor(float ticks) {
if (isFlying()) {
- return MathHelper.sin(ticks * 3) + ROTATE_270;
+ return MathHelper.sin(ticks * 3) + WINGS_HALF_SPREAD_ANGLE;
}
- return WING_ROT_Z_SNEAK;
+ return WINGS_RAISED_ANGLE;
}
}
diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java
index 1f7799ab..d656e318 100644
--- a/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java
+++ b/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java
@@ -14,6 +14,8 @@ import net.minecraft.util.math.MathHelper;
public class SeaponyModel extends UnicornModel {
+ private static final float FIN_Y_ANGLE = MathHelper.PI / 6;
+
private final ModelPart leftFin;
private final ModelPart centerFin;
private final ModelPart rightFin;
@@ -62,7 +64,7 @@ public class SeaponyModel extends UnicornModel {
flapMotion /= 2;
}
- float finAngle = FIN_ROT_Y + flapMotion;
+ float finAngle = FIN_Y_ANGLE + flapMotion;
leftFin.yaw = finAngle;
rightFin.yaw = -finAngle;
diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java
index d6a5f647..a1011f66 100644
--- a/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java
+++ b/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java
@@ -62,8 +62,8 @@ public class UnicornModel extends EarthPonyModel impl
@Override
protected void ponyCrouch() {
super.ponyCrouch();
- unicornArmRight.pitch -= LEG_ROT_X_SNEAK_ADJ;
- unicornArmLeft.pitch -= LEG_ROT_X_SNEAK_ADJ;
+ unicornArmRight.pitch -= LEG_SNEAKING_PITCH_ADJUSTMENT;
+ unicornArmLeft.pitch -= LEG_SNEAKING_PITCH_ADJUSTMENT;
}
@Override
diff --git a/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java b/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java
index 347a0286..4022fb71 100644
--- a/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java
+++ b/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java
@@ -8,14 +8,13 @@ import net.minecraft.util.math.MathHelper;
import com.minelittlepony.api.model.BodyPart;
import com.minelittlepony.api.model.IModel;
-import com.minelittlepony.api.model.PonyModelConstants;
import com.minelittlepony.api.pony.meta.Wearable;
import com.minelittlepony.common.util.Color;
import java.util.Calendar;
import java.util.UUID;
-public class ChristmasHat extends AbstractWearableGear implements PonyModelConstants {
+public class ChristmasHat extends AbstractWearableGear {
private static boolean dayChecked = false;
private static boolean dayResult = false;
@@ -49,7 +48,7 @@ public class ChristmasHat extends AbstractWearableGear implements PonyModelConst
@Override
public void pose(IModel model, Entity entity, boolean rainboom, UUID interpolatorId, float move, float swing, float bodySwing, float ticks) {
- float pi = PI * (float) Math.pow(swing, 16);
+ float pi = MathHelper.PI * (float) Math.pow(swing, 16);
float mve = move * 0.6662f;
float srt = swing / 10;
diff --git a/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java b/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java
index a276fb4f..d42f13a2 100644
--- a/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java
+++ b/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java
@@ -3,8 +3,8 @@ package com.minelittlepony.client.model.gear;
import com.minelittlepony.api.model.BodyPart;
import com.minelittlepony.api.model.IModel;
import com.minelittlepony.api.model.IPegasus;
-import com.minelittlepony.api.model.PonyModelConstants;
import com.minelittlepony.api.pony.meta.Wearable;
+import com.minelittlepony.util.MathUtil;
import java.util.UUID;
@@ -15,7 +15,7 @@ import net.minecraft.entity.Entity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
-public class SaddleBags extends AbstractWearableGear implements PonyModelConstants {
+public class SaddleBags extends AbstractWearableGear {
public static final Identifier TEXTURE = new Identifier("minelittlepony", "textures/models/saddlebags.png");
@@ -43,7 +43,7 @@ public class SaddleBags extends AbstractWearableGear implements PonyModelConstan
hangLow = model.canFly() && ((IPegasus)model).wingsAreOpen();
}
- float pi = PI * (float) Math.pow(swing, 16);
+ float pi = MathHelper.PI * (float) Math.pow(swing, 16);
float mve = move * 0.6662f;
float srt = swing / 10;
@@ -54,7 +54,7 @@ public class SaddleBags extends AbstractWearableGear implements PonyModelConstan
rightBag.pitch = bodySwing;
if (model instanceof IPegasus && model.isFlying()) {
- bodySwing = ((IPegasus)model).getWingRotationFactor(ticks) - ROTATE_270;
+ bodySwing = ((IPegasus)model).getWingRotationFactor(ticks) - MathUtil.Angles._270_DEG;
bodySwing /= 10;
}
diff --git a/src/main/java/com/minelittlepony/client/model/part/PonyTail.java b/src/main/java/com/minelittlepony/client/model/part/PonyTail.java
index dd821e01..6dc1c4df 100644
--- a/src/main/java/com/minelittlepony/client/model/part/PonyTail.java
+++ b/src/main/java/com/minelittlepony/client/model/part/PonyTail.java
@@ -10,11 +10,16 @@ import com.minelittlepony.api.model.ModelAttributes;
import com.minelittlepony.api.pony.meta.TailShape;
import com.minelittlepony.client.model.AbstractPonyModel;
import com.minelittlepony.mson.api.*;
+import com.minelittlepony.util.MathUtil;
import java.util.ArrayList;
import java.util.List;
public class PonyTail implements IPart, MsonModel {
+ private static final float TAIL_Z = 14;
+ private static final float TAIL_RIDING_Y = 3;
+ private static final float TAIL_RIDING_Z = 13;
+ private static final float TAIL_SNEAKING_Z = 15;
private ModelPart tail;
private AbstractPonyModel> model;
@@ -49,15 +54,16 @@ public class PonyTail implements IPart, MsonModel {
tail.yaw = bodySwing * 5;
if (model.getAttributes().isCrouching && !rainboom) {
- rotateSneak();
- } else if (model.isRiding()) {
- tail.pivotZ = TAIL_RP_Z_RIDING;
- tail.pivotY = TAIL_RP_Y_RIDING;
- tail.pitch = PI / 5;
+ tail.setPivot(0, 0, TAIL_SNEAKING_Z);
+ tail.pitch = -model.body.pitch + 0.1F;
+ } else if (model.getAttributes().isSitting) {
+ tail.pivotZ = TAIL_RIDING_Z;
+ tail.pivotY = TAIL_RIDING_Y;
+ tail.pitch = MathHelper.PI / 5;
} else {
- tail.setPivot(0, 0, TAIL_RP_Z);
+ tail.setPivot(0, 0, TAIL_Z);
if (rainboom) {
- tail.pitch = ROTATE_90 + MathHelper.sin(move) / 10;
+ tail.pitch = MathUtil.Angles._90_DEG + MathHelper.sin(move) / 10;
} else {
tail.pitch = swing / 2;
@@ -77,11 +83,6 @@ public class PonyTail implements IPart, MsonModel {
tail.yaw += sinTickFactor;
}
- private void rotateSneak() {
- tail.setPivot(0, 0, TAIL_RP_Z_SNEAK);
- tail.pitch = -BODY_ROT_X_SNEAK + 0.1F;
- }
-
@Override
public void setVisible(boolean visible, ModelAttributes attributes) {
tail.visible = visible;
diff --git a/src/main/java/com/minelittlepony/client/model/part/PonyWings.java b/src/main/java/com/minelittlepony/client/model/part/PonyWings.java
index f5af1e54..880dcad9 100644
--- a/src/main/java/com/minelittlepony/client/model/part/PonyWings.java
+++ b/src/main/java/com/minelittlepony/client/model/part/PonyWings.java
@@ -10,6 +10,7 @@ import com.minelittlepony.api.model.*;
import com.minelittlepony.api.pony.meta.Wearable;
import com.minelittlepony.mson.api.ModelView;
import com.minelittlepony.mson.api.MsonModel;
+import com.minelittlepony.util.MathUtil;
public class PonyWings implements IPart, MsonModel {
@@ -57,9 +58,9 @@ public class PonyWings implements IPart, MsonModel {
float progress = pegasus.getSwingAmount();
if (progress > 0) {
- flap = MathHelper.sin(MathHelper.sqrt(progress) * PI * 2);
+ flap = MathHelper.sin(MathHelper.sqrt(progress) * MathHelper.TAU);
} else {
- float pi = PI * (float) Math.pow(swing, 16);
+ float pi = MathHelper.PI * (float) Math.pow(swing, 16);
float mve = move * 0.6662f; // magic number ahoy (actually 2/3)
float srt = swing / 4;
@@ -70,7 +71,7 @@ public class PonyWings implements IPart, MsonModel {
getLeft().rotateWalking(flap);
getRight().rotateWalking(-flap);
- float flapAngle = ROTATE_270;
+ float flapAngle = MathUtil.Angles._270_DEG;
if (pegasus.wingsAreOpen()) {
flapAngle = pegasus.getWingRotationFactor(ticks);
@@ -78,7 +79,7 @@ public class PonyWings implements IPart, MsonModel {
flapAngle -= 1F;
}
} else {
- flapAngle = ROTATE_270 - 0.9F + (float)Math.sin(ticks / 10) / 15F;
+ flapAngle = MathUtil.Angles._270_DEG - 0.9F + (float)Math.sin(ticks / 10) / 15F;
}
if (!pegasus.isFlying()) {
@@ -120,8 +121,8 @@ public class PonyWings implements IPart, MsonModel {
folded.yaw = swing * walkingRotationSpeed;
}
- public void rotateFlying(float angle) {
- extended.roll = angle;
+ public void rotateFlying(float roll) {
+ extended.roll = roll;
}
public void render(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
diff --git a/src/main/java/com/minelittlepony/client/model/part/SeaponyTail.java b/src/main/java/com/minelittlepony/client/model/part/SeaponyTail.java
index 80176378..22d37fe9 100644
--- a/src/main/java/com/minelittlepony/client/model/part/SeaponyTail.java
+++ b/src/main/java/com/minelittlepony/client/model/part/SeaponyTail.java
@@ -10,9 +10,6 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.MathHelper;
public class SeaponyTail implements IPart, MsonModel {
-
- private static final float TAIL_ROTX = PI / 2;
-
private final ModelPart tailBase;
private final ModelPart tailTip;
@@ -28,9 +25,9 @@ public class SeaponyTail implements IPart, MsonModel {
public void setRotationAndAngles(ModelAttributes attributes, float move, float swing, float bodySwing, float ticks) {
float rotation = attributes.isSleeping ? 0 : MathHelper.sin(ticks * 0.536f) / 4;
- tailBase.pitch = TAIL_ROTX + rotation;
+ tailBase.pitch = MathHelper.HALF_PI + rotation;
tailTip.pitch = rotation;
- tailFins.pitch = rotation - TAIL_ROTX;
+ tailFins.pitch = rotation - MathHelper.HALF_PI;
}
@Override
diff --git a/src/main/java/com/minelittlepony/client/render/IPonyRenderContext.java b/src/main/java/com/minelittlepony/client/render/IPonyRenderContext.java
index 8a7f905f..edeb4710 100644
--- a/src/main/java/com/minelittlepony/client/render/IPonyRenderContext.java
+++ b/src/main/java/com/minelittlepony/client/render/IPonyRenderContext.java
@@ -1,7 +1,6 @@
package com.minelittlepony.client.render;
import com.minelittlepony.api.model.BodyPart;
-import com.minelittlepony.api.model.PonyModelConstants;
import com.minelittlepony.api.model.gear.IGear;
import com.minelittlepony.api.pony.IPony;
import com.minelittlepony.client.model.*;
@@ -11,7 +10,7 @@ import net.minecraft.client.render.entity.model.EntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
-public interface IPonyRenderContext & IPonyModel> extends PonyModelConstants, IGear.Context {
+public interface IPonyRenderContext & IPonyModel> extends IGear.Context {
IPony getEntityPony(T entity);
diff --git a/src/main/java/com/minelittlepony/client/render/entity/PonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/PonyRenderer.java
index 7398543d..ed5a8230 100644
--- a/src/main/java/com/minelittlepony/client/render/entity/PonyRenderer.java
+++ b/src/main/java/com/minelittlepony/client/render/entity/PonyRenderer.java
@@ -9,6 +9,7 @@ import net.minecraft.client.render.entity.feature.StuckArrowsFeatureRenderer;
import net.minecraft.entity.mob.MobEntity;
public class PonyRenderer> extends AbstractPonyRenderer {
+ protected static final float BASE_MODEL_SCALE = 15/16F;
public PonyRenderer(EntityRendererFactory.Context context, ModelKey super M> key, TextureSupplier texture) {
this(context, key, texture, 1);
diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/CapeFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/CapeFeature.java
index 740242c3..4eb168e8 100644
--- a/src/main/java/com/minelittlepony/client/render/entity/feature/CapeFeature.java
+++ b/src/main/java/com/minelittlepony/client/render/entity/feature/CapeFeature.java
@@ -4,8 +4,6 @@ import com.minelittlepony.api.model.BodyPart;
import com.minelittlepony.client.model.ClientPonyModel;
import com.minelittlepony.client.render.IPonyRenderContext;
-import static com.minelittlepony.api.model.PonyModelConstants.PI;
-
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderLayer;
@@ -43,8 +41,8 @@ public class CapeFeature>
float motionYaw = player.prevBodyYaw + (player.bodyYaw - player.prevBodyYaw);
- double sin = MathHelper.sin(motionYaw * PI / 180);
- double cos = (-MathHelper.cos(motionYaw * PI / 180));
+ double sin = MathHelper.sin(motionYaw * MathHelper.RADIANS_PER_DEGREE);
+ double cos = -MathHelper.cos(motionYaw * MathHelper.RADIANS_PER_DEGREE);
float capeMotionY = (float) capeY * 10;
diff --git a/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java b/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java
index 95142fb1..f1393ba1 100644
--- a/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java
+++ b/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java
@@ -3,13 +3,15 @@ package com.minelittlepony.client.transform;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.Vec3d;
-import com.google.common.collect.Maps;
import com.minelittlepony.api.model.BodyPart;
import com.minelittlepony.api.model.IModel;
import com.minelittlepony.api.pony.meta.Size;
import com.minelittlepony.api.pony.meta.Sizes;
+import java.util.Arrays;
import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
public enum PonyTransformation {
@@ -19,7 +21,7 @@ public enum PonyTransformation {
if (model.getAttributes().isSwimming) stack.translate(0, -0.3F, 0);
if (model.getAttributes().isCrouching) stack.translate(0, -0.2F, 0);
if (model.getAttributes().isSleeping) stack.translate(0, -0.61F, 0.1F);
- if (model.isRiding()) stack.translate(0, -0.2F, -0.2F);
+ if (model.getAttributes().isSitting) stack.translate(0, -0.2F, -0.2F);
switch (part) {
case NECK:
@@ -29,7 +31,7 @@ public enum PonyTransformation {
if (model.getAttributes().isCrouching) stack.translate(0, 0.1F, 0);
break;
case BACK:
- stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ translateForRider(stack);
break;
default:
}
@@ -41,7 +43,7 @@ public enum PonyTransformation {
if (model.getAttributes().isSwimming) stack.translate(0, -0.2F, 0);
if (model.getAttributes().isCrouching) stack.translate(0, -0.15F, 0);
if (model.getAttributes().isSleeping) stack.translate(0, -0.6F, 0.15F);
- if (model.isRiding()) stack.translate(0, 0, -0.2F);
+ if (model.getAttributes().isSitting) stack.translate(0, 0, -0.2F);
switch (part) {
case NECK:
@@ -66,7 +68,7 @@ public enum PonyTransformation {
stack.scale(0.9F, 1.12F, 0.9F);
break;
case BACK:
- stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ translateForRider(stack);
break;
}
}
@@ -76,7 +78,7 @@ public enum PonyTransformation {
public void transform(IModel model, BodyPart part, MatrixStack stack) {
if (model.getAttributes().isCrouching) stack.translate(0, -0.15F, 0);
if (model.getAttributes().isSleeping) stack.translate(0, -0.6F, 0.25F);
- if (model.isRiding()) stack.translate(0, 0, -0.2F);
+ if (model.getAttributes().isSitting) stack.translate(0, 0, -0.2F);
switch (part) {
case NECK:
@@ -101,7 +103,7 @@ public enum PonyTransformation {
stack.scale(1.15F, 1.12F, 1.15F);
break;
case BACK:
- stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ translateForRider(stack);
break;
}
}
@@ -112,7 +114,7 @@ public enum PonyTransformation {
if (model.getAttributes().isSwimming) stack.translate(0, -0.9F, 0);
if (model.getAttributes().isCrouching) stack.translate(0, -0.2F, 0);
if (model.getAttributes().isSleeping) stack.translate(0, -0.8F, -0.3F);
- if (model.isRiding()) stack.translate(0, -0.6F, -0.2F);
+ if (model.getAttributes().isSitting) stack.translate(0, -0.6F, -0.2F);
stack.translate(0, 0.2F, 0);
@@ -130,7 +132,7 @@ public enum PonyTransformation {
stack.scale(1, 0.81F, 1);
break;
case BACK:
- stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ translateForRider(stack);
break;
default:
}
@@ -141,7 +143,7 @@ public enum PonyTransformation {
public void transform(IModel model, BodyPart part, MatrixStack stack) {
if (model.getAttributes().isCrouching) stack.translate(0, -0.15F, 0);
if (model.getAttributes().isSleeping) stack.translate(0, -0.5F, 0.35F);
- if (model.isRiding()) stack.translate(0, 0.1F, -0.2F);
+ if (model.getAttributes().isSitting) stack.translate(0, 0.1F, -0.2F);
switch (part) {
case NECK:
@@ -163,8 +165,7 @@ public enum PonyTransformation {
if (model.getAttributes().isGoingFast) stack.translate(0, 0.05F, 0);
break;
case BACK:
- riderOffset = new Vec3d(0, 2.2F, 0.75F);
- stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ translateForRider(stack);
break;
}
}
@@ -175,7 +176,7 @@ public enum PonyTransformation {
if (model.getAttributes().isSwimming) stack.translate(0, -0.6F, 0);
if (model.getAttributes().isCrouching) stack.translate(0, -0.15F, 0);
if (model.getAttributes().isSleeping) stack.translate(0, -0.45F, -0.3F);
- if (model.isRiding()) stack.translate(0, -0.4F, -0.2F);
+ if (model.getAttributes().isSitting) stack.translate(0, -0.4F, -0.2F);
switch (part) {
case NECK:
@@ -198,23 +199,16 @@ public enum PonyTransformation {
if (model.getAttributes().isGoingFast) stack.translate(0, 0.05F, 0);
break;
case BACK:
- stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ translateForRider(stack);
break;
}
}
};
- private static final Map REGISTRY = Maps.newEnumMap(Sizes.class);
-
- static {
- for (PonyTransformation i : values()) {
- REGISTRY.put(i.size, i);
- }
- }
-
- protected Vec3d riderOffset;
+ private static final Map REGISTRY = Arrays.stream(values()).collect(Collectors.toMap(i -> i.size, Function.identity()));
private final Sizes size;
+ private final Vec3d riderOffset;
PonyTransformation(Sizes size, float rX, float rY, float rZ) {
this.size = size;
@@ -225,6 +219,10 @@ public enum PonyTransformation {
return riderOffset;
}
+ public void translateForRider(MatrixStack stack) {
+ stack.translate(riderOffset.x, riderOffset.y, riderOffset.z);
+ }
+
public abstract void transform(IModel model, BodyPart part, MatrixStack stack);
public static PonyTransformation forSize(Size size) {
diff --git a/src/main/java/com/minelittlepony/util/MathUtil.java b/src/main/java/com/minelittlepony/util/MathUtil.java
index 81a5f186..7df0afa2 100644
--- a/src/main/java/com/minelittlepony/util/MathUtil.java
+++ b/src/main/java/com/minelittlepony/util/MathUtil.java
@@ -2,13 +2,19 @@ package com.minelittlepony.util;
import net.minecraft.util.math.MathHelper;
-public class MathUtil {
+public interface MathUtil {
+ interface Angles {
+ float
+ _270_DEG = 270 * MathHelper.RADIANS_PER_DEGREE,
+ _90_DEG = 90 * MathHelper.RADIANS_PER_DEGREE
+ ;
+ }
- public static double clampLimit(double num, double limit) {
+ static double clampLimit(double num, double limit) {
return MathHelper.clamp(num, -limit, limit);
}
- public static int mod(int value, int mod) {
+ static int mod(int value, int mod) {
value %= mod;
while (value < 0) value += mod;
@@ -16,7 +22,7 @@ public class MathUtil {
return value;
}
- public static float interpolateDegress(float prev, float current, float partialTicks) {
+ static float interpolateDegress(float prev, float current, float partialTicks) {
float difference = current - prev;
while (difference < -180) difference += 360;
@@ -25,7 +31,7 @@ public class MathUtil {
return prev + partialTicks * difference;
}
- public static boolean compareFloats(float a, float b) {
+ static boolean compareFloats(float a, float b) {
return Math.abs(a - b) <= 0.001F;
}
}