From 23cf8bd7025043961a4fe82f9d0e3fd3a23f89b9 Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 10 Oct 2023 18:28:29 +0100 Subject: [PATCH] Fixed crash without trinkets --- .../unicopia/entity/player/Pony.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index d2075aa3..d9a2a20b 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -94,8 +94,7 @@ public class Pony extends Living implements Copyable, Update private final Interpolator interpolator = new LinearInterpolator(); - @Nullable - private Race.Composite compositeRace; + private Race.Composite compositeRace = Race.UNSET.composite(); private Race respawnRace = Race.UNSET; private boolean dirty; @@ -220,19 +219,6 @@ public class Pony extends Living implements Copyable, Update */ @Override public Race.Composite getCompositeRace() { - if (compositeRace == null || entity.age % 2 == 0) { - compositeRace = getSpellSlot() - .get(SpellPredicate.IS_MIMIC, true) - .map(AbstractDisguiseSpell::getDisguise) - .map(EntityAppearance::getAppearance) - .flatMap(Pony::of) - .map(Pony::getSpecies) - .orElseGet(this::getSpecies).composite( - AmuletSelectors.UNICORN_AMULET.test(entity) ? Race.UNICORN - : AmuletSelectors.ALICORN_AMULET.test(entity) ? Race.ALICORN - : null - ); - } return compositeRace; } @@ -352,6 +338,20 @@ public class Pony extends Living implements Copyable, Update @Override public boolean beforeUpdate() { + if (compositeRace.includes(Race.UNSET) || entity.age % 2 == 0) { + compositeRace = getSpellSlot() + .get(SpellPredicate.IS_MIMIC, true) + .map(AbstractDisguiseSpell::getDisguise) + .map(EntityAppearance::getAppearance) + .flatMap(Pony::of) + .map(Pony::getSpecies) + .orElseGet(this::getSpecies).composite( + AmuletSelectors.UNICORN_AMULET.test(entity) ? Race.UNICORN + : AmuletSelectors.ALICORN_AMULET.test(entity) ? Race.ALICORN + : null + ); + } + if (isClient()) { if (entity.hasVehicle() && entity.isSneaking()) {