Convert the parts to mson

This commit is contained in:
Sollace 2019-11-25 16:09:21 +02:00
parent 79db99719c
commit 3b38ec908c
6 changed files with 84 additions and 15 deletions

View file

@ -8,11 +8,13 @@ import net.minecraft.util.math.MathHelper;
import com.minelittlepony.model.IPart;
import com.minelittlepony.model.IPegasus;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import com.minelittlepony.pony.meta.Wearable;
import java.util.UUID;
public class PegasusWings<T extends Model & IPegasus> implements IPart {
public class PegasusWings<T extends Model & IPegasus> implements IPart, MsonModel {
protected T pegasus;
@ -21,6 +23,14 @@ public class PegasusWings<T extends Model & IPegasus> implements IPart {
protected Wing legacyWing;
@Override
public void init(ModelContext context) {
leftWing = context.findByName("left_wing");
rightWing = context.findByName("right_wing");
legacyWing = context.findByName("legacy_right_wing");
}
public Wing getLeft() {
return leftWing;
}
@ -72,13 +82,20 @@ public class PegasusWings<T extends Model & IPegasus> implements IPart {
getRight().render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
}
public static class Wing {
public static class Wing implements MsonModel {
protected IPegasus pegasus;
protected ModelPart extended;
protected ModelPart folded;
@Override
public void init(ModelContext context) {
pegasus = (IPegasus)context.getModel();
extended = context.findByName("extended");
folded = context.findByName("folded");
}
public void rotateWalking(float swing) {
folded.yaw = swing * 0.15F;
}

View file

@ -5,14 +5,23 @@ import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import java.util.UUID;
public class PonyEars implements IPart {
public class PonyEars implements IPart, MsonModel {
private ModelPart right;
private ModelPart left;
@Override
public void init(ModelContext context) {
right = context.findByName("right");
left = context.findByName("left");
}
@Override
public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha, UUID interpolatorId) {
}

View file

@ -7,12 +7,14 @@ import net.minecraft.client.util.math.MatrixStack;
import com.minelittlepony.client.MineLittlePony;
import com.minelittlepony.model.ICapitated;
import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import com.minelittlepony.mson.api.model.MsonPart;
import com.minelittlepony.pony.meta.Gender;
import java.util.UUID;
public class PonySnout implements IPart {
public class PonySnout implements IPart, MsonModel {
private boolean visible = false;
@ -21,6 +23,13 @@ public class PonySnout implements IPart {
private ICapitated<ModelPart> head;
@Override
public void init(ModelContext context) {
head = context.getContext();
mare = context.findByName("mare");
stallion = context.findByName("stallion");
}
public void rotate(float x, float y, float z) {
((MsonPart)mare).rotate(x, y, z);
((MsonPart)stallion).rotate(x, y, z);

View file

@ -8,10 +8,13 @@ import net.minecraft.util.math.MathHelper;
import com.minelittlepony.client.model.AbstractPonyModel;
import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
public class PonyTail extends ModelPart implements IPart {
public class PonyTail extends ModelPart implements IPart, MsonModel {
private final AbstractPonyModel<?> theModel;
@ -22,6 +25,23 @@ public class PonyTail extends ModelPart implements IPart {
theModel = model;
}
@Override
public void init(ModelContext context) {
try {
int segments = context.getLocals().getValue("segments").get().intValue();
for (int i = 0; i < segments; i++) {
Segment segment = context.findByName("segment_" + i);
segment.index = i;
addChild(segment);
}
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
@Override
public void setRotationAndAngles(boolean rainboom, UUID interpolatorId, float move, float swing, float bodySwing, float ticks) {
roll = rainboom ? 0 : MathHelper.cos(move * 0.8F) * 0.2f * swing;
@ -73,19 +93,20 @@ public class PonyTail extends ModelPart implements IPart {
render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
}
private static class Segment extends ModelPart {
private static class Segment extends ModelPart implements MsonModel {
public PonyTail tail;
int index;
public int index;
public Segment(Model model) {
super(model);
}
public void setOwner(int index, PonyTail tail) {
this.index = index;
this.tail = tail;
@Override
public void init(ModelContext context) {
tail = context.getContext();
context.findByName("segment", this);
}
@Override

View file

@ -1,8 +1,9 @@
package com.minelittlepony.client.model.part;
import com.minelittlepony.client.model.AbstractPonyModel;
import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import java.util.UUID;
@ -11,7 +12,7 @@ import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.MathHelper;
public class SeaponyTail implements IPart {
public class SeaponyTail implements IPart, MsonModel {
private static final float TAIL_ROTX = PI / 2;
@ -22,8 +23,12 @@ public class SeaponyTail implements IPart {
private IPonyModel<?> model;
public SeaponyTail(AbstractPonyModel<?> model) {
this.model = model;
@Override
public void init(ModelContext context) {
model = (IPonyModel<?>)context.getModel();
tailBase = context.findByName("base");
tailTip = context.findByName("tip");
tailFins = context.findByName("fins");
}
@Override

View file

@ -8,19 +8,27 @@ import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import com.minelittlepony.util.math.Color;
import javax.annotation.Nullable;
import java.util.UUID;
public class UnicornHorn implements IPart {
public class UnicornHorn implements IPart, MsonModel {
private ModelPart horn;
private ModelPart glow;
protected boolean visible = true;
@Override
public void init(ModelContext context) {
horn = context.findByName("bone");
glow = context.findByName("corona");
}
@Override
public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha, @Nullable UUID interpolatorId) {
if (visible) {