mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2024-11-25 05:48:00 +01:00
Fix leg flailing, big head mode, minime mode, and french mode
This commit is contained in:
parent
f6dc4dce36
commit
6e63347449
2 changed files with 85 additions and 8 deletions
|
@ -11,6 +11,8 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import net.minecraft.class_8293;
|
||||||
|
import net.minecraft.class_8323;
|
||||||
import net.minecraft.client.model.ModelPart;
|
import net.minecraft.client.model.ModelPart;
|
||||||
import net.minecraft.client.render.VertexConsumer;
|
import net.minecraft.client.render.VertexConsumer;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
@ -321,10 +323,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected void rotateLegsOnGround(float move, float swing, float ticks, T entity) {
|
protected void rotateLegsOnGround(float move, float swing, float ticks, T entity) {
|
||||||
float angle = MathHelper.PI * (float) Math.pow(swing, 16);
|
|
||||||
|
|
||||||
float baseRotation = move * 0.6662F; // magic number ahoy
|
|
||||||
float scale = swing / 4;
|
|
||||||
|
|
||||||
float rainboomLegLotation = attributes.getMainInterpolator().interpolate(
|
float rainboomLegLotation = attributes.getMainInterpolator().interpolate(
|
||||||
"rainboom_leg_rotation",
|
"rainboom_leg_rotation",
|
||||||
|
@ -333,10 +331,71 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
||||||
);
|
);
|
||||||
float yAngle = 0.2F * rainboomLegLotation;
|
float yAngle = 0.2F * rainboomLegLotation;
|
||||||
|
|
||||||
leftArm.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + angle) * scale, -MathUtil.Angles._90_DEG * rainboomLegLotation), -yAngle, 0);
|
class_8323 legAnimationType = class_8293.field_43554.method_50145();
|
||||||
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);
|
float rightArmPitch, leftArmPitch, rightLegPitch, leftLegPitch;
|
||||||
rightLeg.setAngles(MathHelper.lerp(rainboomLegLotation, MathHelper.cos(baseRotation + angle / 5) * scale, MathUtil.Angles._90_DEG * rainboomLegLotation), -yAngle, rightLeg.roll);
|
|
||||||
|
switch (legAnimationType) {
|
||||||
|
case NONE: {
|
||||||
|
rightArmPitch = 0;
|
||||||
|
leftArmPitch = 0;
|
||||||
|
rightLegPitch = 0;
|
||||||
|
leftLegPitch = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WINDMILL: {
|
||||||
|
rightArmPitch = move * 2.0f * 0.5f / swing;
|
||||||
|
leftArmPitch = move * 2.0f * 0.5f / swing;
|
||||||
|
rightLegPitch = move * 1.4f / swing;
|
||||||
|
leftLegPitch = (move + MathHelper.PI) * 1.4f / swing;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
float l = switch (legAnimationType) {
|
||||||
|
default -> 0.6662f;
|
||||||
|
case MILD -> 0.3331f;
|
||||||
|
case WILD -> 0.9993f;
|
||||||
|
case EXTREME -> 1.3324f;
|
||||||
|
};
|
||||||
|
float m = switch (legAnimationType) {
|
||||||
|
default -> 1.0f;
|
||||||
|
case MILD -> 0.5f;
|
||||||
|
case WILD -> 2.0f;
|
||||||
|
case EXTREME -> 4.0f;
|
||||||
|
};
|
||||||
|
|
||||||
|
float baseRotation = move * l; // magic number ahoy
|
||||||
|
float scale = m * swing / 4;
|
||||||
|
|
||||||
|
float angle = MathHelper.PI * (float) Math.pow(swing, 16);
|
||||||
|
|
||||||
|
rightArmPitch = MathHelper.lerp(
|
||||||
|
rainboomLegLotation,
|
||||||
|
MathHelper.cos(baseRotation + MathHelper.PI + angle / 2) * scale,
|
||||||
|
-MathUtil.Angles._90_DEG * rainboomLegLotation
|
||||||
|
);
|
||||||
|
leftArmPitch = MathHelper.lerp(
|
||||||
|
rainboomLegLotation,
|
||||||
|
MathHelper.cos(baseRotation + angle) * scale,
|
||||||
|
-MathUtil.Angles._90_DEG * rainboomLegLotation
|
||||||
|
);
|
||||||
|
rightLegPitch = MathHelper.lerp(
|
||||||
|
rainboomLegLotation,
|
||||||
|
MathHelper.cos(baseRotation + angle / 5) * scale,
|
||||||
|
MathUtil.Angles._90_DEG * rainboomLegLotation
|
||||||
|
);
|
||||||
|
leftLegPitch = MathHelper.lerp(
|
||||||
|
rainboomLegLotation,
|
||||||
|
MathHelper.cos(baseRotation + MathHelper.PI - (angle * 0.4f)) * scale,
|
||||||
|
MathUtil.Angles._90_DEG * rainboomLegLotation
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rightArm.setAngles(rightArmPitch, yAngle, 0);
|
||||||
|
leftArm.setAngles(leftArmPitch, -yAngle, 0);
|
||||||
|
rightLeg.setAngles(rightLegPitch, -yAngle, rightLeg.roll);
|
||||||
|
leftLeg.setAngles(leftLegPitch, yAngle, leftLeg.roll);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected float getLegOutset() {
|
protected float getLegOutset() {
|
||||||
|
@ -566,6 +625,18 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
||||||
stack.scale(1.5F, 1, 1.5F);
|
stack.scale(1.5F, 1, 1.5F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (part == BodyPart.HEAD && method_50988()) {
|
||||||
|
stack.scale(1.5F, 1.5F, 1.5F);
|
||||||
|
}
|
||||||
|
if (class_8293.field_43574.method_50116()) {
|
||||||
|
if (part != BodyPart.HEAD) {
|
||||||
|
stack.scale(0.6F, 0.6F, 0.6F);
|
||||||
|
stack.translate(0, 0.92F, 0);
|
||||||
|
} else {
|
||||||
|
stack.translate(0, 0.6F, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
neck.visible = head.visible;
|
neck.visible = head.visible;
|
||||||
PonyTransformation.forSize(getSize()).transform(this, part, stack);
|
PonyTransformation.forSize(getSize()).transform(this, part, stack);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.minelittlepony.client.model.armour;
|
package com.minelittlepony.client.model.armour;
|
||||||
|
|
||||||
|
import net.minecraft.class_8293;
|
||||||
import net.minecraft.client.model.ModelPart;
|
import net.minecraft.client.model.ModelPart;
|
||||||
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
||||||
import net.minecraft.entity.EquipmentSlot;
|
import net.minecraft.entity.EquipmentSlot;
|
||||||
|
@ -51,4 +52,9 @@ public class PonyArmourModel<T extends LivingEntity> extends AbstractPonyModel<T
|
||||||
|
|
||||||
return head.visible || body.visible;
|
return head.visible || body.visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean method_50994() {
|
||||||
|
return class_8293.field_43574.method_50116();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue