diff --git a/src/main/java/com/minelittlepony/client/mixin/MixinFirstPersonRenderer.java b/src/main/java/com/minelittlepony/client/mixin/MixinFirstPersonRenderer.java index 56af1545..baccf8c7 100644 --- a/src/main/java/com/minelittlepony/client/mixin/MixinFirstPersonRenderer.java +++ b/src/main/java/com/minelittlepony/client/mixin/MixinFirstPersonRenderer.java @@ -8,7 +8,6 @@ import com.minelittlepony.client.render.PonyRenderDispatcher; import javax.annotation.Nullable; -import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.render.FirstPersonRenderer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.model.json.ModelTransformation.Type; @@ -43,6 +42,6 @@ abstract class MixinFirstPersonRenderer { VertexConsumerProvider renderContext, @Nullable World world, int lightUv, int overlayUv) { - PonyRenderDispatcher.getInstance().getMagicRenderer().renderItemInFirstPerson(target, (AbstractClientPlayerEntity)entity, item, transform, left, stack, renderContext, world, lightUv); + PonyRenderDispatcher.getInstance().getMagicRenderer().renderItemInFirstPerson(target, entity, item, transform, left, stack, renderContext, world, lightUv); } } diff --git a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java index d5f671b4..b19e0f9f 100644 --- a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java @@ -30,7 +30,7 @@ public abstract class ClientPonyModel extends MsonPlayer /** * Associated pony data. */ - protected IPonyData metadata = new PonyData(); + protected IPonyData metadata = PonyData.NULL; @Override public void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { diff --git a/src/main/java/com/minelittlepony/client/model/PonySkullModel.java b/src/main/java/com/minelittlepony/client/model/PonySkullModel.java index cb5b5a22..d26603c5 100644 --- a/src/main/java/com/minelittlepony/client/model/PonySkullModel.java +++ b/src/main/java/com/minelittlepony/client/model/PonySkullModel.java @@ -23,7 +23,7 @@ public class PonySkullModel extends SkullOverlayEntityModel implements MsonModel private ModelPart hair; - public IPonyData metadata = new PonyData(); + public IPonyData metadata = PonyData.NULL; @Override public void init(ModelContext context) { diff --git a/src/main/java/com/minelittlepony/client/pony/PonyData.java b/src/main/java/com/minelittlepony/client/pony/PonyData.java index 5846415b..b01a0bdf 100644 --- a/src/main/java/com/minelittlepony/client/pony/PonyData.java +++ b/src/main/java/com/minelittlepony/client/pony/PonyData.java @@ -35,13 +35,15 @@ public class PonyData implements IPonyData { private static final PonyDataSerialiser SERIALISER = new PonyDataSerialiser(); + public static final IPonyData NULL = new PonyData(Race.HUMAN); + /** * Parses the given resource into a new IPonyData. * This may either come from an attached json file or the image itself. */ public static IPonyData parse(@Nullable Identifier identifier) { if (identifier == null) { - return new PonyData(); + return NULL; } try (Resource res = MinecraftClient.getInstance().getResourceManager().getResource(identifier)) { @@ -60,7 +62,7 @@ public class PonyData implements IPonyData { return NativeUtil.parseImage(identifier, PonyData::new); } catch (IllegalStateException e) { MineLittlePony.logger.fatal("Unable to read {} metadata", identifier, e); - return new PonyData(); + return NULL; } } @@ -82,8 +84,8 @@ public class PonyData implements IPonyData { @Expose private final boolean[] wearables; - public PonyData() { - race = Race.HUMAN; + public PonyData(Race race) { + this.race = race; tailSize = TailLength.FULL; gender = Gender.MARE; size = Size.NORMAL; diff --git a/src/main/java/com/minelittlepony/client/pony/PonyManager.java b/src/main/java/com/minelittlepony/client/pony/PonyManager.java index 3213a788..9bcfe635 100644 --- a/src/main/java/com/minelittlepony/client/pony/PonyManager.java +++ b/src/main/java/com/minelittlepony/client/pony/PonyManager.java @@ -70,7 +70,7 @@ public class PonyManager implements IPonyManager, IdentifiableResourceReloadList try { return poniesCache.get(resource); } catch (ExecutionException e) { - return new Pony(resource, new PonyData()); + return new Pony(resource, PonyData.NULL); } } diff --git a/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java b/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java index 75016c12..07116b84 100644 --- a/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java @@ -7,7 +7,6 @@ import com.minelittlepony.util.Color; import javax.annotation.Nullable; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumerProvider; @@ -17,6 +16,7 @@ import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.Vector3f; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.Arm; import net.minecraft.util.Identifier; @@ -76,33 +76,39 @@ public class LevitatingItemRenderer { /** * Renders an item in first person optionally with a magical overlay. */ - public void renderItemInFirstPerson(ItemRenderer itemRenderer, @Nullable AbstractClientPlayerEntity entity, ItemStack stack, ModelTransformation.Type transform, boolean left, MatrixStack matrix, VertexConsumerProvider renderContext, @Nullable World world, int lightUv) { - IPony pony = MineLittlePony.getInstance().getManager().getPony(entity); + public void renderItemInFirstPerson(ItemRenderer itemRenderer, @Nullable LivingEntity entity, ItemStack stack, ModelTransformation.Type transform, boolean left, MatrixStack matrix, VertexConsumerProvider renderContext, @Nullable World world, int lightUv) { - matrix.push(); + if (entity instanceof PlayerEntity) { - boolean doMagic = MineLittlePony.getInstance().getConfig().fpsmagic.get() && pony.getMetadata().hasMagic(); + IPony pony = MineLittlePony.getInstance().getManager().getPony((PlayerEntity)entity); - if (doMagic) { - setupPerspective(itemRenderer, entity, stack, left, matrix); - } + matrix.push(); - itemRenderer.method_23177(entity, stack, transform, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV); + boolean doMagic = MineLittlePony.getInstance().getConfig().fpsmagic.get() && pony.getMetadata().hasMagic(); - if (doMagic) { - setColor(pony.getMetadata().getGlowColor()); + if (doMagic) { + setupPerspective(itemRenderer, entity, stack, left, matrix); + } - matrix.scale(1.1F, 1.1F, 1.1F); - - matrix.translate(0.015F, 0.01F, 0.01F); - itemRenderer.method_23177(entity, stack, transform, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV); - matrix.translate(-0.03F, -0.02F, -0.02F); itemRenderer.method_23177(entity, stack, transform, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV); - unsetColor(); - } + if (doMagic) { + setColor(pony.getMetadata().getGlowColor()); - matrix.pop(); + matrix.scale(1.1F, 1.1F, 1.1F); + + matrix.translate(0.015F, 0.01F, 0.01F); + itemRenderer.method_23177(entity, stack, transform, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV); + matrix.translate(-0.03F, -0.02F, -0.02F); + itemRenderer.method_23177(entity, stack, transform, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV); + + unsetColor(); + } + + matrix.pop(); + } else { + itemRenderer.method_23177(entity, stack, transform, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV); + } } /** diff --git a/src/main/java/com/minelittlepony/model/ModelAttributes.java b/src/main/java/com/minelittlepony/model/ModelAttributes.java index 12772299..1c053889 100644 --- a/src/main/java/com/minelittlepony/model/ModelAttributes.java +++ b/src/main/java/com/minelittlepony/model/ModelAttributes.java @@ -70,7 +70,7 @@ public class ModelAttributes { * Unique id of the interpolator used for this model. * Usually the UUID of the entity being rendered. */ - public UUID interpolatorId; + public UUID interpolatorId = UUID.randomUUID(); /** * The actual, visible height of this model when rendered.