mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-02-13 08:14:23 +01:00
Port armour to mson
This commit is contained in:
parent
145d8f41a3
commit
d3759af4f3
9 changed files with 171 additions and 415 deletions
|
@ -1,11 +1,9 @@
|
|||
package com.minelittlepony.client.model;
|
||||
|
||||
import com.minelittlepony.client.model.armour.ModelPonyArmour;
|
||||
import com.minelittlepony.client.model.part.PonySnout;
|
||||
import com.minelittlepony.client.model.armour.ArmourWrapper;
|
||||
import com.minelittlepony.client.transform.PonyTransformation;
|
||||
import com.minelittlepony.model.BodyPart;
|
||||
import com.minelittlepony.model.IPart;
|
||||
import com.minelittlepony.model.armour.IEquestrianArmour;
|
||||
import com.minelittlepony.mson.api.ModelContext;
|
||||
import com.minelittlepony.mson.api.model.MsonPart;
|
||||
|
@ -29,10 +27,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
|
||||
protected ModelPart neck;
|
||||
|
||||
protected IPart tail;
|
||||
protected PonySnout snout;
|
||||
protected IPart ears;
|
||||
|
||||
@Override
|
||||
public void init(ModelContext context) {
|
||||
super.init(context);
|
||||
|
@ -47,9 +41,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
upperTorso = context.findByName("upper_torso");
|
||||
upperTorsoOverlay = context.findByName("saddle");
|
||||
neck = context.findByName("neck");
|
||||
tail = context.findByName("tail");
|
||||
snout = context.findByName("snout");
|
||||
ears = context.findByName("ears");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -113,8 +104,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
}
|
||||
|
||||
animateWears();
|
||||
|
||||
snout.setGender(getMetadata().getGender());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -200,8 +189,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
* @param ticks Total whole and partial ticks since the entity's existance. Used in animations together with {@code swing} and {@code move}.
|
||||
*/
|
||||
protected void shakeBody(float move, float swing, float bodySwing, float ticks) {
|
||||
tail.setRotationAndAngles(attributes.isSwimming || attributes.isGoingFast, attributes.interpolatorId, move, swing, bodySwing * 5, ticks);
|
||||
|
||||
upperTorso.yaw = bodySwing;
|
||||
torso.yaw = bodySwing;
|
||||
neck.yaw = bodySwing;
|
||||
|
@ -611,7 +598,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
torso.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
upperTorso.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
torso.rotate(stack);
|
||||
tail.renderPart(stack, vertices, overlayUv, lightUv, red, green, blue, alpha, attributes.interpolatorId);
|
||||
}
|
||||
|
||||
protected void renderVest(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
|
@ -645,8 +631,6 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
upperTorsoOverlay.visible = visible;
|
||||
|
||||
neck.visible = visible;
|
||||
|
||||
tail.setVisible(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -5,6 +5,7 @@ import net.minecraft.entity.LivingEntity;
|
|||
import net.minecraft.entity.mob.VexEntity;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import com.minelittlepony.client.model.armour.ModelPonyArmour;
|
||||
import com.minelittlepony.client.model.entity.ModelBreezie;
|
||||
import com.minelittlepony.client.model.entity.ModelEnderStallion;
|
||||
import com.minelittlepony.client.model.entity.ModelGuardianPony;
|
||||
|
@ -50,6 +51,9 @@ public final class ModelType {
|
|||
public static final ModelKey<ModelEnderStallion> ENDERMAN = register("enderman", ModelEnderStallion::new);
|
||||
public static final ModelKey<ModelBreezie<VexEntity>> BREEZIE = register("breezie", ModelBreezie::new);
|
||||
|
||||
public static final ModelKey<ModelPonyArmour<?>> ARMOUR_INNER = register("armour_inner", ModelPonyArmour::new);
|
||||
public static final ModelKey<ModelPonyArmour<?>> ARMOUR_OUTER = register("armour_outer", ModelPonyArmour::new);
|
||||
|
||||
public static final PlayerModelKey<?, ModelAlicorn<?>> ALICORN = registerPlayer("alicorn", Race.ALICORN, ModelAlicorn::new);
|
||||
public static final PlayerModelKey<?, ModelUnicorn<?>> UNICORN = registerPlayer("unicorn", Race.UNICORN, ModelUnicorn::new);
|
||||
public static final PlayerModelKey<?, ModelUnicorn<?>> KIRIN = registerPlayer("kirin", Race.KIRIN, ModelUnicorn::new);
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.minelittlepony.mson.api.Mson;
|
|||
import com.minelittlepony.mson.api.MsonModel;
|
||||
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class PlayerModelKey<T extends LivingEntity, M extends Model & MsonModel> {
|
||||
|
||||
|
@ -59,6 +60,12 @@ public class PlayerModelKey<T extends LivingEntity, M extends Model & MsonModel>
|
|||
public Function<EntityRenderDispatcher, PlayerEntityRenderer> getFactory() {
|
||||
return d -> rendererFactory.create(d, slim, (ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>>)this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V extends M> V createModel(Supplier<V> supplier) {
|
||||
PlayerModelKey.this.slim = this.slim;
|
||||
return key.createModel(supplier);
|
||||
}
|
||||
}
|
||||
|
||||
public interface RendererFactory {
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.minelittlepony.client.model.armour;
|
|||
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
|
||||
import com.minelittlepony.client.model.ModelType;
|
||||
import com.minelittlepony.model.armour.ArmourLayer;
|
||||
import com.minelittlepony.model.armour.IEquestrianArmour;
|
||||
import com.minelittlepony.pony.IPonyData;
|
||||
|
@ -14,8 +15,8 @@ public class ArmourWrapper<T extends LivingEntity> implements IEquestrianArmour<
|
|||
private final ModelPonyArmour<T> innerLayer;
|
||||
|
||||
public ArmourWrapper(Supplier<ModelPonyArmour<T>> supplier) {
|
||||
outerLayer = supplier.get();
|
||||
innerLayer = supplier.get();
|
||||
outerLayer = ModelType.ARMOUR_INNER.createModel(supplier);
|
||||
innerLayer = ModelType.ARMOUR_OUTER.createModel(supplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -7,10 +7,10 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
import net.minecraft.entity.LivingEntity;
|
||||
|
||||
import com.minelittlepony.client.model.AbstractPonyModel;
|
||||
import com.minelittlepony.client.util.render.Part;
|
||||
import com.minelittlepony.model.IModel;
|
||||
import com.minelittlepony.model.armour.ArmourVariant;
|
||||
import com.minelittlepony.model.armour.IArmour;
|
||||
import com.minelittlepony.mson.api.ModelContext;
|
||||
|
||||
public class ModelPonyArmour<T extends LivingEntity> extends AbstractPonyModel<T> implements IArmour {
|
||||
|
||||
|
@ -25,6 +25,14 @@ public class ModelPonyArmour<T extends LivingEntity> extends AbstractPonyModel<T
|
|||
textureHeight = 32;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(ModelContext context) {
|
||||
super.init(context);
|
||||
chestPiece = context.findByName("chestpiece");
|
||||
steveRightLeg = context.findByName("steve_right_leg");
|
||||
steveLeftLeg = context.findByName("steve_left_leg");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void adjustBodyComponents(float rotateAngleX, float rotationPointY, float rotationPointZ) {
|
||||
super.adjustBodyComponents(rotateAngleX, rotationPointY, rotationPointZ);
|
||||
|
@ -73,65 +81,6 @@ public class ModelPonyArmour<T extends LivingEntity> extends AbstractPonyModel<T
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void initEars(ModelPart head, float yOffset, float stretch) {
|
||||
stretch /= 2;
|
||||
((Part)head).tex(0, 0).box(-4, -6, 1, 2, 2, 2, stretch) // right ear
|
||||
.tex(0, 4).box( 2, -6, 1, 2, 2, 2, stretch); // left ear
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void initBody(float yOffset, float stretch) {
|
||||
//super.initBody(yOffset, stretch);
|
||||
|
||||
chestPiece = new com.minelittlepony.client.util.render.Part(this, 16, 8)
|
||||
.around(HEAD_RP_X, HEAD_RP_Y + yOffset, HEAD_RP_Z)
|
||||
.box(-4, 4, -2, 8, 8, 16, stretch);
|
||||
|
||||
// fits the legacy player's torso to our pony bod.
|
||||
upperTorso = new com.minelittlepony.client.util.render.Part(this, 24, 0);
|
||||
((Part)upperTorso).offset(BODY_CENTRE_X, BODY_CENTRE_Y, BODY_CENTRE_Z)
|
||||
.around(HEAD_RP_X, HEAD_RP_Y + yOffset, HEAD_RP_Z)
|
||||
.tex(32, 23).east( 4, -4, -4, 8, 8, stretch)
|
||||
.west(-4, -4, -4, 8, 8, stretch)
|
||||
.tex(32, 23).south(-4, -4, 4, 8, 8, stretch)
|
||||
.tex(32, 23).top(-4, -4, -8, 8, 12, stretch);
|
||||
// it's a little short, so the butt tends to show. :/
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void preInitLegs() {
|
||||
leftArm = (ModelPart)new com.minelittlepony.client.util.render.Part(this, 0, 16).mirror(true, false, false);
|
||||
rightArm = new com.minelittlepony.client.util.render.Part(this, 0, 16);
|
||||
|
||||
leftLeg = (ModelPart)new com.minelittlepony.client.util.render.Part(this, 48, 8).mirror(true, false, false);
|
||||
rightLeg = new com.minelittlepony.client.util.render.Part(this, 48, 8);
|
||||
|
||||
steveLeftLeg = (ModelPart)new com.minelittlepony.client.util.render.Part(this, 0, 16).mirror(true, false, false);
|
||||
steveRightLeg = new com.minelittlepony.client.util.render.Part(this, 0, 16);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void initLegs(float yOffset, float stretch) {
|
||||
//super.initLegs(yOffset, stretch);
|
||||
|
||||
int armLength = attributes.armLength;
|
||||
int armWidth = attributes.armWidth;
|
||||
int armDepth = attributes.armDepth;
|
||||
|
||||
float rarmX = attributes.armRotationX;
|
||||
|
||||
float armX = THIRDP_ARM_CENTRE_X;
|
||||
float armY = THIRDP_ARM_CENTRE_Y;
|
||||
float armZ = BODY_CENTRE_Z / 2 - 1 - armDepth;
|
||||
|
||||
steveLeftLeg .setPivot( rarmX, yOffset, 0);
|
||||
steveRightLeg.setPivot(-rarmX, yOffset, 0);
|
||||
|
||||
steveLeftLeg .addCuboid(armX, armY, armZ, armWidth, armLength, armDepth, stretch);
|
||||
steveRightLeg.addCuboid(armX - armWidth, armY, armZ, armWidth, armLength, armDepth, stretch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInVisible() {
|
||||
setVisible(false);
|
||||
|
@ -139,9 +88,7 @@ public class ModelPonyArmour<T extends LivingEntity> extends AbstractPonyModel<T
|
|||
chestPiece.visible = false;
|
||||
head.visible = false;
|
||||
neck.visible = false;
|
||||
tail.setVisible(false);
|
||||
upperTorso.visible = false;
|
||||
snout.setVisible(false);
|
||||
steveLeftLeg.visible = false;
|
||||
steveRightLeg.visible = false;
|
||||
}
|
||||
|
|
|
@ -1,22 +1,60 @@
|
|||
package com.minelittlepony.client.model.entity.race;
|
||||
|
||||
import com.minelittlepony.client.model.AbstractPonyModel;
|
||||
import com.minelittlepony.client.model.part.PonySnout;
|
||||
import com.minelittlepony.model.IPart;
|
||||
import com.minelittlepony.mson.api.ModelContext;
|
||||
|
||||
import net.minecraft.client.render.VertexConsumer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
|
||||
public class ModelEarthPony<T extends LivingEntity> extends AbstractPonyModel<T> {
|
||||
|
||||
private final boolean smallArms;
|
||||
|
||||
protected IPart tail;
|
||||
protected PonySnout snout;
|
||||
protected IPart ears;
|
||||
|
||||
public ModelEarthPony(boolean smallArms) {
|
||||
this.smallArms = smallArms;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(ModelContext context) {
|
||||
super.init(context);
|
||||
|
||||
tail = context.findByName("tail");
|
||||
snout = context.findByName("snout");
|
||||
ears = context.findByName("ears");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAngles(T entity, float move, float swing, float ticks, float headYaw, float headPitch) {
|
||||
super.setAngles(entity, move, swing, ticks, headYaw, headPitch);
|
||||
snout.setGender(getMetadata().getGender());
|
||||
cape.pivotY = isSneaking ? 2 : isRiding ? -4 : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shakeBody(float move, float swing, float bodySwing, float ticks) {
|
||||
super.shakeBody(move, swing, bodySwing, ticks);
|
||||
tail.setRotationAndAngles(attributes.isSwimming || attributes.isGoingFast, attributes.interpolatorId, move, swing, bodySwing * 5, ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBody(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
super.renderBody(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
tail.renderPart(stack, vertices, overlayUv, lightUv, red, green, blue, alpha, attributes.interpolatorId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
super.setVisible(visible);
|
||||
tail.setVisible(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getLegOutset() {
|
||||
if (smallArms) {
|
||||
|
|
|
@ -1,335 +0,0 @@
|
|||
{
|
||||
"parent": "mson:steve",
|
||||
"texture": {
|
||||
"w": 64, "h": 64
|
||||
},
|
||||
"locals": {
|
||||
"arm_length": 12,
|
||||
"arm_width": 4,
|
||||
"arm_depth": 4,
|
||||
"arm_x": 0,
|
||||
"arm_x_neg": ["#arm_x", "-", "#arm_width"],
|
||||
"arm_z": [2, "-", "#arm_depth"],
|
||||
"arm_rotation_x": 3,
|
||||
"arm_rotation_x_neg": [0, "-", "#arm_rotation_x"],
|
||||
"arm_rotation_y": 8
|
||||
},
|
||||
"head": {
|
||||
"offset": [ 0, -1, -2 ],
|
||||
"center": [ 0, 0, -2 ],
|
||||
"cubes": [
|
||||
{ "from": [-4, -4, -4], "size": [ 8, 8, 8] }
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "mson:slot",
|
||||
"name": "snout",
|
||||
"implementation": "com.minelittlepony.client.model.part.PonySnout",
|
||||
"content": "minelittlepony:components/snout"
|
||||
},
|
||||
{
|
||||
"type": "mson:slot",
|
||||
"name": "ears",
|
||||
"implementation": "com.minelittlepony.client.model.part.PonyEars",
|
||||
"content": "minelittlepony:components/ears"
|
||||
}
|
||||
]
|
||||
},
|
||||
"helmet": {
|
||||
"texture": { "u": 32, "v": 0 },
|
||||
"offset": [ 0, -1, -2 ],
|
||||
"center": [ 0, 0, -2 ],
|
||||
"cubes": [
|
||||
{ "from": [-4, -4, -4], "size": [ 8, 8, 8], "stretch": 0.5 }
|
||||
]
|
||||
},
|
||||
"torso": {
|
||||
"texture": { "u": 16, "v": 16 },
|
||||
"cubes": [
|
||||
{ "from": [-4, 4, -2], "size": [ 8, 8, 4] }
|
||||
]
|
||||
},
|
||||
"upper_torso": {
|
||||
"texture": { "u": 24, "v": 0 },
|
||||
"offset": [ 0, 8, 6 ],
|
||||
"cubes": [
|
||||
{
|
||||
"type": "mson:plane", "__comment": "body sides",
|
||||
"texture": { "u": 24, "v": 0 },
|
||||
"face": "east",
|
||||
"position": [ 4, -4, -4 ], "size": [ 8, 8 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "body sides",
|
||||
"texture": { "u": 24, "v": 0 },
|
||||
"mirror": [ false, false, true ],
|
||||
"face": "west",
|
||||
"position": [ -4, -4, -4 ], "size": [ 8, 8 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "cutie mark",
|
||||
"texture": { "u": 4, "v": 0 },
|
||||
"face": "east",
|
||||
"position": [ 4, -4, 4 ], "size": [ 8, 4 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "cutie mark",
|
||||
"texture": { "u": 4, "v": 0 },
|
||||
"mirror": [ false, false, true ],
|
||||
"face": "east",
|
||||
"position": [ -4, -4, 4 ], "size": [ 8, 4 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "stomach",
|
||||
"texture": { "u": 56, "v": 0 },
|
||||
"face": "down",
|
||||
"position": [ -4, 4, -4 ],
|
||||
"size": [ 8, 8 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "butt",
|
||||
"texture": { "u": 36, "v": 16 },
|
||||
"face": "south",
|
||||
"position": [ -4, -4, 8 ], "size": [ 8, 4 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "butt",
|
||||
"texture": { "u": 36, "v": 16 },
|
||||
"face": "south",
|
||||
"position": [ -4, 0, 8 ],
|
||||
"size": [ 8, 4 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "butt",
|
||||
"texture": { "u": 36, "v": 16 },
|
||||
"face": "down",
|
||||
"position": [ -4, 4, 4 ], "size": [ 8, 4 ]
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "back",
|
||||
"texture": { "u": 32, "v": 20 },
|
||||
"mirror": [ false, false, true ],
|
||||
"face": "up",
|
||||
"position": [ -4, -4, -4 ], "size": [ 8, 12 ]
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "mson:planar",
|
||||
"texture": { "u": 32, "v": 0 },
|
||||
"rotate": [0.5, 0, 0],
|
||||
"up": [-1, 2, 2, 2, 6],
|
||||
"down": [-1, 4, 2, 2, 6],
|
||||
"east": [ 1, 2, 2, 2, 6],
|
||||
"south":[-1, 2, 8, 2, 2],
|
||||
"cubes": [
|
||||
{
|
||||
"type": "mson:plane",
|
||||
"mirror": [ false, false, true ],
|
||||
"face": "west",
|
||||
"position": [ -1, -2, -2 ], "size": [ 2, 6 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"neck": {
|
||||
"type": "mson:planar",
|
||||
"texture": { "u": 0, "v": 16 },
|
||||
"rotate": [0.166, 0, 0],
|
||||
"north": [-2, 1.199998, -2.8, 4, 4],
|
||||
"south": [-2, 1.199998, 1.2, 4, 4],
|
||||
"east": [ 2, 1.199998, -2.8, 4, 4],
|
||||
"west": [-2, 1.199998, -2.8, 4, 4]
|
||||
},
|
||||
"jacket": {
|
||||
"texture": { "u": 16, "v": 32 },
|
||||
"cubes": [
|
||||
{ "from": [-4, 0, -2], "size": [ 8, 12, 4], "stretch": 0.25 },
|
||||
{ "from": [-4, 4, -2], "size": [ 8, 8, 4 ], "stretch": 0.25 }
|
||||
]
|
||||
},
|
||||
"saddle": {
|
||||
"texture": { "u": 24, "v": 0 },
|
||||
"offset": [0, 8, 6],
|
||||
"cubes": [
|
||||
{
|
||||
"type": "mson:plane", "__comment": "body sides a",
|
||||
"texture": { "u": 12, "v": 32 },
|
||||
"face": "east",
|
||||
"position": [ 4, -4, -4 ], "size": [ 4, 8 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "body sides a",
|
||||
"texture": { "u": 12, "v": 32 },
|
||||
"mirror": [ false, false, true ],
|
||||
"face": "west",
|
||||
"position": [ -4, -4, -4 ], "size": [ 4, 8 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "body sides b",
|
||||
"texture": { "u": 12, "v": 48 },
|
||||
"face": "east",
|
||||
"position": [ 4, 0, -4 ], "size": [ 4, 8 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "body sides b",
|
||||
"mirror": [ false, false, true ],
|
||||
"texture": { "u": 12, "v": 48 },
|
||||
"face": "west",
|
||||
"position": [ -4, 0, -4 ], "size": [ 4, 8 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "qt mark a",
|
||||
"texture": { "u": 0, "v": 32 },
|
||||
"face": "east",
|
||||
"position": [ 4, -4, 4 ], "size": [ 4, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "qt mark a",
|
||||
"mirror": [ false, false, true ],
|
||||
"texture": { "u": 0, "v": 32 },
|
||||
"face": "west",
|
||||
"position": [ -4, -4, 4 ], "size": [ 4, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "qt mark b",
|
||||
"texture": { "u": 0, "v": 48 },
|
||||
"face": "east",
|
||||
"position": [ 4, 0, 4 ], "size": [ 4, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "qt mark b",
|
||||
"texture": { "u": 0, "v": 48 },
|
||||
"face": "west",
|
||||
"position": [ -4, 0, 4 ], "size": [ 4, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "stomach a",
|
||||
"texture": { "u": 28, "v": 48 },
|
||||
"face": "down",
|
||||
"position": [ -4, 4, -4 ], "size": [ 8, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "stomach b",
|
||||
"texture": { "u": 44, "v": 48 },
|
||||
"face": "down",
|
||||
"position": [ -4, 4, 0 ], "size": [ 8, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "stomach c",
|
||||
"texture": { "u": 36, "v": 32 },
|
||||
"face": "down",
|
||||
"position": [ -4, 4, 4 ], "size": [ 8, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "butt",
|
||||
"texture": { "u": 36, "v": 32 },
|
||||
"face": "south",
|
||||
"position": [ -4, -4, 8 ], "size": [ 8, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "butt",
|
||||
"texture": { "u": 36, "v": 32 },
|
||||
"face": "south",
|
||||
"position": [ -4, 0, 8 ], "size": [ 8, 4 ], "stretch": 0.25
|
||||
},
|
||||
{
|
||||
"type": "mson:plane", "__comment": "back",
|
||||
"texture": { "u": 32, "v": 36 },
|
||||
"face": "up",
|
||||
"position": [ -4, -4, -4 ], "size": [ 8, 12 ], "stretch": 0.25
|
||||
}
|
||||
]
|
||||
},
|
||||
"tail": {
|
||||
"type": "mson:slot",
|
||||
"name": "tail",
|
||||
"implementation": "com.minelittlepony.client.model.part.PonyTail",
|
||||
"content": "minelittlepony:components/tail"
|
||||
},
|
||||
"right_arm": {
|
||||
"center": ["#arm_rotation_x_neg", "#arm_rotation_y", 0],
|
||||
"texture": { "u": 40, "v": 16 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"left_arm": {
|
||||
"center": ["#arm_rotation_x", "#arm_rotation_y", 0],
|
||||
"texture": { "u": 32, "v": 48 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"right_leg": {
|
||||
"center": ["#arm_rotation_x_neg", 0, 0],
|
||||
"texture": { "u": 0, "v": 16 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"left_leg": {
|
||||
"center": ["#arm_rotation_x", 0, 0],
|
||||
"texture": { "u": 16, "v": 48 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"right_sleeve": {
|
||||
"center": ["#arm_rotation_x_neg", "#arm_rotation_y", 0],
|
||||
"texture": { "u": 40, "v": 32 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ],
|
||||
"stretch": 0.25
|
||||
}
|
||||
]
|
||||
},
|
||||
"left_sleeve": {
|
||||
"center": ["#arm_rotation_x", "#arm_rotation_y", 0],
|
||||
"texture": { "u": 48, "v": 48 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ],
|
||||
"stretch": 0.25
|
||||
}
|
||||
]
|
||||
},
|
||||
"right_pant_leg": {
|
||||
"center": ["#arm_rotation_x_neg", 0, 0],
|
||||
"texture": { "u": 0, "v": 32 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ],
|
||||
"stretch": 0.25
|
||||
}
|
||||
]
|
||||
},
|
||||
"left_pant_leg": {
|
||||
"center": ["#arm_rotation_x", 0, 0],
|
||||
"texture": { "u": 0, "v": 48 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ],
|
||||
"stretch": 0.25
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"parent": "minelittlepony:steve_pony",
|
||||
"scale": 0.25,
|
||||
"chestpiece": {
|
||||
"texture": {"u": 16, "v": 8},
|
||||
"cubes": [
|
||||
{"from": [-4, 4, -2], "size": [8, 8, 16]}
|
||||
]
|
||||
},
|
||||
"head": {
|
||||
"offset": [ 0, -1, -2 ],
|
||||
"center": [ 0, 0, -2 ],
|
||||
"cubes": [
|
||||
{ "from": [-4, -4, -4], "size": [ 8, 8, 8] },
|
||||
{ "from": [-4, -6, -1], "size": [ 2, 2, 2], "texture": {"u": 0, "v": 0}, "stretch": -0.125 },
|
||||
{ "from": [ 2, -6, -1], "size": [ 2, 2, 2], "texture": {"u": 0, "v": 4}, "stretch": -0.125 }
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "mson:slot",
|
||||
"name": "snout",
|
||||
"implementation": "com.minelittlepony.client.model.part.PonySnout",
|
||||
"content": "minelittlepony:components/snout"
|
||||
},
|
||||
{
|
||||
"type": "mson:slot",
|
||||
"name": "ears",
|
||||
"implementation": "com.minelittlepony.client.model.part.PonyEars",
|
||||
"content": "minelittlepony:components/ears"
|
||||
}
|
||||
]
|
||||
},
|
||||
"upper_torso": {
|
||||
"type": "mson:planar",
|
||||
"texture": {"u": 24, "v": 0},
|
||||
"offset": [0, 8, 6],
|
||||
"east": [4, -4, -4, 8, 8, 32, 32],
|
||||
"west": [-4, -4, -4, 8, 8, 32, 23],
|
||||
"south": [-4, -4, 4, 8, 8, 32, 23],
|
||||
"up": [-4, -4, -8, 8, 12, 32, 23],
|
||||
"__comment": "it's a little short, so the butt tends to show. :/"
|
||||
},
|
||||
"right_arm": {
|
||||
"center": ["#arm_rotation_x_neg", "#arm_rotation_y", 0],
|
||||
"texture": { "u": 0, "v": 16 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"left_arm": {
|
||||
"center": ["#arm_rotation_x", "#arm_rotation_y", 0],
|
||||
"mirror": true,
|
||||
"texture": { "u": 0, "v": 16 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"right_leg": {
|
||||
"center": ["#arm_rotation_x_neg", 0, 0],
|
||||
"texture": { "u": 48, "v": 8 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"left_leg": {
|
||||
"center": ["#arm_rotation_x", 0, 0],
|
||||
"mirror": true,
|
||||
"texture": { "u": 48, "v": 8 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"steve_right_leg": {
|
||||
"center": ["#arm_rotation_x_neg", 0, 0],
|
||||
"texture": { "u": 0, "v": 16 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x_neg", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"steve_left_leg": {
|
||||
"center": ["#arm_rotation_x", 0, 0],
|
||||
"mirror": true,
|
||||
"texture": { "u": 0, "v": 16 },
|
||||
"cubes": [
|
||||
{
|
||||
"from": [ "#arm_x", 4, "#arm_z"],
|
||||
"size": [ "#arm_width", "#arm_length", "#arm_depth" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"parent": "minelittlepony:armour_inner",
|
||||
"scale": 0.125
|
||||
}
|
Loading…
Reference in a new issue