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.IPart;
import com.minelittlepony.model.IPegasus; import com.minelittlepony.model.IPegasus;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import com.minelittlepony.pony.meta.Wearable; import com.minelittlepony.pony.meta.Wearable;
import java.util.UUID; 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; protected T pegasus;
@ -21,6 +23,14 @@ public class PegasusWings<T extends Model & IPegasus> implements IPart {
protected Wing legacyWing; 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() { public Wing getLeft() {
return leftWing; 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); getRight().render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
} }
public static class Wing { public static class Wing implements MsonModel {
protected IPegasus pegasus; protected IPegasus pegasus;
protected ModelPart extended; protected ModelPart extended;
protected ModelPart folded; 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) { public void rotateWalking(float swing) {
folded.yaw = swing * 0.15F; 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 net.minecraft.client.util.math.MatrixStack;
import com.minelittlepony.model.IPart; import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import java.util.UUID; import java.util.UUID;
public class PonyEars implements IPart { public class PonyEars implements IPart, MsonModel {
private ModelPart right; private ModelPart right;
private ModelPart left; private ModelPart left;
@Override
public void init(ModelContext context) {
right = context.findByName("right");
left = context.findByName("left");
}
@Override @Override
public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha, UUID interpolatorId) { 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.client.MineLittlePony;
import com.minelittlepony.model.ICapitated; import com.minelittlepony.model.ICapitated;
import com.minelittlepony.model.IPart; 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.mson.api.model.MsonPart;
import com.minelittlepony.pony.meta.Gender; import com.minelittlepony.pony.meta.Gender;
import java.util.UUID; import java.util.UUID;
public class PonySnout implements IPart { public class PonySnout implements IPart, MsonModel {
private boolean visible = false; private boolean visible = false;
@ -21,6 +23,13 @@ public class PonySnout implements IPart {
private ICapitated<ModelPart> head; 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) { public void rotate(float x, float y, float z) {
((MsonPart)mare).rotate(x, y, z); ((MsonPart)mare).rotate(x, y, z);
((MsonPart)stallion).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.client.model.AbstractPonyModel;
import com.minelittlepony.model.IPart; import com.minelittlepony.model.IPart;
import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.MsonModel;
import java.util.UUID; 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; private final AbstractPonyModel<?> theModel;
@ -22,6 +25,23 @@ public class PonyTail extends ModelPart implements IPart {
theModel = model; 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 @Override
public void setRotationAndAngles(boolean rainboom, UUID interpolatorId, float move, float swing, float bodySwing, float ticks) { 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; 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); 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; public PonyTail tail;
int index; public int index;
public Segment(Model model) { public Segment(Model model) {
super(model); super(model);
} }
public void setOwner(int index, PonyTail tail) { @Override
this.index = index; public void init(ModelContext context) {
this.tail = tail; tail = context.getContext();
context.findByName("segment", this);
} }
@Override @Override

View file

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

View file

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