Port armour to mson

This commit is contained in:
Sollace 2019-11-27 13:13:43 +02:00
parent 145d8f41a3
commit d3759af4f3
9 changed files with 171 additions and 415 deletions

View file

@ -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

View file

@ -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);

View file

@ -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 {

View file

@ -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

View file

@ -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;
}

View file

@ -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) {

View file

@ -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
}
]
}
}

View file

@ -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" ]
}
]
}
}

View file

@ -0,0 +1,4 @@
{
"parent": "minelittlepony:armour_inner",
"scale": 0.125
}