From 12600fff3d851b4f87740226e6e290d3c159d791 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 2 Jun 2018 19:41:48 +0200 Subject: [PATCH] Fixed villagers flapping their wings whilst in a boat (RenderPonyMob and RenderPonyBase can be merged some time in the future) --- .../com/minelittlepony/pony/data/Pony.java | 10 ++++----- .../minelittlepony/render/RenderPonyMob.java | 22 ++++++++++++++----- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/minelittlepony/pony/data/Pony.java b/src/main/java/com/minelittlepony/pony/data/Pony.java index 7d17eb5f..cdcbf8b1 100644 --- a/src/main/java/com/minelittlepony/pony/data/Pony.java +++ b/src/main/java/com/minelittlepony/pony/data/Pony.java @@ -10,7 +10,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.ITextureObject; import net.minecraft.client.renderer.texture.TextureUtil; import net.minecraft.client.resources.IResource; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; import java.awt.image.BufferedImage; @@ -96,11 +96,9 @@ public class Pony { return PonyData.parse(bufferedimage); } - public boolean isPegasusFlying(EntityPlayer player) { - //noinspection SimplifiableIfStatement - if (!getRace(false).hasWings()) return false; - - return player.capabilities.isFlying || !(player.onGround || player.isRiding() || player.isOnLadder() || player.isInWater()); + public boolean isPegasusFlying(EntityLivingBase entity) { + return getRace(false).hasWings() && + !(entity.onGround || entity.isRiding() || entity.isOnLadder() || entity.isInWater()); } public ModelWrapper getModel(boolean ignorePony) { diff --git a/src/main/java/com/minelittlepony/render/RenderPonyMob.java b/src/main/java/com/minelittlepony/render/RenderPonyMob.java index cc3382c6..fd9a0944 100644 --- a/src/main/java/com/minelittlepony/render/RenderPonyMob.java +++ b/src/main/java/com/minelittlepony/render/RenderPonyMob.java @@ -2,7 +2,9 @@ package com.minelittlepony.render; import com.minelittlepony.MineLittlePony; import com.minelittlepony.ducks.IRenderPony; +import com.minelittlepony.model.AbstractPonyModel; import com.minelittlepony.model.ModelWrapper; +import com.minelittlepony.pony.data.Pony; import com.minelittlepony.render.layer.LayerHeldPonyItem; import com.minelittlepony.render.layer.LayerHeldPonyItemMagical; import com.minelittlepony.render.layer.LayerPonyArmor; @@ -23,9 +25,14 @@ public abstract class RenderPonyMob extends RenderLiving protected ModelWrapper playerModel; + protected AbstractPonyModel ponyModel; + + private Pony pony; + public RenderPonyMob(RenderManager manager, ModelWrapper model) { super(manager, model.getModel(), 0.5F); playerModel = model; + ponyModel = playerModel.getModel(); addLayers(); } @@ -52,13 +59,13 @@ public abstract class RenderPonyMob extends RenderLiving @Override protected void preRenderCallback(T entity, float ticks) { - playerModel.getModel().isSneak = entity.isSneaking(); - playerModel.getModel().isFlying = !entity.onGround || entity.isElytraFlying(); - playerModel.getModel().isSleeping = false; + updateModel(entity); - ResourceLocation loc = getEntityTexture(entity); - playerModel.apply(MineLittlePony.getInstance().getManager().getPony(loc, false).getMetadata()); + ponyModel.isSneak = entity.isSneaking(); + ponyModel.isSleeping = entity.isPlayerSleeping(); + ponyModel.isFlying = pony.isPegasusFlying(entity); + super.preRenderCallback(entity, ticks); shadowSize = getShadowScale(); float s = getScaleFactor(); @@ -88,6 +95,11 @@ public abstract class RenderPonyMob extends RenderLiving return playerModel; } + protected void updateModel(T entity) { + pony = MineLittlePony.getInstance().getManager().getPony(getEntityTexture(entity), false); + playerModel.apply(pony.getMetadata()); + } + @Override @Nonnull protected final ResourceLocation getEntityTexture(T entity) {