mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2024-11-22 20:47:59 +01:00
Adjust ponies riding posture to be less propane
This commit is contained in:
parent
ff57ec8e40
commit
46c4244b7e
5 changed files with 68 additions and 5 deletions
|
@ -97,7 +97,11 @@ public class PonyRenderManager {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Nullable
|
@Nullable
|
||||||
public <T extends EntityLivingBase, R extends RenderLivingBase<T> & IRenderPony<T>> R getPonyRenderer(T entity) {
|
public <T extends EntityLivingBase, R extends RenderLivingBase<T> & IRenderPony<T>> R getPonyRenderer(@Nullable Entity entity) {
|
||||||
|
if (entity == null || !(entity instanceof EntityLivingBase)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Render<Entity> renderer = Minecraft.getMinecraft().getRenderManager().getEntityRenderObject(entity);
|
Render<Entity> renderer = Minecraft.getMinecraft().getRenderManager().getEntityRenderObject(entity);
|
||||||
|
|
||||||
if (renderer instanceof RenderLivingBase && renderer instanceof IRenderPony) {
|
if (renderer instanceof RenderLivingBase && renderer instanceof IRenderPony) {
|
||||||
|
|
|
@ -29,7 +29,7 @@ public interface IRenderPony<T extends EntityLivingBase> {
|
||||||
if (!passengerPony.getRace(false).isHuman()) {
|
if (!passengerPony.getRace(false).isHuman()) {
|
||||||
float yaw = MathUtil.interpolateDegress(entity.prevRenderYawOffset, entity.renderYawOffset, ticks);
|
float yaw = MathUtil.interpolateDegress(entity.prevRenderYawOffset, entity.renderYawOffset, ticks);
|
||||||
|
|
||||||
GlStateManager.translate(0, 0, 0.8F);
|
GlStateManager.translate(0, 0, 0.3F);
|
||||||
|
|
||||||
getInternalRenderer().applyPostureRiding(entity, entity.ticksExisted + ticks, yaw, ticks);
|
getInternalRenderer().applyPostureRiding(entity, entity.ticksExisted + ticks, yaw, ticks);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel, P
|
||||||
public boolean isFlying;
|
public boolean isFlying;
|
||||||
public boolean isElytraFlying;
|
public boolean isElytraFlying;
|
||||||
public boolean isSwimming;
|
public boolean isSwimming;
|
||||||
|
public boolean isRidingInteractive;
|
||||||
public boolean headGear;
|
public boolean headGear;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -84,6 +85,7 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel, P
|
||||||
isElytraFlying = entity.isElytraFlying();
|
isElytraFlying = entity.isElytraFlying();
|
||||||
isSwimming = pony.isSwimming(entity);
|
isSwimming = pony.isSwimming(entity);
|
||||||
headGear = pony.isWearingHeadgear(entity);
|
headGear = pony.isWearingHeadgear(entity);
|
||||||
|
isRidingInteractive = pony.isRidingInteractive(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,6 +139,27 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel, P
|
||||||
|
|
||||||
bipedLeftArm.rotateAngleZ = -PI * 0.06f;
|
bipedLeftArm.rotateAngleZ = -PI * 0.06f;
|
||||||
bipedRightArm.rotateAngleZ = PI * 0.06f;
|
bipedRightArm.rotateAngleZ = PI * 0.06f;
|
||||||
|
|
||||||
|
if (isRidingInteractive) {
|
||||||
|
bipedLeftLeg.rotateAngleY = PI / 15;
|
||||||
|
bipedLeftLeg.rotateAngleX = PI / 9;
|
||||||
|
|
||||||
|
bipedLeftLeg.rotationPointZ = 10;
|
||||||
|
bipedLeftLeg.rotationPointY = 7;
|
||||||
|
|
||||||
|
bipedRightLeg.rotateAngleY = -PI / 15;
|
||||||
|
bipedRightLeg.rotateAngleX = PI / 9;
|
||||||
|
|
||||||
|
bipedRightLeg.rotationPointZ = 10;
|
||||||
|
bipedRightLeg.rotationPointY = 7;
|
||||||
|
|
||||||
|
|
||||||
|
bipedLeftArm.rotateAngleX = PI / 6;
|
||||||
|
bipedRightArm.rotateAngleX = PI / 6;
|
||||||
|
|
||||||
|
bipedLeftArm.rotateAngleZ *= 2;
|
||||||
|
bipedRightArm.rotateAngleZ *= 2;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
adjustBody(BODY_ROT_X_NOTSNEAK, BODY_RP_Y_NOTSNEAK, BODY_RP_Z_NOTSNEAK);
|
adjustBody(BODY_ROT_X_NOTSNEAK, BODY_RP_Y_NOTSNEAK, BODY_RP_Z_NOTSNEAK);
|
||||||
|
|
||||||
|
@ -163,9 +186,17 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel, P
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void adjustBodyRiding() {
|
protected void adjustBodyRiding() {
|
||||||
adjustBodyComponents(BODY_ROT_X_RIDING, BODY_RP_Y_RIDING, BODY_RP_Z_RIDING);
|
if (isRidingInteractive) {
|
||||||
adjustNeck(BODY_ROT_X_NOTSNEAK, BODY_RP_Y_NOTSNEAK, BODY_RP_Z_NOTSNEAK);
|
adjustBodyComponents(BODY_ROT_X_RIDING * 2, BODY_RP_Y_RIDING, BODY_RP_Z_RIDING);
|
||||||
setHead(0, 0, 0);
|
adjustNeck(BODY_ROT_X_NOTSNEAK * 2, BODY_RP_Y_NOTSNEAK, BODY_RP_Z_NOTSNEAK - 4);
|
||||||
|
setHead(0, -2, -5);
|
||||||
|
} else {
|
||||||
|
adjustBodyComponents(BODY_ROT_X_RIDING, BODY_RP_Y_RIDING, BODY_RP_Z_RIDING);
|
||||||
|
adjustNeck(BODY_ROT_X_NOTSNEAK, BODY_RP_Y_NOTSNEAK, BODY_RP_Z_NOTSNEAK);
|
||||||
|
setHead(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,6 +51,18 @@ public interface IPony {
|
||||||
*/
|
*/
|
||||||
PonyRace getRace(boolean ignorePony);
|
PonyRace getRace(boolean ignorePony);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if an entity is riding a pony or other sentient life-form.
|
||||||
|
*
|
||||||
|
* Boats do not count.
|
||||||
|
*/
|
||||||
|
boolean isRidingInteractive(EntityLivingBase entity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pony this entity is currently riding if any.
|
||||||
|
*/
|
||||||
|
IPony getMountedPony(EntityLivingBase entity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the texture used for rendering this pony.
|
* Gets the texture used for rendering this pony.
|
||||||
* @return
|
* @return
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.minelittlepony.pony.data;
|
||||||
import com.google.common.base.MoreObjects;
|
import com.google.common.base.MoreObjects;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.minelittlepony.MineLittlePony;
|
import com.minelittlepony.MineLittlePony;
|
||||||
|
import com.minelittlepony.ducks.IRenderPony;
|
||||||
import com.voxelmodpack.hdskins.resources.texture.IBufferedTexture;
|
import com.voxelmodpack.hdskins.resources.texture.IBufferedTexture;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
@ -10,6 +11,7 @@ import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.texture.ITextureObject;
|
import net.minecraft.client.renderer.texture.ITextureObject;
|
||||||
import net.minecraft.client.renderer.texture.TextureUtil;
|
import net.minecraft.client.renderer.texture.TextureUtil;
|
||||||
import net.minecraft.client.resources.IResource;
|
import net.minecraft.client.resources.IResource;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
@ -146,6 +148,20 @@ public class Pony implements IPony {
|
||||||
return metadata;
|
return metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRidingInteractive(EntityLivingBase entity) {
|
||||||
|
return MineLittlePony.getInstance().getRenderManager().getPonyRenderer(entity.getRidingEntity()) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPony getMountedPony(EntityLivingBase entity) {
|
||||||
|
Entity mount = entity.getRidingEntity();
|
||||||
|
|
||||||
|
IRenderPony<EntityLivingBase> render = MineLittlePony.getInstance().getRenderManager().getPonyRenderer(mount);
|
||||||
|
|
||||||
|
return render == null ? null : render.getEntityPony((EntityLivingBase)mount);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return MoreObjects.toStringHelper(this)
|
return MoreObjects.toStringHelper(this)
|
||||||
|
|
Loading…
Reference in a new issue