mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-02-17 01:54:22 +01:00
Some more tidying up
This commit is contained in:
parent
b410b988a2
commit
2b154d2441
9 changed files with 79 additions and 63 deletions
|
@ -10,6 +10,7 @@ import net.minecraft.client.model.ModelPlayer;
|
|||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.util.EnumHandSide;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import java.util.Random;
|
||||
|
@ -80,6 +81,10 @@ public abstract class AbstractPonyModel extends ModelPlayer {
|
|||
}
|
||||
}
|
||||
|
||||
public ArmPose getArmPoseForSide(EnumHandSide side) {
|
||||
return side == EnumHandSide.RIGHT ? rightArmPose : leftArmPose;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the default minecraft handling should be used.
|
||||
*/
|
||||
|
|
|
@ -71,6 +71,6 @@ public class ModelIllagerPony extends ModelPlayerPony {
|
|||
}
|
||||
|
||||
public ModelRenderer getArm(EnumHandSide side) {
|
||||
return metadata.hasMagic() ? side == EnumHandSide.LEFT ? unicornArmLeft : unicornArmRight : getArmForSide(side);
|
||||
return metadata.hasMagic() ? getUnicornArmForSide(side) : getArmForSide(side);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -321,13 +321,11 @@ public class ModelPlayerPony extends AbstractPonyModel {
|
|||
protected void swingItem(Entity entity, float swingProgress) {
|
||||
if (swingProgress > -9990.0F && !isSleeping) {
|
||||
EnumHandSide mainSide = getMainHand(entity);
|
||||
boolean mainRight = mainSide == EnumHandSide.RIGHT;
|
||||
ArmPose mainPose = mainRight ? rightArmPose : leftArmPose;
|
||||
|
||||
if (mainPose == ArmPose.EMPTY) return;
|
||||
if (getArmPoseForSide(mainSide) == ArmPose.EMPTY) return;
|
||||
|
||||
if (metadata.hasMagic()) {
|
||||
swingArm(mainRight ? unicornArmRight : unicornArmLeft);
|
||||
swingArm(getUnicornArmForSide(mainSide));
|
||||
} else {
|
||||
swingArm(getArmForSide(mainSide));
|
||||
}
|
||||
|
@ -348,10 +346,12 @@ public class ModelPlayerPony extends AbstractPonyModel {
|
|||
}
|
||||
|
||||
protected void swingArms(float tick) {
|
||||
if (isSleeping) return;
|
||||
|
||||
float cos = MathHelper.cos(tick * 0.09F) * 0.05F + 0.05F;
|
||||
float sin = MathHelper.sin(tick * 0.067F) * 0.05F;
|
||||
|
||||
if (rightArmPose != ArmPose.EMPTY && !isSleeping) {
|
||||
if (rightArmPose != ArmPose.EMPTY) {
|
||||
|
||||
if (metadata.hasMagic()) {
|
||||
unicornArmRight.rotateAngleZ += cos;
|
||||
|
@ -361,7 +361,8 @@ public class ModelPlayerPony extends AbstractPonyModel {
|
|||
bipedRightArm.rotateAngleX += sin;
|
||||
}
|
||||
}
|
||||
if (leftArmPose != ArmPose.EMPTY && !isSleeping) {
|
||||
|
||||
if (leftArmPose != ArmPose.EMPTY) {
|
||||
if (metadata.hasMagic()) {
|
||||
unicornArmLeft.rotateAngleZ += cos;
|
||||
unicornArmLeft.rotateAngleX += sin;
|
||||
|
@ -391,6 +392,10 @@ public class ModelPlayerPony extends AbstractPonyModel {
|
|||
neck.setRotationPoint(NECK_ROT_X + rotateAngleX, rotationPointY, rotationPointZ);
|
||||
}
|
||||
|
||||
public PonyRenderer getUnicornArmForSide(EnumHandSide side) {
|
||||
return side == EnumHandSide.LEFT ? unicornArmLeft : unicornArmRight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aligns legs to a sneaky position.
|
||||
*/
|
||||
|
@ -659,11 +664,8 @@ public class ModelPlayerPony extends AbstractPonyModel {
|
|||
bipedRightLegwear.setRotationPoint(-3, yOffset, 0);
|
||||
}
|
||||
|
||||
unicornArmLeft .addBox(FIRSTP_ARM_CENTRE_X - 2, armY, armZ, 4, 12, 4, stretch + .25f);
|
||||
unicornArmRight.addBox(FIRSTP_ARM_CENTRE_X - 2, armY, armZ, 4, 12, 4, stretch + .25f);
|
||||
|
||||
unicornArmLeft .setRotationPoint(5, yOffset + 2, 0);
|
||||
unicornArmRight.setRotationPoint(-5, yOffset + 2, 0);
|
||||
unicornArmLeft .box(FIRSTP_ARM_CENTRE_X - 2, armY, armZ, 4, 12, 4, stretch + .25f).around(5, yOffset + 2, 0);
|
||||
unicornArmRight.box(FIRSTP_ARM_CENTRE_X - 2, armY, armZ, 4, 12, 4, stretch + .25f).around(-5, yOffset + 2, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.minelittlepony.render.layer;
|
||||
|
||||
import com.minelittlepony.ducks.IRenderPony;
|
||||
import com.minelittlepony.model.AbstractPonyModel;
|
||||
import com.minelittlepony.model.ponies.ModelHumanPlayer;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
|
@ -36,6 +38,19 @@ public abstract class AbstractPonyLayer<T extends EntityLivingBase> implements L
|
|||
return renderer;
|
||||
}
|
||||
|
||||
public AbstractPonyModel getPlayerModel() {
|
||||
return ((IRenderPony) getRenderer()).getPlayerModel().getModel();
|
||||
}
|
||||
|
||||
public AbstractPonyModel getPonyModel() {
|
||||
return getMainModel();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <M extends ModelBase> M getMainModel() {
|
||||
return (M)getRenderer().getMainModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldCombineTextures() {
|
||||
return false;
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.minelittlepony.render.layer;
|
|||
|
||||
import com.minelittlepony.ForgeProxy;
|
||||
import com.minelittlepony.model.BodyPart;
|
||||
import com.minelittlepony.model.ponies.ModelPlayerPony;
|
||||
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
|
@ -54,7 +53,6 @@ public class LayerEntityOnPonyShoulder extends AbstractPonyLayer<AbstractClientP
|
|||
GlStateManager.disableRescaleNormal();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
private EntityLivingBase renderShoulderEntity(AbstractClientPlayer player, @Nullable EntityLivingBase entity, NBTTagCompound tag,
|
||||
float move, float swing, float ticks, float age, float headYaw, float headPitch, float scale, boolean left) {
|
||||
|
@ -69,19 +67,19 @@ public class LayerEntityOnPonyShoulder extends AbstractPonyLayer<AbstractClientP
|
|||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
ModelPlayerPony model = ((ModelPlayerPony) getRenderer().getMainModel());
|
||||
model.transform(BodyPart.BODY);
|
||||
getPonyModel().transform(BodyPart.BODY);
|
||||
|
||||
// render on the haunches
|
||||
GlStateManager.translate(left ? 0.25F : -0.25F, 0.25F, 0.35F);
|
||||
GlStateManager.scale(1, -1, -1);
|
||||
GlStateManager.rotate(5 * (left ? -1 : 1), 0, 0, 1);
|
||||
GlStateManager.rotate(left ? -5 : 5, 0, 0, 1);
|
||||
|
||||
Render<Entity> render = renderManager.getEntityRenderObject(entity);
|
||||
if (render != null) {
|
||||
render.doRender(entity, 0, 0, 0, 0, 0);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ public class LayerHeldItemIllager<T extends AbstractIllager> extends LayerHeldPo
|
|||
|
||||
@Override
|
||||
protected void renderArm(EnumHandSide side) {
|
||||
((ModelIllagerPony) getRenderer().getMainModel()).getArm(side).postRender(0.0625F);
|
||||
((ModelIllagerPony)getPonyModel()).getArm(side).postRender(0.0625F);
|
||||
}
|
||||
|
||||
public boolean shouldRender(T entity) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public class LayerHeldPonyItem<T extends EntityLivingBase> extends AbstractPonyL
|
|||
|
||||
@Override
|
||||
public void doPonyRender(T entity, float move, float swing, float ticks, float age, float headYaw, float headPitch, float scale) {
|
||||
ModelBase model = getRenderer().getMainModel();
|
||||
|
||||
boolean mainRight = entity.getPrimaryHand() == EnumHandSide.RIGHT;
|
||||
|
||||
ItemStack itemMain = entity.getHeldItemMainhand();
|
||||
|
@ -32,6 +32,8 @@ public class LayerHeldPonyItem<T extends EntityLivingBase> extends AbstractPonyL
|
|||
ItemStack right = mainRight ? itemMain : itemOff;
|
||||
|
||||
if (!left.isEmpty() || !right.isEmpty()) {
|
||||
ModelBase model = getRenderer().getMainModel();
|
||||
|
||||
pushMatrix();
|
||||
if (model instanceof AbstractPonyModel) {
|
||||
((AbstractPonyModel) model).transform(BodyPart.LEGS);
|
||||
|
|
|
@ -7,26 +7,19 @@ import static net.minecraft.client.renderer.GlStateManager.pushMatrix;
|
|||
import static net.minecraft.client.renderer.GlStateManager.scale;
|
||||
import static net.minecraft.client.renderer.GlStateManager.translate;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.lwjgl.opengl.GL14;
|
||||
|
||||
import com.minelittlepony.ducks.IRenderItem;
|
||||
import com.minelittlepony.ducks.IRenderPony;
|
||||
import com.minelittlepony.model.AbstractPonyModel;
|
||||
import com.minelittlepony.model.ponies.ModelPlayerPony;
|
||||
import com.minelittlepony.pony.data.IPonyData;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderItem;
|
||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType;
|
||||
import net.minecraft.client.renderer.entity.RenderLivingBase;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumHandSide;
|
||||
|
||||
public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerHeldPonyItem<T> {
|
||||
|
@ -36,7 +29,7 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
|
|||
}
|
||||
|
||||
private boolean isUnicorn() {
|
||||
ModelBase model = getRenderer().getMainModel();
|
||||
ModelBase model = getMainModel();
|
||||
return model instanceof AbstractPonyModel && ((AbstractPonyModel) model).metadata.hasMagic();
|
||||
}
|
||||
|
||||
|
@ -50,8 +43,7 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
|
|||
|
||||
protected void postItemRender(T entity, ItemStack drop, TransformType transform, EnumHandSide hand) {
|
||||
if (isUnicorn()) {
|
||||
IPonyData metadata = ((AbstractPonyModel) getRenderer().getMainModel()).metadata;
|
||||
renderItemGlow(entity, drop, transform, hand, metadata.getGlowColor());
|
||||
renderItemGlow(entity, drop, transform, hand, getPonyModel().metadata.getGlowColor());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -59,11 +51,8 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
|
|||
* Renders the main arm
|
||||
*/
|
||||
protected void renderArm(EnumHandSide side) {
|
||||
AbstractPonyModel thePony = ((IRenderPony) getRenderer()).getPlayerModel().getModel();
|
||||
if (thePony.metadata.hasMagic()) {
|
||||
ModelPlayerPony playerModel = (ModelPlayerPony) thePony;
|
||||
ModelRenderer unicornarm = side == EnumHandSide.LEFT ? playerModel.unicornArmLeft : playerModel.unicornArmRight;
|
||||
unicornarm.postRender(0.0625F);
|
||||
if (isUnicorn()) {
|
||||
this.<ModelPlayerPony>getMainModel().getUnicornArmForSide(side).postRender(0.0625F);
|
||||
} else {
|
||||
super.renderArm(side);
|
||||
}
|
||||
|
@ -72,10 +61,8 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
|
|||
public void renderItemGlow(T entity, ItemStack drop, TransformType transform, EnumHandSide hand, int glowColor) {
|
||||
|
||||
// enchantments mess up the rendering
|
||||
ItemStack drop2 = drop.copy();
|
||||
if (drop2.hasEffect()) {
|
||||
removeEnch(drop2.getTagCompound());
|
||||
}
|
||||
drop = stackWithoutEnchantment(drop);
|
||||
|
||||
float red = (glowColor >> 16 & 255) / 255.0F;
|
||||
float green = (glowColor >> 8 & 255) / 255.0F;
|
||||
float blue = (glowColor & 255) / 255.0F;
|
||||
|
@ -91,9 +78,9 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
|
|||
|
||||
scale(1.1, 1.1, 1.1);
|
||||
|
||||
translate(0, .01, .01);
|
||||
translate(0, 0.01F, 0.01F);
|
||||
renderItem.renderItem(drop, entity, transform, hand == EnumHandSide.LEFT);
|
||||
translate(.01, -.01, -.02);
|
||||
translate(0.01F, -0.01F, -0.02F);
|
||||
renderItem.renderItem(drop, entity, transform, hand == EnumHandSide.LEFT);
|
||||
|
||||
((IRenderItem) renderItem).useTransparency(false);
|
||||
|
@ -103,9 +90,11 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
|
|||
// I hate rendering
|
||||
}
|
||||
|
||||
private void removeEnch(@Nullable NBTTagCompound tag) {
|
||||
if (tag != null) {
|
||||
tag.removeTag("ench");
|
||||
private ItemStack stackWithoutEnchantment(ItemStack original) {
|
||||
ItemStack copy = original.copy();
|
||||
if (copy.isItemEnchanted()) {
|
||||
copy.getTagCompound().removeTag("ench");
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package com.minelittlepony.render.layer;
|
||||
|
||||
import com.minelittlepony.ducks.IRenderPony;
|
||||
import com.minelittlepony.model.AbstractPonyModel;
|
||||
import com.minelittlepony.model.BodyPart;
|
||||
import com.minelittlepony.model.components.PonyElytra;
|
||||
|
||||
|
@ -30,31 +28,16 @@ public class LayerPonyElytra<T extends EntityLivingBase> extends AbstractPonyLay
|
|||
|
||||
@Override
|
||||
public void doPonyRender(@Nonnull T entity, float move, float swing, float ticks, float age, float yaw, float head, float scale) {
|
||||
|
||||
AbstractPonyModel model = ((IRenderPony) getRenderer()).getPlayerModel().getModel();
|
||||
|
||||
ItemStack itemstack = entity.getItemStackFromSlot(EntityEquipmentSlot.CHEST);
|
||||
|
||||
if (itemstack.getItem() == Items.ELYTRA) {
|
||||
GlStateManager.color(1, 1, 1, 1);
|
||||
|
||||
if (entity instanceof AbstractClientPlayer) {
|
||||
|
||||
AbstractClientPlayer player = (AbstractClientPlayer) entity;
|
||||
if (player.isPlayerInfoSet() && player.getLocationElytra() != null) {
|
||||
getRenderer().bindTexture(player.getLocationElytra());
|
||||
} else if (player.hasPlayerInfo() && player.getLocationCape() != null && player.isWearing(EnumPlayerModelParts.CAPE)) {
|
||||
getRenderer().bindTexture(player.getLocationCape());
|
||||
} else {
|
||||
getRenderer().bindTexture(TEXTURE_ELYTRA);
|
||||
}
|
||||
} else {
|
||||
getRenderer().bindTexture(TEXTURE_ELYTRA);
|
||||
}
|
||||
getRenderer().bindTexture(getElytraTexture(entity));
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translate(0, 0.25F, 0.125F);
|
||||
model.transform(BodyPart.BODY);
|
||||
getPlayerModel().transform(BodyPart.BODY);
|
||||
modelElytra.setRotationAngles(move, swing, age, yaw, head, scale, entity);
|
||||
modelElytra.render(entity, move, swing, age, yaw, head, scale);
|
||||
|
||||
|
@ -66,6 +49,28 @@ public class LayerPonyElytra<T extends EntityLivingBase> extends AbstractPonyLay
|
|||
}
|
||||
}
|
||||
|
||||
protected ResourceLocation getElytraTexture(T entity) {
|
||||
if (entity instanceof AbstractClientPlayer) {
|
||||
AbstractClientPlayer player = (AbstractClientPlayer) entity;
|
||||
|
||||
ResourceLocation result;
|
||||
|
||||
if (player.isPlayerInfoSet()) {
|
||||
result = player.getLocationElytra();
|
||||
|
||||
if (result != null) return result;
|
||||
}
|
||||
|
||||
if (player.hasPlayerInfo() && player.isWearing(EnumPlayerModelParts.CAPE)) {
|
||||
result = player.getLocationCape();
|
||||
|
||||
if (result != null) return result;
|
||||
}
|
||||
}
|
||||
|
||||
return TEXTURE_ELYTRA;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldCombineTextures() {
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue