fixed an optimized seaponies. Fixes #152

This commit is contained in:
Sollace 2020-02-21 16:50:45 +02:00
parent 8e9e7197c2
commit 1ae149ddb5
4 changed files with 18 additions and 6 deletions

View file

@ -7,6 +7,7 @@ import com.minelittlepony.model.BodyPart;
import com.minelittlepony.model.armour.IEquestrianArmour; import com.minelittlepony.model.armour.IEquestrianArmour;
import com.minelittlepony.mson.api.ModelContext; import com.minelittlepony.mson.api.ModelContext;
import com.minelittlepony.mson.api.model.MsonPart; import com.minelittlepony.mson.api.model.MsonPart;
import com.minelittlepony.pony.meta.Race;
import net.minecraft.client.model.ModelPart; import net.minecraft.client.model.ModelPart;
import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumer;
@ -561,7 +562,7 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
renderStage(BodyPart.HEAD, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderHead); renderStage(BodyPart.HEAD, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderHead);
renderStage(BodyPart.LEGS, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderLegs); renderStage(BodyPart.LEGS, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderLegs);
if (textureHeight == 64) { if (textureHeight == 64 && getMetadata().getRace() != Race.SEAPONY) {
renderStage(BodyPart.LEGS, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderSleeves); renderStage(BodyPart.LEGS, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderSleeves);
renderStage(BodyPart.BODY, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderVest); renderStage(BodyPart.BODY, stack, vertices, overlayUv, lightUv, red, green, blue, alpha, this::renderVest);
} }

View file

@ -20,6 +20,7 @@ import com.minelittlepony.client.model.entity.race.AlicornModel;
import com.minelittlepony.client.model.entity.race.ChangelingModel; import com.minelittlepony.client.model.entity.race.ChangelingModel;
import com.minelittlepony.client.model.entity.race.EarthPonyModel; import com.minelittlepony.client.model.entity.race.EarthPonyModel;
import com.minelittlepony.client.model.entity.race.PegasusModel; import com.minelittlepony.client.model.entity.race.PegasusModel;
import com.minelittlepony.client.model.entity.race.SeaponyModel;
import com.minelittlepony.client.model.entity.race.UnicornModel; import com.minelittlepony.client.model.entity.race.UnicornModel;
import com.minelittlepony.client.model.entity.race.ZebraModel; import com.minelittlepony.client.model.entity.race.ZebraModel;
import com.minelittlepony.client.model.gear.ChristmasHat; import com.minelittlepony.client.model.gear.ChristmasHat;
@ -80,7 +81,7 @@ public final class ModelType {
public static final PlayerModelKey<?, PegasusModel<?>> GRYPHON = registerPlayer("gryphon", Race.GRYPHON, PegasusModel::new); public static final PlayerModelKey<?, PegasusModel<?>> GRYPHON = registerPlayer("gryphon", Race.GRYPHON, PegasusModel::new);
public static final PlayerModelKey<?, PegasusModel<?>> HIPPOGRIFF = registerPlayer("hippogriff", Race.HIPPOGRIFF, PegasusModel::new); public static final PlayerModelKey<?, PegasusModel<?>> HIPPOGRIFF = registerPlayer("hippogriff", Race.HIPPOGRIFF, PegasusModel::new);
public static final PlayerModelKey<?, EarthPonyModel<?>> EARTH_PONY = registerPlayer("earth_pony", Race.EARTH, EarthPonyModel::new); public static final PlayerModelKey<?, EarthPonyModel<?>> EARTH_PONY = registerPlayer("earth_pony", Race.EARTH, EarthPonyModel::new);
public static final PlayerModelKey<?, EarthPonyModel<?>> SEA_PONY = registerPlayer("sea_pony", Race.SEAPONY, EarthPonyModel::new, PlayerSeaponyRenderer::new); public static final PlayerModelKey<?, SeaponyModel<?>> SEA_PONY = registerPlayer("sea_pony", Race.SEAPONY, SeaponyModel::new, PlayerSeaponyRenderer::new);
public static final PlayerModelKey<?, PegasusModel<?>> BAT_PONY = registerPlayer("bat_pony", Race.BATPONY, PegasusModel::new); public static final PlayerModelKey<?, PegasusModel<?>> BAT_PONY = registerPlayer("bat_pony", Race.BATPONY, PegasusModel::new);
public static final PlayerModelKey<?, ChangelingModel<?>> CHANGELING = registerPlayer("changeling", Race.CHANGELING, ChangelingModel::new); public static final PlayerModelKey<?, ChangelingModel<?>> CHANGELING = registerPlayer("changeling", Race.CHANGELING, ChangelingModel::new);
public static final PlayerModelKey<?, ChangelingModel<?>> CHANGEDLING = registerPlayer("reformed_changeling", Race.CHANGEDLING, ChangelingModel::new); public static final PlayerModelKey<?, ChangelingModel<?>> CHANGEDLING = registerPlayer("reformed_changeling", Race.CHANGEDLING, ChangelingModel::new);

View file

@ -132,12 +132,21 @@ public class EquineRenderManager<T extends LivingEntity, M extends EntityModel<T
return playerModel.getBody(); return playerModel.getBody();
} }
public ModelWrapper<T, M> getModelWrapper() {
return playerModel;
}
public ModelWrapper<T, M> setModel(ModelKey<?> key) { public ModelWrapper<T, M> setModel(ModelKey<?> key) {
playerModel = new ModelWrapper<>(key); playerModel = new ModelWrapper<>(key);
return playerModel; return playerModel;
} }
public ModelWrapper<T, M> setModel(ModelWrapper<T, M> wrapper) {
playerModel = wrapper;
return wrapper;
}
public void updateMetadata(Identifier texture) { public void updateMetadata(Identifier texture) {
pony = MineLittlePony.getInstance().getManager().getPony(texture); pony = MineLittlePony.getInstance().getManager().getPony(texture);
playerModel.apply(pony.getMetadata()); playerModel.apply(pony.getMetadata());

View file

@ -2,6 +2,7 @@ package com.minelittlepony.client.render.entity;
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.mson.api.ModelKey; 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;
@ -13,14 +14,14 @@ import net.minecraft.particle.ParticleTypes;
public class PlayerSeaponyRenderer extends PlayerPonyRenderer { public class PlayerSeaponyRenderer extends PlayerPonyRenderer {
protected final ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>> seapony; private final ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> seapony;
protected final ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>> normalPony; private final ModelWrapper<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> normalPony;
public PlayerSeaponyRenderer(EntityRenderDispatcher manager, boolean slim, ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>> key) { public PlayerSeaponyRenderer(EntityRenderDispatcher manager, boolean slim, ModelKey<? extends ClientPonyModel<AbstractClientPlayerEntity>> key) {
super(manager, slim, key); super(manager, slim, key);
seapony = ModelType.<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>>getPlayerModel(Race.UNICORN).getKey(slim); normalPony = new ModelWrapper<>(ModelType.<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>>getPlayerModel(Race.UNICORN).getKey(slim));
normalPony = key; seapony = this.manager.getModelWrapper();
} }
@Override @Override