diff --git a/src/main/java/com/minelittlepony/unicopia/Race.java b/src/main/java/com/minelittlepony/unicopia/Race.java index 5c274cfe..0bafe9fd 100644 --- a/src/main/java/com/minelittlepony/unicopia/Race.java +++ b/src/main/java/com/minelittlepony/unicopia/Race.java @@ -186,13 +186,13 @@ public record Race (boolean canCast, FlightType flightType, boolean canUseEarth, return REGISTRY.stream().filter(r -> r.isPermitted(player)).collect(Collectors.toSet()); } - public record Composite (Race physical, Race pseudo) { + public record Composite (Race physical, @Nullable Race pseudo) { public boolean includes(Race race) { return physical == race || pseudo == race; } public boolean any(Predicate test) { - return test.test(physical) || test.test(pseudo); + return test.test(physical) || (pseudo != null && test.test(pseudo)); } } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/TimeChangeAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/TimeChangeAbility.java index d79ce12b..ee69cccc 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/TimeChangeAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/TimeChangeAbility.java @@ -18,7 +18,7 @@ public class TimeChangeAbility implements Ability { @Override public boolean canUse(Race.Composite race) { - return race.physical() != race.pseudo() && race.pseudo() == Race.UNICORN; + return race.pseudo() == Race.UNICORN; } @Override 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 cffb733d..2d0ad5d9 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -229,7 +229,8 @@ public class Pony extends Living implements Copyable, Update return new Race.Composite(observed, AmuletSelectors.UNICORN_AMULET.test(entity) ? Race.UNICORN : AmuletSelectors.ALICORN_AMULET.test(entity) ? Race.ALICORN - : observed); + : null + ); } /**