Slight refactor

This commit is contained in:
Sollace 2019-11-29 17:26:19 +02:00
parent facb3e6ab0
commit d4fa867884
25 changed files with 106 additions and 115 deletions

View file

@ -8,7 +8,7 @@ import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.entity.race.PlayerModels; import com.minelittlepony.client.model.entity.race.PlayerModels;
import com.minelittlepony.client.render.LevitatingItemRenderer; import com.minelittlepony.client.render.LevitatingItemRenderer;
import com.minelittlepony.client.render.entity.MobRenderers; import com.minelittlepony.client.render.entity.MobRenderers;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -94,15 +94,15 @@ public class PonyRenderManager {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Nullable @Nullable
public <T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> IPonyRender<T, M> getPonyRenderer(@Nullable T entity) { public <T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> IPonyRenderContext<T, M> getPonyRenderer(@Nullable T entity) {
if (entity == null) { if (entity == null) {
return null; return null;
} }
EntityRenderer<T> renderer = (EntityRenderer<T>)MinecraftClient.getInstance().getEntityRenderManager().getRenderer(entity); EntityRenderer<T> renderer = (EntityRenderer<T>)MinecraftClient.getInstance().getEntityRenderManager().getRenderer(entity);
if (renderer instanceof IPonyRender) { if (renderer instanceof IPonyRenderContext) {
return (IPonyRender<T, M>) renderer; return (IPonyRenderContext<T, M>) renderer;
} }
return null; return null;

View file

@ -4,8 +4,8 @@ import com.minelittlepony.client.MineLittlePony;
import com.minelittlepony.client.model.ClientPonyModel; import com.minelittlepony.client.model.ClientPonyModel;
import com.minelittlepony.client.model.ModelType; import com.minelittlepony.client.model.ModelType;
import com.minelittlepony.client.model.ModelWrapper; import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.client.render.RenderPony; import com.minelittlepony.client.render.EquineRenderManager;
import com.minelittlepony.client.render.entity.feature.LayerGear; import com.minelittlepony.client.render.entity.feature.LayerGear;
import com.minelittlepony.client.render.entity.feature.LayerHeldPonyItemMagical; import com.minelittlepony.client.render.entity.feature.LayerHeldPonyItemMagical;
import com.minelittlepony.client.render.entity.feature.LayerPonyArmor; import com.minelittlepony.client.render.entity.feature.LayerPonyArmor;
@ -24,22 +24,21 @@ import net.minecraft.util.Identifier;
/** /**
* Renderer used for the dummy pony model when selecting a skin. * Renderer used for the dummy pony model when selecting a skin.
*/ */
class DummyPonyRenderer extends DummyPlayerRenderer<DummyPony, ClientPonyModel<DummyPony>> implements IPonyRender<DummyPony, ClientPonyModel<DummyPony>> { class DummyPonyRenderer extends DummyPlayerRenderer<DummyPony, ClientPonyModel<DummyPony>> implements IPonyRenderContext<DummyPony, ClientPonyModel<DummyPony>> {
protected final RenderPony<DummyPony, ClientPonyModel<DummyPony>> renderPony = new RenderPony<>(this); protected final EquineRenderManager<DummyPony, ClientPonyModel<DummyPony>> manager = new EquineRenderManager<>(this);
@SuppressWarnings("unchecked") public DummyPonyRenderer(EntityRenderDispatcher dispatcher) {
public DummyPonyRenderer(EntityRenderDispatcher manager) { super(dispatcher, null);
super(manager, null);
addFeature(new LayerGear<>(this)); addFeature(new LayerGear<>(this));
renderPony.setPonyModel((ModelKey<ClientPonyModel<DummyPony>>)(Object)ModelType.EARTH_PONY.getKey(false)); manager.setModel(ModelType.EARTH_PONY.getKey(false));
renderPony.setSkipBlend(); manager.setSkipBlend();
} }
@Override @Override
public ModelWrapper<DummyPony, ClientPonyModel<DummyPony>> getModelWrapper() { public ModelWrapper<DummyPony, ClientPonyModel<DummyPony>> getModelWrapper() {
return renderPony.playerModel; return manager.playerModel;
} }
@Override @Override
@ -49,7 +48,7 @@ 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 ticks) {
renderPony.preRenderCallback(entity, stack, ticks); manager.preRenderCallback(entity, stack, ticks);
if (entity.isSwimming()) { if (entity.isSwimming()) {
if (entity.getVelocity().x < 100) { if (entity.getVelocity().x < 100) {
@ -82,7 +81,7 @@ class DummyPonyRenderer extends DummyPlayerRenderer<DummyPony, ClientPonyModel<D
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
ModelKey<? extends ClientPonyModel<DummyPony>> key = (ModelKey<? extends ClientPonyModel<DummyPony>>)(canWet ? ModelType.SEA_PONY.getKey(slim) : ModelType.getPlayerModel(thePony.getRace(true)).getKey(slim)); ModelKey<? extends ClientPonyModel<DummyPony>> key = (ModelKey<? extends ClientPonyModel<DummyPony>>)(canWet ? ModelType.SEA_PONY.getKey(slim) : ModelType.getPlayerModel(thePony.getRace(true)).getKey(slim));
return renderPony.setPonyModel(key).apply(thePony.getMetadata()).getBody(); return manager.setModel(key).apply(thePony.getMetadata()).getBody();
} }
@Override @Override
@ -106,8 +105,8 @@ class DummyPonyRenderer extends DummyPlayerRenderer<DummyPony, ClientPonyModel<D
} }
@Override @Override
public RenderPony<DummyPony, ClientPonyModel<DummyPony>> getInternalRenderer() { public EquineRenderManager<DummyPony, ClientPonyModel<DummyPony>> getInternalRenderer() {
return renderPony; return manager;
} }
@Override @Override

View file

@ -6,6 +6,7 @@ import com.minelittlepony.model.IModel;
import com.minelittlepony.model.armour.IArmour; import com.minelittlepony.model.armour.IArmour;
import com.minelittlepony.model.armour.IEquestrianArmour; import com.minelittlepony.model.armour.IEquestrianArmour;
import com.minelittlepony.model.capabilities.IModelWrapper; import com.minelittlepony.model.capabilities.IModelWrapper;
import com.minelittlepony.mson.api.ModelKey;
import com.minelittlepony.pony.IPonyData; import com.minelittlepony.pony.IPonyData;
/** /**
@ -20,10 +21,11 @@ public class ModelWrapper<T extends LivingEntity, M extends IModel> implements I
/** /**
* Creates a new model wrapper to contain the given pony. * Creates a new model wrapper to contain the given pony.
*/ */
public ModelWrapper(M model) { @SuppressWarnings("unchecked")
body = model; public ModelWrapper(ModelKey<?> key) {
armor = model.createArmour(); body = (M)key.createModel();
armor.apply(model.getMetadata()); armor = body.createArmour();
armor.apply(body.getMetadata());
} }
public M getBody() { public M getBody() {

View file

@ -2,7 +2,7 @@ package com.minelittlepony.client.pony;
import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects;
import com.minelittlepony.client.PonyRenderManager; import com.minelittlepony.client.PonyRenderManager;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.client.transform.PonyTransformation; import com.minelittlepony.client.transform.PonyTransformation;
import com.minelittlepony.pony.IPony; import com.minelittlepony.pony.IPony;
import com.minelittlepony.pony.IPonyData; import com.minelittlepony.pony.IPonyData;
@ -168,7 +168,7 @@ public class Pony implements IPony {
if (entity.hasVehicle() && entity.getVehicle() instanceof LivingEntity) { if (entity.hasVehicle() && entity.getVehicle() instanceof LivingEntity) {
LivingEntity mount = (LivingEntity) entity.getVehicle(); LivingEntity mount = (LivingEntity) entity.getVehicle();
IPonyRender<LivingEntity, ?> render = PonyRenderManager.getInstance().getPonyRenderer(mount); IPonyRenderContext<LivingEntity, ?> render = PonyRenderManager.getInstance().getPonyRenderer(mount);
return render == null ? null : render.getEntityPony(mount); return render == null ? null : render.getEntityPony(mount);
} }

View file

@ -13,14 +13,9 @@ import net.minecraft.util.shape.VoxelShapes;
import com.minelittlepony.pony.IPony; import com.minelittlepony.pony.IPony;
public class DebugBoundingBoxRenderer { public final class DebugBoundingBoxRenderer {
public static final DebugBoundingBoxRenderer instance = new DebugBoundingBoxRenderer(); public static void render(IPony pony, LivingEntity entity, MatrixStack stack, VertexConsumerProvider renderContext) {
private DebugBoundingBoxRenderer() {
}
public void render(IPony pony, LivingEntity entity, MatrixStack stack, VertexConsumerProvider renderContext) {
MinecraftClient mc = MinecraftClient.getInstance(); MinecraftClient mc = MinecraftClient.getInstance();
if (!mc.getEntityRenderManager().shouldRenderHitboxes() || entity.squaredDistanceTo(mc.player) > 70) { if (!mc.getEntityRenderManager().shouldRenderHitboxes() || entity.squaredDistanceTo(mc.player) > 70) {

View file

@ -21,13 +21,13 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
public class RenderPony<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> { public class EquineRenderManager<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> {
public ModelWrapper<T, M> playerModel; public ModelWrapper<T, M> playerModel;
private IPony pony; private IPony pony;
private final IPonyRender<T, M> renderer; private final IPonyRenderContext<T, M> renderer;
private boolean skipBlend; private boolean skipBlend;
@ -45,7 +45,7 @@ public class RenderPony<T extends LivingEntity, M extends EntityModel<T> & IPony
RenderSystem.disableBlend(); RenderSystem.disableBlend();
} }
public RenderPony(IPonyRender<T, M> renderer) { public EquineRenderManager(IPonyRenderContext<T, M> renderer) {
this.renderer = renderer; this.renderer = renderer;
} }
@ -85,7 +85,7 @@ public class RenderPony<T extends LivingEntity, M extends EntityModel<T> & IPony
if (entity.hasVehicle() && entity.getVehicle() instanceof LivingEntity) { if (entity.hasVehicle() && entity.getVehicle() instanceof LivingEntity) {
LivingEntity ridingEntity = (LivingEntity) entity.getVehicle(); LivingEntity ridingEntity = (LivingEntity) entity.getVehicle();
IPonyRender<LivingEntity, ?> renderer = PonyRenderManager.getInstance().getPonyRenderer(ridingEntity); IPonyRenderContext<LivingEntity, ?> renderer = PonyRenderManager.getInstance().getPonyRenderer(ridingEntity);
if (renderer != null) { if (renderer != null) {
// negate vanilla translations so the rider begins at the ridees feet. // negate vanilla translations so the rider begins at the ridees feet.
@ -133,8 +133,8 @@ public class RenderPony<T extends LivingEntity, M extends EntityModel<T> & IPony
return playerModel.getBody(); return playerModel.getBody();
} }
public ModelWrapper<T, M> setPonyModel(ModelKey<? extends M> model) { public ModelWrapper<T, M> setModel(ModelKey<?> key) {
playerModel = new ModelWrapper<>(model.createModel()); playerModel = new ModelWrapper<>(key);
return playerModel; return playerModel;
} }

View file

@ -13,9 +13,9 @@ public class FrustrumCheck<T extends LivingEntity> extends Frustum {
private Frustum vanilla; private Frustum vanilla;
private final RenderPony<T, ?> renderer; private final EquineRenderManager<T, ?> renderer;
public FrustrumCheck(RenderPony<T, ?> render) { public FrustrumCheck(EquineRenderManager<T, ?> render) {
super(new Matrix4f(), new Matrix4f()); super(new Matrix4f(), new Matrix4f());
renderer = render; renderer = render;
} }

View file

@ -14,7 +14,7 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
public interface IPonyRender<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends PonyModelConstants, IRenderContext<T, M> { public interface IPonyRenderContext<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends PonyModelConstants, IRenderContext<T, M> {
/** /**
* Gets the wrapped pony model for this renderer. * Gets the wrapped pony model for this renderer.
@ -23,7 +23,7 @@ public interface IPonyRender<T extends LivingEntity, M extends EntityModel<T> &
IPony getEntityPony(T entity); IPony getEntityPony(T entity);
RenderPony<T, M> getInternalRenderer(); EquineRenderManager<T, M> getInternalRenderer();
Identifier findTexture(T entity); Identifier findTexture(T entity);
@ -37,7 +37,6 @@ public interface IPonyRender<T extends LivingEntity, M extends EntityModel<T> &
*/ */
default void translateRider(T entity, IPony entityPony, LivingEntity passenger, IPony passengerPony, MatrixStack stack, float ticks) { default void translateRider(T entity, IPony entityPony, LivingEntity passenger, IPony passengerPony, MatrixStack stack, float ticks) {
if (!passengerPony.getRace(false).isHuman()) { if (!passengerPony.getRace(false).isHuman()) {
//float yaw = MathUtil.interpolateDegress(entity.prevRenderYawOffset, entity.renderYawOffset, ticks);
float yaw = MathUtil.interpolateDegress((float)entity.prevRenderY, (float)entity.getY(), ticks); float yaw = MathUtil.interpolateDegress((float)entity.prevRenderY, (float)entity.getY(), ticks);
getModelWrapper().apply(entityPony.getMetadata()); getModelWrapper().apply(entityPony.getMetadata());

View file

@ -1,10 +1,7 @@
package com.minelittlepony.client.render; package com.minelittlepony.client.render;
import org.lwjgl.opengl.GL14;
import com.minelittlepony.client.MineLittlePony; import com.minelittlepony.client.MineLittlePony;
import com.minelittlepony.pony.IPony; import com.minelittlepony.pony.IPony;
import com.minelittlepony.util.math.Color;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View file

@ -5,8 +5,8 @@ import com.minelittlepony.client.model.ClientPonyModel;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.ModelWrapper; import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.render.DebugBoundingBoxRenderer; import com.minelittlepony.client.render.DebugBoundingBoxRenderer;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.client.render.RenderPony; import com.minelittlepony.client.render.EquineRenderManager;
import com.minelittlepony.client.render.entity.feature.LayerGear; import com.minelittlepony.client.render.entity.feature.LayerGear;
import com.minelittlepony.client.render.entity.feature.LayerHeldPonyItem; import com.minelittlepony.client.render.entity.feature.LayerHeldPonyItem;
import com.minelittlepony.client.render.entity.feature.LayerHeldPonyItemMagical; import com.minelittlepony.client.render.entity.feature.LayerHeldPonyItemMagical;
@ -31,15 +31,14 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public abstract class RenderPonyMob<T extends MobEntity, M extends EntityModel<T> & IPonyModel<T>> extends MobEntityRenderer<T, M> implements IPonyRender<T, M> { public abstract class RenderPonyMob<T extends MobEntity, M extends EntityModel<T> & IPonyModel<T>> extends MobEntityRenderer<T, M> implements IPonyRenderContext<T, M> {
protected RenderPony<T, M> renderPony = new RenderPony<>(this); protected EquineRenderManager<T, M> manager = new EquineRenderManager<>(this);
@SuppressWarnings("unchecked") public RenderPonyMob(EntityRenderDispatcher dispatcher, ModelKey<? super M> key) {
public RenderPonyMob(EntityRenderDispatcher manager, ModelKey<? super M> key) { super(dispatcher, null, 0.5F);
super(manager, (M)key.createModel(), 0.5F);
this.model = renderPony.setPonyModel((ModelKey<M>)key).getBody(); this.model = manager.setModel(key).getBody();
addLayers(); addLayers();
} }
@ -63,31 +62,31 @@ public abstract class RenderPonyMob<T extends MobEntity, M extends EntityModel<T
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv); super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
DebugBoundingBoxRenderer.instance.render(renderPony.getPony(entity), entity, stack, renderContext); DebugBoundingBoxRenderer.render(manager.getPony(entity), entity, stack, renderContext);
} }
@Override @Override
protected void setupTransforms(T entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) { protected void setupTransforms(T entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) {
rotationYaw = renderPony.getRenderYaw(entity, rotationYaw, partialTicks); rotationYaw = manager.getRenderYaw(entity, rotationYaw, partialTicks);
super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks); super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks);
renderPony.applyPostureTransform(entity, stack, rotationYaw, partialTicks); manager.applyPostureTransform(entity, stack, rotationYaw, partialTicks);
} }
@Override @Override
public boolean isVisible(T entity, Frustum visibleRegion, double camX, double camY, double camZ) { public boolean isVisible(T entity, Frustum visibleRegion, double camX, double camY, double camZ) {
return super.isVisible(entity, renderPony.getFrustrum(entity, visibleRegion), camX, camY, camZ); return super.isVisible(entity, manager.getFrustrum(entity, visibleRegion), camX, camY, camZ);
} }
@Override @Override
public void scale(T entity, MatrixStack stack, float ticks) { public void scale(T entity, MatrixStack stack, float ticks) {
renderPony.preRenderCallback(entity, stack, ticks); manager.preRenderCallback(entity, stack, ticks);
if (this.getModel() instanceof PlayerEntityModel) { if (this.getModel() instanceof PlayerEntityModel) {
((PlayerEntityModel<?>)getModel()).setVisible(true); ((PlayerEntityModel<?>)getModel()).setVisible(true);
} }
// shadowRadius // shadowRadius
field_4673 = renderPony.getShadowScale(); field_4673 = manager.getShadowScale();
if (entity.isBaby()) { if (entity.isBaby()) {
field_4673 *= 3; // undo vanilla shadow scaling field_4673 *= 3; // undo vanilla shadow scaling
@ -102,12 +101,12 @@ public abstract class RenderPonyMob<T extends MobEntity, M extends EntityModel<T
@Override @Override
public ModelWrapper<T, M> getModelWrapper() { public ModelWrapper<T, M> getModelWrapper() {
return renderPony.playerModel; return manager.playerModel;
} }
@Override @Override
protected void renderLabelIfPresent(T entity, String name, MatrixStack stack, VertexConsumerProvider renderContext, int maxDistance) { protected void renderLabelIfPresent(T entity, String name, MatrixStack stack, VertexConsumerProvider renderContext, int maxDistance) {
stack.translate(0, renderPony.getNamePlateYOffset(entity), 0); stack.translate(0, manager.getNamePlateYOffset(entity), 0);
super.renderLabelIfPresent(entity, name, stack, renderContext, maxDistance); super.renderLabelIfPresent(entity, name, stack, renderContext, maxDistance);
} }
@ -119,8 +118,8 @@ public abstract class RenderPonyMob<T extends MobEntity, M extends EntityModel<T
} }
@Override @Override
public RenderPony<T, M> getInternalRenderer() { public EquineRenderManager<T, M> getInternalRenderer() {
return renderPony; return manager;
} }
@Override @Override

View file

@ -5,8 +5,8 @@ import com.minelittlepony.client.model.ClientPonyModel;
import com.minelittlepony.client.model.ModelWrapper; import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.model.gear.SaddleBags; import com.minelittlepony.client.model.gear.SaddleBags;
import com.minelittlepony.client.render.DebugBoundingBoxRenderer; import com.minelittlepony.client.render.DebugBoundingBoxRenderer;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.client.render.RenderPony; import com.minelittlepony.client.render.EquineRenderManager;
import com.minelittlepony.client.render.entity.feature.LayerDJPon3Head; import com.minelittlepony.client.render.entity.feature.LayerDJPon3Head;
import com.minelittlepony.client.render.entity.feature.LayerEntityOnPonyShoulder; import com.minelittlepony.client.render.entity.feature.LayerEntityOnPonyShoulder;
import com.minelittlepony.client.render.entity.feature.LayerGear; import com.minelittlepony.client.render.entity.feature.LayerGear;
@ -37,14 +37,14 @@ import net.minecraft.util.Arm;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRender<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> { public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRenderContext<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> {
protected final RenderPony<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> renderPony = new RenderPony<>(this); protected final EquineRenderManager<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> manager = new EquineRenderManager<>(this);
public RenderPonyPlayer(EntityRenderDispatcher manager, boolean slim, ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>> key) { public RenderPonyPlayer(EntityRenderDispatcher dispatcher, boolean slim, ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>> key) {
super(manager, slim); super(dispatcher, slim);
this.model = renderPony.setPonyModel(key).getBody(); this.model = manager.setModel(key).getBody();
addLayers(); addLayers();
} }
@ -70,7 +70,7 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
@Override @Override
protected void scale(AbstractClientPlayerEntity player, MatrixStack stack, float ticks) { protected void scale(AbstractClientPlayerEntity player, MatrixStack stack, float ticks) {
renderPony.preRenderCallback(player, stack, ticks); manager.preRenderCallback(player, stack, ticks);
if (player.hasVehicle()) { if (player.hasVehicle()) {
stack.translate(0, player.getHeightOffset(), 0); stack.translate(0, player.getHeightOffset(), 0);
@ -79,17 +79,17 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
@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) {
field_4673 = renderPony.getShadowScale(); field_4673 = manager.getShadowScale();
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv); super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
DebugBoundingBoxRenderer.instance.render(renderPony.getPony(entity), entity, stack, renderContext); DebugBoundingBoxRenderer.render(manager.getPony(entity), entity, stack, renderContext);
// Translate the shadow position after everything is done // Translate the shadow position after everything is done
// (shadows are drawn after us) // (shadows are drawn after us)
// TODO: Get a proper shadow renderer going // TODO: Get a proper shadow renderer going
if (!entity.hasVehicle() && !entity.isSleeping()) { if (!entity.hasVehicle() && !entity.isSleeping()) {
float yaw = MathHelper.lerpAngleDegrees(tickDelta, entity.prevBodyYaw, entity.bodyYaw); float yaw = MathHelper.lerpAngleDegrees(tickDelta, entity.prevBodyYaw, entity.bodyYaw);
float l = entity.getWidth() / 2 * renderPony.getPony(entity).getMetadata().getSize().getScaleFactor(); float l = entity.getWidth() / 2 * manager.getPony(entity).getMetadata().getSize().getScaleFactor();
stack.multiply(Vector3f.NEGATIVE_Y.getDegreesQuaternion(yaw)); stack.multiply(Vector3f.NEGATIVE_Y.getDegreesQuaternion(yaw));
stack.translate(0, 0, -l); stack.translate(0, 0, -l);
@ -102,7 +102,7 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
if (entity.isSleeping() && entity == MinecraftClient.getInstance().player) { if (entity.isSleeping() && entity == MinecraftClient.getInstance().player) {
return true; return true;
} }
return super.isVisible(entity, renderPony.getFrustrum(entity, camera), camX, camY, camZ); return super.isVisible(entity, manager.getFrustrum(entity, camera), camX, camY, camZ);
} }
@Override @Override
@ -114,7 +114,7 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
stack.translate(Math.cos(bedRad), 0, -Math.sin(bedRad)); stack.translate(Math.cos(bedRad), 0, -Math.sin(bedRad));
} }
} }
stack.translate(0, renderPony.getNamePlateYOffset(entity), 0); stack.translate(0, manager.getNamePlateYOffset(entity), 0);
super.renderLabelIfPresent(entity, name, stack, renderContext, maxDistance); super.renderLabelIfPresent(entity, name, stack, renderContext, maxDistance);
} }
@ -129,7 +129,7 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
} }
protected void renderArm(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, AbstractClientPlayerEntity player, Arm side) { protected void renderArm(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, AbstractClientPlayerEntity player, Arm side) {
renderPony.updateModel(player); manager.updateModel(player);
stack.push(); stack.push();
float reflect = side == Arm.LEFT ? 1 : -1; float reflect = side == Arm.LEFT ? 1 : -1;
@ -147,25 +147,25 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
@Override @Override
protected void setupTransforms(AbstractClientPlayerEntity entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) { protected void setupTransforms(AbstractClientPlayerEntity entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) {
rotationYaw = renderPony.getRenderYaw(entity, rotationYaw, partialTicks); rotationYaw = manager.getRenderYaw(entity, rotationYaw, partialTicks);
super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks); super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks);
renderPony.applyPostureTransform(entity, stack, rotationYaw, partialTicks); manager.applyPostureTransform(entity, stack, rotationYaw, partialTicks);
} }
@Override @Override
public Identifier getTexture(AbstractClientPlayerEntity player) { public Identifier getTexture(AbstractClientPlayerEntity player) {
return renderPony.getPony(player).getTexture(); return manager.getPony(player).getTexture();
} }
@Override @Override
public ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> getModelWrapper() { public ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> getModelWrapper() {
return renderPony.playerModel; return manager.playerModel;
} }
@Override @Override
public RenderPony<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> getInternalRenderer() { public EquineRenderManager<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> getInternalRenderer() {
return renderPony; return manager;
} }
@Override @Override
@ -186,6 +186,6 @@ public class RenderPonyPlayer extends PlayerEntityRenderer implements IPonyRende
} }
} }
return IPonyRender.super.getDefaultTexture(entity, wearable); return IPonyRenderContext.super.getDefaultTexture(entity, wearable);
} }
} }

View file

@ -29,7 +29,7 @@ public class RenderSeaponyPlayer extends RenderPonyPlayer {
boolean wet = pony.isPartiallySubmerged(player); boolean wet = pony.isPartiallySubmerged(player);
model = renderPony.setPonyModel(wet ? seapony : normalPony).getBody(); model = manager.setModel(wet ? seapony : normalPony).getBody();
float state = wet ? 100 : 0; float state = wet ? 100 : 0;
float interpolated = pony.getMetadata().getInterpolator(player.getUuid()).interpolate("seapony_state", state, 5); float interpolated = pony.getMetadata().getInterpolator(player.getUuid()).interpolate("seapony_state", state, 5);

View file

@ -2,7 +2,7 @@ package com.minelittlepony.client.render.entity.feature;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.ModelWrapper; import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.feature.FeatureRenderer; import net.minecraft.client.render.entity.feature.FeatureRenderer;
@ -13,10 +13,10 @@ import net.minecraft.entity.LivingEntity;
public abstract class AbstractPonyLayer<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends FeatureRenderer<T, M> { public abstract class AbstractPonyLayer<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends FeatureRenderer<T, M> {
private final IPonyRender<T, M> context; private final IPonyRenderContext<T, M> context;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public AbstractPonyLayer(IPonyRender<T, M> context) { public AbstractPonyLayer(IPonyRenderContext<T, M> context) {
super((FeatureRendererContext<T, M>)context); super((FeatureRendererContext<T, M>)context);
this.context = context; this.context = context;
} }
@ -39,7 +39,7 @@ public abstract class AbstractPonyLayer<T extends LivingEntity, M extends Entity
public abstract void render(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, T entity, float limbDistance, float limbAngle, float tickDelta, float age, float headYaw, float headPitch); public abstract void render(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, T entity, float limbDistance, float limbAngle, float tickDelta, float age, float headYaw, float headPitch);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected <C extends IPonyRender<T, M> & FeatureRendererContext<T, M>> C getContext() { protected <C extends IPonyRenderContext<T, M> & FeatureRendererContext<T, M>> C getContext() {
return (C)context; return (C)context;
} }

View file

@ -9,14 +9,14 @@ import net.minecraft.client.util.math.MatrixStack;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.ModelDeadMau5Ears; import com.minelittlepony.client.model.ModelDeadMau5Ears;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
public class LayerDJPon3Head<T extends AbstractClientPlayerEntity, M extends EntityModel<T> & IPonyModel<T>> extends AbstractPonyLayer<T, M> { public class LayerDJPon3Head<T extends AbstractClientPlayerEntity, M extends EntityModel<T> & IPonyModel<T>> extends AbstractPonyLayer<T, M> {
private final ModelDeadMau5Ears deadMau5 = new ModelDeadMau5Ears(); private final ModelDeadMau5Ears deadMau5 = new ModelDeadMau5Ears();
public LayerDJPon3Head(IPonyRender<T, M> context) { public LayerDJPon3Head(IPonyRenderContext<T, M> context) {
super(context); super(context);
} }

View file

@ -12,14 +12,14 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import com.minelittlepony.client.model.ClientPonyModel; import com.minelittlepony.client.model.ClientPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
public class LayerEntityOnPonyShoulder<T extends PlayerEntity, M extends ClientPonyModel<T>> extends AbstractPonyLayer<T, M> { public class LayerEntityOnPonyShoulder<T extends PlayerEntity, M extends ClientPonyModel<T>> extends AbstractPonyLayer<T, M> {
private final ParrotEntityModel model = new ParrotEntityModel(); private final ParrotEntityModel model = new ParrotEntityModel();
public LayerEntityOnPonyShoulder(IPonyRender<T, M> context) { public LayerEntityOnPonyShoulder(IPonyRenderContext<T, M> context) {
super(context); super(context);
} }

View file

@ -8,13 +8,13 @@ import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
public class LayerEyeGlow<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends EyesFeatureRenderer<T, M> { public class LayerEyeGlow<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends EyesFeatureRenderer<T, M> {
private final RenderLayer layer; private final RenderLayer layer;
public <V extends FeatureRendererContext<T, M> & IPonyRender<T, M> & IGlowingRenderer> LayerEyeGlow(V renderer) { public <V extends FeatureRendererContext<T, M> & IPonyRenderContext<T, M> & IGlowingRenderer> LayerEyeGlow(V renderer) {
super(renderer); super(renderer);
layer = RenderLayer.getEyes(renderer.getEyeTexture()); layer = RenderLayer.getEyes(renderer.getEyeTexture());
} }

View file

@ -10,7 +10,7 @@ import net.minecraft.entity.LivingEntity;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.ModelType; import com.minelittlepony.client.model.ModelType;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
import com.minelittlepony.model.gear.IGear; import com.minelittlepony.model.gear.IGear;
import com.minelittlepony.model.gear.IStackable; import com.minelittlepony.model.gear.IStackable;
@ -24,7 +24,7 @@ public class LayerGear<T extends LivingEntity, M extends EntityModel<T> & IPonyM
private final Map<Wearable, IGear> gears; private final Map<Wearable, IGear> gears;
public LayerGear(IPonyRender<T, M> renderer) { public LayerGear(IPonyRenderContext<T, M> renderer) {
super(renderer); super(renderer);
gears = ModelType.getWearables().collect(Collectors.toMap( gears = ModelType.getWearables().collect(Collectors.toMap(

View file

@ -6,11 +6,11 @@ import net.minecraft.entity.mob.IllagerEntity;
import net.minecraft.util.Arm; import net.minecraft.util.Arm;
import com.minelittlepony.client.model.entity.race.ModelAlicorn; import com.minelittlepony.client.model.entity.race.ModelAlicorn;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
public class LayerHeldItemIllager<T extends IllagerEntity, M extends ModelAlicorn<T>> extends LayerHeldPonyItem<T, M> { public class LayerHeldItemIllager<T extends IllagerEntity, M extends ModelAlicorn<T>> extends LayerHeldPonyItem<T, M> {
public LayerHeldItemIllager(IPonyRender<T,M> livingPony) { public LayerHeldItemIllager(IPonyRenderContext<T,M> livingPony) {
super(livingPony); super(livingPony);
} }

View file

@ -1,7 +1,7 @@
package com.minelittlepony.client.render.entity.feature; package com.minelittlepony.client.render.entity.feature;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
@ -16,7 +16,7 @@ import net.minecraft.util.Arm;
public class LayerHeldPonyItem<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends AbstractPonyLayer<T, M> { public class LayerHeldPonyItem<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends AbstractPonyLayer<T, M> {
public LayerHeldPonyItem(IPonyRender<T, M> livingPony) { public LayerHeldPonyItem(IPonyRenderContext<T, M> livingPony) {
super(livingPony); super(livingPony);
} }

View file

@ -2,7 +2,7 @@ package com.minelittlepony.client.render.entity.feature;
import com.minelittlepony.client.PonyRenderManager; import com.minelittlepony.client.PonyRenderManager;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.IUnicorn; import com.minelittlepony.model.IUnicorn;
import net.minecraft.client.model.ModelPart; import net.minecraft.client.model.ModelPart;
@ -16,7 +16,7 @@ import net.minecraft.util.Arm;
public class LayerHeldPonyItemMagical<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends LayerHeldPonyItem<T, M> { public class LayerHeldPonyItemMagical<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends LayerHeldPonyItem<T, M> {
public LayerHeldPonyItemMagical(IPonyRender<T, M> context) { public LayerHeldPonyItemMagical(IPonyRenderContext<T, M> context) {
super(context); super(context);
} }

View file

@ -4,7 +4,7 @@ import com.minelittlepony.client.ForgeProxy;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.ModelWrapper; import com.minelittlepony.client.model.ModelWrapper;
import com.minelittlepony.client.model.armour.DefaultArmourTextureResolver; import com.minelittlepony.client.model.armour.DefaultArmourTextureResolver;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.armour.ArmourLayer; import com.minelittlepony.model.armour.ArmourLayer;
import com.minelittlepony.model.armour.IArmour; import com.minelittlepony.model.armour.IArmour;
import com.minelittlepony.model.armour.IArmourTextureResolver; import com.minelittlepony.model.armour.IArmourTextureResolver;
@ -33,7 +33,7 @@ public class LayerPonyArmor<T extends LivingEntity, M extends EntityModel<T> & I
private ModelWrapper<T, M> pony; private ModelWrapper<T, M> pony;
public LayerPonyArmor(IPonyRender<T, M> renderer) { public LayerPonyArmor(IPonyRenderContext<T, M> renderer) {
super(renderer); super(renderer);
} }

View file

@ -1,7 +1,7 @@
package com.minelittlepony.client.render.entity.feature; package com.minelittlepony.client.render.entity.feature;
import com.minelittlepony.client.model.ClientPonyModel; import com.minelittlepony.client.model.ClientPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.AbstractClientPlayerEntity;
@ -20,7 +20,7 @@ import static com.minelittlepony.model.PonyModelConstants.PI;
public class LayerPonyCape<M extends ClientPonyModel<AbstractClientPlayerEntity>> extends AbstractPonyLayer<AbstractClientPlayerEntity, M> { public class LayerPonyCape<M extends ClientPonyModel<AbstractClientPlayerEntity>> extends AbstractPonyLayer<AbstractClientPlayerEntity, M> {
public LayerPonyCape(IPonyRender<AbstractClientPlayerEntity, M> context) { public LayerPonyCape(IPonyRenderContext<AbstractClientPlayerEntity, M> context) {
super(context); super(context);
} }

View file

@ -2,7 +2,7 @@ package com.minelittlepony.client.render.entity.feature;
import com.minelittlepony.client.model.AbstractPonyModel; import com.minelittlepony.client.model.AbstractPonyModel;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
@ -30,7 +30,7 @@ import static com.mojang.blaze3d.platform.GlStateManager.*;
public class LayerPonyCustomHead<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends AbstractPonyLayer<T, M> { public class LayerPonyCustomHead<T extends LivingEntity, M extends EntityModel<T> & IPonyModel<T>> extends AbstractPonyLayer<T, M> {
public LayerPonyCustomHead(IPonyRender<T, M> renderPony) { public LayerPonyCustomHead(IPonyRenderContext<T, M> renderPony) {
super(renderPony); super(renderPony);
} }

View file

@ -3,7 +3,7 @@ package com.minelittlepony.client.render.entity.feature;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.model.ModelType; import com.minelittlepony.client.model.ModelType;
import com.minelittlepony.client.model.PonyElytra; import com.minelittlepony.client.model.PonyElytra;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.AbstractClientPlayerEntity;
@ -27,7 +27,7 @@ public class LayerPonyElytra<T extends LivingEntity, M extends EntityModel<T> &
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private final PonyElytra<T> modelElytra = (PonyElytra<T>)ModelType.ELYTRA.createModel(); private final PonyElytra<T> modelElytra = (PonyElytra<T>)ModelType.ELYTRA.createModel();
public LayerPonyElytra(IPonyRender<T, M> rp) { public LayerPonyElytra(IPonyRenderContext<T, M> rp) {
super(rp); super(rp);
} }

View file

@ -15,15 +15,15 @@ import net.minecraft.village.VillagerProfession;
import net.minecraft.village.VillagerType; import net.minecraft.village.VillagerType;
import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.IPonyModel;
import com.minelittlepony.client.render.IPonyRender; import com.minelittlepony.client.render.IPonyRenderContext;
import com.minelittlepony.client.render.RenderPony; import com.minelittlepony.client.render.EquineRenderManager;
class ClothingLayer< class ClothingLayer<
T extends LivingEntity & VillagerDataContainer, T extends LivingEntity & VillagerDataContainer,
M extends EntityModel<T> & IPonyModel<T> & ModelWithHat, M extends EntityModel<T> & IPonyModel<T> & ModelWithHat,
C extends FeatureRendererContext<T, M> & IPonyRender<T, M>> extends VillagerClothingFeatureRenderer<T, M> { C extends FeatureRendererContext<T, M> & IPonyRenderContext<T, M>> extends VillagerClothingFeatureRenderer<T, M> {
private final RenderPony<T, M> renderer; private final EquineRenderManager<T, M> renderer;
public ClothingLayer(C context, String type) { public ClothingLayer(C context, String type) {
super(context, (ReloadableResourceManager)MinecraftClient.getInstance().getResourceManager(), type); super(context, (ReloadableResourceManager)MinecraftClient.getInstance().getResourceManager(), type);