Fixed hat layers sometimes not appearing

This commit is contained in:
Sollace 2019-12-13 00:17:26 +02:00
parent b71e95b8de
commit c810a1fb3f
2 changed files with 21 additions and 7 deletions

View file

@ -16,8 +16,10 @@ import com.minelittlepony.mson.api.ModelKey;
import com.minelittlepony.pony.IPony; import com.minelittlepony.pony.IPony;
import com.minelittlepony.pony.meta.Race; import com.minelittlepony.pony.meta.Race;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.render.entity.EntityRenderDispatcher;
import net.minecraft.client.render.entity.feature.FeatureRenderer; import net.minecraft.client.render.entity.feature.FeatureRenderer;
import net.minecraft.client.render.entity.model.PlayerEntityModel;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@ -47,8 +49,10 @@ class DummyPonyRenderer extends DummyPlayerRenderer<DummyPony, ClientPonyModel<D
} }
@Override @Override
protected void scale(DummyPony entity, MatrixStack stack, float ticks) { protected void scale(DummyPony entity, MatrixStack stack, float tickDelta) {
manager.preRenderCallback(entity, stack, ticks); if (getModel() instanceof PlayerEntityModel) {
((PlayerEntityModel<?>)getModel()).setVisible(true);
}
if (entity.isSwimming()) { if (entity.isSwimming()) {
if (entity.getVelocity().x < 100) { if (entity.getVelocity().x < 100) {
@ -60,11 +64,17 @@ class DummyPonyRenderer extends DummyPlayerRenderer<DummyPony, ClientPonyModel<D
model.getAttributes().motionPitch = 0; model.getAttributes().motionPitch = 0;
} }
if (entity.hasVehicle()) { if (getModel().getAttributes().isSitting) {
stack.translate(0, entity.getHeightOffset(), 0); stack.translate(0, entity.getHeightOffset(), 0);
} }
} }
@Override
public void render(DummyPony entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) {
manager.preRenderCallback(entity, stack, tickDelta);
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
}
@Override @Override
public ClientPonyModel<DummyPony> getEntityModel(DummyPony playermodel) { public ClientPonyModel<DummyPony> getEntityModel(DummyPony playermodel) {
Identifier loc = getTexture(playermodel); Identifier loc = getTexture(playermodel);

View file

@ -32,6 +32,7 @@ import net.minecraft.client.render.entity.EntityRenderDispatcher;
import net.minecraft.client.render.entity.PlayerEntityRenderer; import net.minecraft.client.render.entity.PlayerEntityRenderer;
import net.minecraft.client.render.entity.feature.FeatureRenderer; import net.minecraft.client.render.entity.feature.FeatureRenderer;
import net.minecraft.client.render.entity.feature.StuckArrowsFeatureRenderer; import net.minecraft.client.render.entity.feature.StuckArrowsFeatureRenderer;
import net.minecraft.client.render.entity.model.PlayerEntityModel;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f; import net.minecraft.client.util.math.Vector3f;
import net.minecraft.util.Arm; import net.minecraft.util.Arm;
@ -70,16 +71,19 @@ public class PlayerPonyRenderer extends PlayerEntityRenderer implements IPonyRen
} }
@Override @Override
protected void scale(AbstractClientPlayerEntity player, MatrixStack stack, float ticks) { protected void scale(AbstractClientPlayerEntity entity, MatrixStack stack, float tickDelta) {
manager.preRenderCallback(player, stack, ticks); if (getModel() instanceof PlayerEntityModel) {
((PlayerEntityModel<?>)getModel()).setVisible(true);
}
if (player.hasVehicle()) { if (manager.getModel().getAttributes().isSitting) {
stack.translate(0, player.getHeightOffset(), 0); stack.translate(0, entity.getHeightOffset(), 0);
} }
} }
@Override @Override
public void render(AbstractClientPlayerEntity entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) { public void render(AbstractClientPlayerEntity entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) {
manager.preRenderCallback(entity, stack, tickDelta);
shadowSize = manager.getShadowScale(); shadowSize = manager.getShadowScale();
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv); super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);