From aedb4e49f719da5e0d8c86a127addab273377a09 Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 13 Dec 2022 00:25:09 +0000 Subject: [PATCH] Remove hasHorn and hasMagic from IPonyData --- .../com/minelittlepony/api/model/IModel.java | 10 +++++++--- .../com/minelittlepony/api/model/IUnicorn.java | 6 +++--- .../com/minelittlepony/api/pony/IPony.java | 7 +++++++ .../com/minelittlepony/api/pony/IPonyData.java | 14 ++------------ .../api/pony/network/MsgPonyData.java | 18 ------------------ .../client/model/PonySkullModel.java | 11 ++++++++--- .../client/model/entity/SkeleponyModel.java | 2 +- .../client/model/entity/race/SeaponyModel.java | 2 +- .../client/model/entity/race/UnicornModel.java | 2 +- .../client/pony/NativePonyData.java | 8 +------- .../minelittlepony/client/pony/PonyData.java | 9 +-------- .../client/render/LevitatingItemRenderer.java | 2 +- .../entity/feature/GlowingItemFeature.java | 2 +- 13 files changed, 34 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/minelittlepony/api/model/IModel.java b/src/main/java/com/minelittlepony/api/model/IModel.java index 8908a175..ad5dec9d 100644 --- a/src/main/java/com/minelittlepony/api/model/IModel.java +++ b/src/main/java/com/minelittlepony/api/model/IModel.java @@ -3,10 +3,10 @@ package com.minelittlepony.api.model; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.math.MathHelper; +import com.minelittlepony.api.config.PonyConfig; import com.minelittlepony.api.model.armour.IArmour; import com.minelittlepony.api.pony.IPonyData; -import com.minelittlepony.api.pony.meta.Size; -import com.minelittlepony.api.pony.meta.Wearable; +import com.minelittlepony.api.pony.meta.*; public interface IModel { /** @@ -51,11 +51,15 @@ public interface IModel { */ boolean isRiding(); + default Race getRace() { + return PonyConfig.getEffectiveRace(getMetadata().getRace()); + } + /** * Returns true if this model is being applied to a race that has wings. */ default boolean canFly() { - return getMetadata().getRace().hasWings(); + return getRace().hasWings(); } /** diff --git a/src/main/java/com/minelittlepony/api/model/IUnicorn.java b/src/main/java/com/minelittlepony/api/model/IUnicorn.java index b67463c3..ba447163 100644 --- a/src/main/java/com/minelittlepony/api/model/IUnicorn.java +++ b/src/main/java/com/minelittlepony/api/model/IUnicorn.java @@ -4,15 +4,15 @@ public interface IUnicorn extends IModel { /** * Returns true if this model is being applied to a race that can use magic. */ - default boolean canCast() { - return getMetadata().hasMagic(); + default boolean hasMagic() { + return getRace().hasHorn() && getMagicColor() != 0; } /** * Returns true if this model has an visible horns. */ default boolean hasHorn() { - return getMetadata().hasHorn(); + return getRace().hasHorn(); } /** diff --git a/src/main/java/com/minelittlepony/api/pony/IPony.java b/src/main/java/com/minelittlepony/api/pony/IPony.java index 07375913..7db5185d 100644 --- a/src/main/java/com/minelittlepony/api/pony/IPony.java +++ b/src/main/java/com/minelittlepony/api/pony/IPony.java @@ -45,6 +45,13 @@ public interface IPony extends Comparable { return PonyConfig.getEffectiveRace(metadata().getRace()); } + /** + * Returns true if and only if this metadata represents a pony that can cast magic. + */ + default boolean hasMagic() { + return race().hasHorn() && metadata().getGlowColor() != 0; + } + /** * Gets the texture used for rendering this pony. */ diff --git a/src/main/java/com/minelittlepony/api/pony/IPonyData.java b/src/main/java/com/minelittlepony/api/pony/IPonyData.java index 3137aed0..ee00acf4 100644 --- a/src/main/java/com/minelittlepony/api/pony/IPonyData.java +++ b/src/main/java/com/minelittlepony/api/pony/IPonyData.java @@ -16,6 +16,8 @@ import java.util.UUID; public interface IPonyData extends Comparable { /** * Gets this pony's race. + * + * This is the actual race value. For the effective race, prefer going through {@link IPony#race} */ Race getRace(); @@ -44,18 +46,6 @@ public interface IPonyData extends Comparable { */ int getGlowColor(); - /** - * Returns true if and only if this metadata represents a pony that has a horn. - */ - boolean hasHorn(); - - /** - * Returns true if and only if this metadata represents a pony that can cast magic. - */ - default boolean hasMagic() { - return hasHorn() && getGlowColor() != 0; - } - /** * Returns an array of wearables that this pony is carrying. */ diff --git a/src/main/java/com/minelittlepony/api/pony/network/MsgPonyData.java b/src/main/java/com/minelittlepony/api/pony/network/MsgPonyData.java index 24af15e4..7066f7ad 100644 --- a/src/main/java/com/minelittlepony/api/pony/network/MsgPonyData.java +++ b/src/main/java/com/minelittlepony/api/pony/network/MsgPonyData.java @@ -23,8 +23,6 @@ public class MsgPonyData implements IPonyData { private final Gender gender; private final Size size; private final int glowColor; - private final boolean hasHorn; - private final boolean hasMagic; private final boolean noSkin; @@ -49,8 +47,6 @@ public class MsgPonyData implements IPonyData { gender = buffer.readEnumConstant(Gender.class); size = new MsgSize(buffer); glowColor = buffer.readInt(); - hasHorn = buffer.readBoolean(); - hasMagic = buffer.readBoolean(); noSkin = buffer.readBoolean(); Wearable[] gear = new Wearable[buffer.readInt()]; Wearable[] all = Wearable.values(); @@ -68,8 +64,6 @@ public class MsgPonyData implements IPonyData { gender = data.getGender(); size = data.getSize(); glowColor = data.getGlowColor(); - hasHorn = data.hasHorn(); - hasMagic = data.hasMagic(); wearables = Wearable.flags(data.getGear()); wearableColor = data.getTriggerPixels().get("gear").getColorCode(); this.noSkin = noSkin; @@ -82,8 +76,6 @@ public class MsgPonyData implements IPonyData { buffer.writeEnumConstant(gender); new MsgSize(size).toBuffer(buffer); buffer.writeInt(glowColor); - buffer.writeBoolean(hasHorn); - buffer.writeBoolean(hasMagic); buffer.writeBoolean(noSkin); Wearable[] gear = getGear(); @@ -129,16 +121,6 @@ public class MsgPonyData implements IPonyData { return glowColor; } - @Override - public boolean hasHorn() { - return hasHorn; - } - - @Override - public boolean hasMagic() { - return hasMagic; - } - @Override public Wearable[] getGear() { return Wearable.flags(wearables); diff --git a/src/main/java/com/minelittlepony/client/model/PonySkullModel.java b/src/main/java/com/minelittlepony/client/model/PonySkullModel.java index 5657383d..d66fa538 100644 --- a/src/main/java/com/minelittlepony/client/model/PonySkullModel.java +++ b/src/main/java/com/minelittlepony/client/model/PonySkullModel.java @@ -1,7 +1,9 @@ package com.minelittlepony.client.model; +import com.minelittlepony.api.config.PonyConfig; import com.minelittlepony.api.model.ICapitated; import com.minelittlepony.api.pony.IPonyData; +import com.minelittlepony.api.pony.meta.Race; import com.minelittlepony.client.model.part.PonyEars; import com.minelittlepony.client.model.part.PonySnout; import com.minelittlepony.client.model.part.UnicornHorn; @@ -52,15 +54,18 @@ public class PonySkullModel extends SkullEntityModel implements MsonModel, ICapi @Override public void render(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) { - snout.setVisible(!metadata.getRace().isHuman()); - ears.setVisible(!metadata.getRace().isHuman()); + + Race race = PonyConfig.getEffectiveRace(metadata.getRace()); + + snout.setVisible(!race.isHuman()); + ears.setVisible(!race.isHuman()); snout.setGender(metadata.getGender()); hair.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha); head.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha); - if (metadata.hasHorn()) { + if (race.hasHorn()) { getHead().rotate(stack); horn.renderPart(stack, vertices, overlayUv, lightUv, red, green, blue, alpha, null); } diff --git a/src/main/java/com/minelittlepony/client/model/entity/SkeleponyModel.java b/src/main/java/com/minelittlepony/client/model/entity/SkeleponyModel.java index 9c62dfe1..c7231c62 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/SkeleponyModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/SkeleponyModel.java @@ -78,7 +78,7 @@ public class SkeleponyModel extends AlicornModel imp } @Override - public boolean canCast() { + public boolean hasMagic() { return isUnicorn; } diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java index 1b3b1d75..30b22492 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java @@ -111,6 +111,7 @@ public class SeaponyModel extends UnicornModel { } @Override + public boolean hasMagic() { protected void renderBody(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) { body.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha); abdomin.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha); @@ -123,7 +124,6 @@ public class SeaponyModel extends UnicornModel { } @Override - public boolean canCast() { return true; } diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java index 1077ad8c..6d298d67 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java @@ -88,7 +88,7 @@ public class UnicornModel extends EarthPonyModel impl @Override public ModelPart getArm(Arm side) { - if (canCast() && getArmPoseForSide(side) != ArmPose.EMPTY && MineLittlePony.getInstance().getConfig().tpsmagic.get()) { + if (hasMagic() && getArmPoseForSide(side) != ArmPose.EMPTY && MineLittlePony.getInstance().getConfig().tpsmagic.get()) { return side == Arm.LEFT ? unicornArmLeft : unicornArmRight; } return super.getArm(side); diff --git a/src/main/java/com/minelittlepony/client/pony/NativePonyData.java b/src/main/java/com/minelittlepony/client/pony/NativePonyData.java index f282d303..3cb02b42 100644 --- a/src/main/java/com/minelittlepony/client/pony/NativePonyData.java +++ b/src/main/java/com/minelittlepony/client/pony/NativePonyData.java @@ -3,7 +3,6 @@ package com.minelittlepony.client.pony; import net.minecraft.client.texture.NativeImage; import com.google.common.base.MoreObjects; -import com.minelittlepony.api.config.PonyConfig; import com.minelittlepony.api.pony.IPonyData; import com.minelittlepony.api.pony.TriggerPixelSet; import com.minelittlepony.api.pony.TriggerPixelType; @@ -54,7 +53,7 @@ class NativePonyData implements IPonyData { @Override public Race getRace() { - return PonyConfig.getEffectiveRace(race.getValue()); + return race.getValue(); } @Override @@ -92,11 +91,6 @@ class NativePonyData implements IPonyData { return glowColor; } - @Override - public boolean hasHorn() { - return getRace().hasHorn(); - } - @Override public Wearable[] getGear() { return Wearable.flags(wearables.getValue()); diff --git a/src/main/java/com/minelittlepony/client/pony/PonyData.java b/src/main/java/com/minelittlepony/client/pony/PonyData.java index 55d8fd2a..92eb1569 100644 --- a/src/main/java/com/minelittlepony/client/pony/PonyData.java +++ b/src/main/java/com/minelittlepony/client/pony/PonyData.java @@ -4,7 +4,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.util.Identifier; import com.google.common.base.MoreObjects; import com.google.gson.annotations.Expose; -import com.minelittlepony.api.config.PonyConfig; import com.minelittlepony.api.pony.IPonyData; import com.minelittlepony.api.pony.TriggerPixelType; import com.minelittlepony.api.pony.meta.*; @@ -93,7 +92,7 @@ public class PonyData implements IPonyData { @Override public Race getRace() { - return PonyConfig.getEffectiveRace(race); + return race; } @Override @@ -101,7 +100,6 @@ public class PonyData implements IPonyData { return tailLength; } - @Override public TailShape getTailShape() { return tailShape; @@ -132,11 +130,6 @@ public class PonyData implements IPonyData { return glowColor; } - @Override - public boolean hasHorn() { - return getRace().hasHorn(); - } - @Override public Wearable[] getGear() { return Wearable.flags(wearables); diff --git a/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java b/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java index 905d4cba..f02a73ae 100644 --- a/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java @@ -84,7 +84,7 @@ public class LevitatingItemRenderer { matrix.push(); - boolean doMagic = MineLittlePony.getInstance().getConfig().fpsmagic.get() && pony.metadata().hasMagic(); + boolean doMagic = MineLittlePony.getInstance().getConfig().fpsmagic.get() && pony.hasMagic(); if (doMagic) { setupPerspective(itemRenderer, entity, stack, left, matrix); diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java index 5aefa620..2da91bcc 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java +++ b/src/main/java/com/minelittlepony/client/render/entity/feature/GlowingItemFeature.java @@ -27,7 +27,7 @@ public class GlowingItemFeature protected boolean isUnicorn() { return MineLittlePony.getInstance().getConfig().tpsmagic.get() && getContextModel() instanceof IUnicorn - && ((IUnicorn)getContextModel()).canCast(); + && ((IUnicorn)getContextModel()).hasMagic(); } @Override