diff --git a/src/main/java/com/minelittlepony/api/events/PonyModelPrepareCallback.java b/src/main/java/com/minelittlepony/api/events/PonyModelPrepareCallback.java
index 5e6f9a6b..4d61c68f 100644
--- a/src/main/java/com/minelittlepony/api/events/PonyModelPrepareCallback.java
+++ b/src/main/java/com/minelittlepony/api/events/PonyModelPrepareCallback.java
@@ -7,8 +7,13 @@ import net.minecraft.entity.Entity;
import com.minelittlepony.api.model.PonyModel;
import com.minelittlepony.api.model.ModelAttributes;
+/**
+ * Event triggered when a pony model's state is being evaluated.
+ *
+ * Subscribers have the option to read the pony model's attributes or modify them if neccessary to
+ * allow for custom animations.
+ */
public interface PonyModelPrepareCallback {
-
Event EVENT = EventFactory.createArrayBacked(PonyModelPrepareCallback.class, listeners -> (entity, model, mode) -> {
for (PonyModelPrepareCallback event : listeners) {
event.onPonyModelPrepared(entity, model, mode);
diff --git a/src/main/java/com/minelittlepony/api/events/PonySkinResolver.java b/src/main/java/com/minelittlepony/api/events/PonySkinResolver.java
new file mode 100644
index 00000000..cb79ab59
--- /dev/null
+++ b/src/main/java/com/minelittlepony/api/events/PonySkinResolver.java
@@ -0,0 +1,29 @@
+package com.minelittlepony.api.events;
+
+import net.fabricmc.fabric.api.event.Event;
+import net.fabricmc.fabric.api.event.EventFactory;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.Identifier;
+
+import org.jetbrains.annotations.Nullable;
+
+import com.minelittlepony.api.pony.Pony;
+
+/**
+ * Event for mods that want to replace the skin being used by a pony.
+ */
+public interface PonySkinResolver {
+ Event EVENT = EventFactory.createArrayBacked(PonySkinResolver.class, listeners -> (entity, pony, result) -> {
+ for (PonySkinResolver event : listeners) {
+ result = event.onPonySkinResolving(entity, pony, result);
+ }
+ return result;
+ });
+
+ @Nullable
+ Identifier onPonySkinResolving(Entity entity, PonyLookup ponyLookup, @Nullable Identifier previousResult);
+
+ interface PonyLookup {
+ Pony getPony(Identifier skin);
+ }
+}
diff --git a/src/main/java/com/minelittlepony/api/model/PreviewModel.java b/src/main/java/com/minelittlepony/api/model/PreviewModel.java
index 1bfdc008..a4a5fa5e 100644
--- a/src/main/java/com/minelittlepony/api/model/PreviewModel.java
+++ b/src/main/java/com/minelittlepony/api/model/PreviewModel.java
@@ -1,7 +1,7 @@
package com.minelittlepony.api.model;
-public interface PreviewModel {
- boolean forceSeapony();
+import net.minecraft.util.Identifier;
- boolean forceNirik();
+public interface PreviewModel {
+ Identifier getForm();
}
diff --git a/src/main/java/com/minelittlepony/api/pony/DefaultPonySkinHelper.java b/src/main/java/com/minelittlepony/api/pony/DefaultPonySkinHelper.java
index 70b020c0..b1a2d2a1 100644
--- a/src/main/java/com/minelittlepony/api/pony/DefaultPonySkinHelper.java
+++ b/src/main/java/com/minelittlepony/api/pony/DefaultPonySkinHelper.java
@@ -6,16 +6,15 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.Util;
import com.minelittlepony.api.pony.meta.Race;
-import com.minelittlepony.client.MineLittlePony;
import java.util.*;
import java.util.function.Function;
public final class DefaultPonySkinHelper {
- public static final Identifier STEVE = MineLittlePony.id("textures/entity/player/wide/steve_pony.png");
+ public static final Identifier STEVE = id("textures/entity/player/wide/steve_pony.png");
- public static final Identifier SEAPONY_SKIN_TYPE_ID = MineLittlePony.id("seapony");
- public static final Identifier NIRIK_SKIN_TYPE_ID = MineLittlePony.id("nirik");
+ public static final Identifier SEAPONY_SKIN_TYPE_ID = id("seapony");
+ public static final Identifier NIRIK_SKIN_TYPE_ID = id("nirik");
private static final Function SKINS = Util.memoize(original -> new SkinTextures(
new Identifier("minelittlepony", original.texture().getPath().replace(".png", "_pony.png")),
@@ -26,6 +25,10 @@ public final class DefaultPonySkinHelper {
false
));
+ public static Identifier id(String name) {
+ return new Identifier("minelittlepony", name);
+ }
+
public static SkinTextures getTextures(SkinTextures original) {
return SKINS.apply(original);
}
diff --git a/src/main/java/com/minelittlepony/api/pony/PonyForm.java b/src/main/java/com/minelittlepony/api/pony/PonyForm.java
new file mode 100644
index 00000000..830e6525
--- /dev/null
+++ b/src/main/java/com/minelittlepony/api/pony/PonyForm.java
@@ -0,0 +1,49 @@
+package com.minelittlepony.api.pony;
+
+import net.minecraft.client.render.entity.EntityRendererFactory;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.util.Identifier;
+
+import org.jetbrains.annotations.Nullable;
+
+import com.minelittlepony.client.render.entity.PlayerPonyRenderer;
+
+import java.util.*;
+import java.util.function.Predicate;
+
+/**
+ * The different forms a pony can take.
+ *
+ * The default is land, which is your typical pony with four legs.
+ * Other options are water (seaponies that go shoop-de-doo)
+ * And Niriks (the burning form of kirins)
+ */
+public record PonyForm(Identifier id, Predicate shouldApply, RendererFactory> factory) {
+ public static final Identifier DEFAULT = DefaultPonySkinHelper.id("land");
+ public static final Identifier SEAPONY = DefaultPonySkinHelper.id("seapony");
+ public static final Identifier NIRIK = DefaultPonySkinHelper.id("nirik");
+
+ public static final List VALUES = new ArrayList<>();
+ public static final Map REGISTRY = new HashMap<>();
+
+ public static void register(Identifier id, Predicate shouldApply, RendererFactory> factory) {
+ VALUES.add(0, id);
+ REGISTRY.put(id, new PonyForm(id, shouldApply, factory));
+ }
+
+ @Nullable
+ public static PonyForm of(PlayerEntity player) {
+ for (Identifier id : VALUES) {
+ PonyForm form = REGISTRY.get(id);
+ if (form != null && form.shouldApply().test(player)) {
+ return form;
+ }
+ }
+
+ return null;
+ }
+
+ public interface RendererFactory {
+ T create(EntityRendererFactory.Context context, boolean slimArms);
+ }
+}
diff --git a/src/main/java/com/minelittlepony/api/pony/PonyPosture.java b/src/main/java/com/minelittlepony/api/pony/PonyPosture.java
index b929eabd..2ad8b3c0 100644
--- a/src/main/java/com/minelittlepony/api/pony/PonyPosture.java
+++ b/src/main/java/com/minelittlepony/api/pony/PonyPosture.java
@@ -86,16 +86,9 @@ public final class PonyPosture {
return isSitting(entity) && getMountPony(entity).map(Pony::race).orElse(Race.HUMAN) != Race.HUMAN;
}
- public static boolean isSeaponyModifier(LivingEntity entity) {
- if (entity instanceof PreviewModel preview) {
- return preview.forceSeapony();
- }
- return hasSeaponyForm(entity) && isPartiallySubmerged(entity);
- }
-
public static boolean hasSeaponyForm(LivingEntity entity) {
if (entity instanceof PreviewModel preview) {
- return preview.forceSeapony();
+ return preview.getForm() == PonyForm.SEAPONY;
}
return Pony.getManager().getPony(entity).filter(pony -> {
return (pony.race() == Race.SEAPONY
@@ -104,17 +97,9 @@ public final class PonyPosture {
}).isPresent();
}
- public static boolean isNirikModifier(LivingEntity entity) {
- if (entity instanceof PreviewModel preview) {
- return preview.forceNirik();
- }
- return false;
- }
-
-
public static boolean hasNirikForm(LivingEntity entity) {
if (entity instanceof PreviewModel preview) {
- return preview.forceNirik();
+ return preview.getForm() == PonyForm.NIRIK;
}
return Pony.getManager().getPony(entity).filter(pony -> {
return (pony.race() == Race.KIRIN
diff --git a/src/main/java/com/minelittlepony/client/PonyManagerImpl.java b/src/main/java/com/minelittlepony/client/PonyManagerImpl.java
index 46e86892..51e8d8d3 100644
--- a/src/main/java/com/minelittlepony/client/PonyManagerImpl.java
+++ b/src/main/java/com/minelittlepony/client/PonyManagerImpl.java
@@ -1,8 +1,10 @@
package com.minelittlepony.client;
+import com.google.common.base.MoreObjects;
import com.google.common.cache.*;
import com.minelittlepony.api.config.PonyConfig;
import com.minelittlepony.api.config.PonyLevel;
+import com.minelittlepony.api.events.PonySkinResolver;
import com.minelittlepony.api.pony.*;
import com.minelittlepony.client.render.blockentity.skull.PonySkullRenderer;
@@ -50,7 +52,10 @@ public class PonyManagerImpl implements PonyManager, SimpleSynchronousResourceRe
@Override
public Pony getPony(PlayerEntity player) {
- return getPony(getSkin(player), player instanceof ForcedPony ? null : player.getGameProfile() == null ? player.getUuid() : player.getGameProfile().getId());
+ final UUID id = player instanceof ForcedPony ? null : player.getGameProfile() == null ? player.getUuid() : player.getGameProfile().getId();
+ Identifier skin = getSkin(player);
+ skin = MoreObjects.firstNonNull(PonySkinResolver.EVENT.invoker().onPonySkinResolving(player, s -> getPony(s, id), skin), skin);
+ return getPony(skin, id);
}
@Override
@@ -59,6 +64,7 @@ public class PonyManagerImpl implements PonyManager, SimpleSynchronousResourceRe
return Optional.of(getPony(player));
}
Identifier skin = getSkin(entity);
+ skin = MoreObjects.firstNonNull(PonySkinResolver.EVENT.invoker().onPonySkinResolving(entity, s -> getPony(s, null), skin), skin);
return skin == null ? Optional.empty() : Optional.of(getPony(skin, null));
}
diff --git a/src/main/java/com/minelittlepony/client/compat/hdskins/DummyPony.java b/src/main/java/com/minelittlepony/client/compat/hdskins/DummyPony.java
index 93a45ab6..63b163e3 100644
--- a/src/main/java/com/minelittlepony/client/compat/hdskins/DummyPony.java
+++ b/src/main/java/com/minelittlepony/client/compat/hdskins/DummyPony.java
@@ -1,6 +1,7 @@
package com.minelittlepony.client.compat.hdskins;
import net.minecraft.client.world.ClientWorld;
+import net.minecraft.util.Identifier;
import com.minelittlepony.api.model.PreviewModel;
import com.minelittlepony.api.pony.*;
@@ -20,12 +21,13 @@ class DummyPony extends DummyPlayer implements PreviewModel, PonyManager.ForcedP
}
@Override
- public boolean forceSeapony() {
- return getTextures().getPosture().getActiveSkinType() == MineLPHDSkins.seaponySkinType;
- }
-
- @Override
- public boolean forceNirik() {
- return getTextures().getPosture().getActiveSkinType() == MineLPHDSkins.nirikSkinType;
+ public Identifier getForm() {
+ if (getTextures().getPosture().getActiveSkinType() == MineLPHDSkins.seaponySkinType) {
+ return PonyForm.SEAPONY;
+ }
+ if (getTextures().getPosture().getActiveSkinType() == MineLPHDSkins.nirikSkinType) {
+ return PonyForm.NIRIK;
+ }
+ return PonyForm.DEFAULT;
}
}
diff --git a/src/main/java/com/minelittlepony/client/render/PonyRenderDispatcher.java b/src/main/java/com/minelittlepony/client/render/PonyRenderDispatcher.java
index 312649cb..71eb5b5f 100644
--- a/src/main/java/com/minelittlepony/client/render/PonyRenderDispatcher.java
+++ b/src/main/java/com/minelittlepony/client/render/PonyRenderDispatcher.java
@@ -2,7 +2,9 @@ package com.minelittlepony.client.render;
import java.util.function.Function;
+import com.google.common.base.Predicates;
import com.minelittlepony.api.model.PonyModel;
+import com.minelittlepony.api.model.PreviewModel;
import com.minelittlepony.api.pony.*;
import com.minelittlepony.client.mixin.MixinEntityRenderers;
import com.minelittlepony.client.render.entity.*;
@@ -18,7 +20,6 @@ import net.minecraft.client.util.SkinTextures;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
-import net.minecraft.util.Identifier;
/**
* Render manager responsible for replacing and restoring entity renderers when the client settings change.
@@ -26,6 +27,17 @@ import net.minecraft.util.Identifier;
public class PonyRenderDispatcher {
private LevitatingItemRenderer magicRenderer = new LevitatingItemRenderer();
+ public PonyRenderDispatcher() {
+ PonyForm.register(PonyForm.DEFAULT, Predicates.alwaysTrue(), PlayerPonyRenderer::new);
+ PonyForm.register(PonyForm.SEAPONY, PonyPosture::hasSeaponyForm, (context, slimArms) -> new AquaticPlayerPonyRenderer(context, slimArms, DefaultPonySkinHelper.SEAPONY_SKIN_TYPE_ID, entity -> {
+ if (entity instanceof PreviewModel preview) {
+ return preview.getForm() == PonyForm.SEAPONY;
+ }
+ return PonyPosture.hasSeaponyForm(entity) && PonyPosture.isPartiallySubmerged(entity);
+ }));
+ PonyForm.register(PonyForm.NIRIK, PonyPosture::hasNirikForm, (context, slimArms) -> new FormChangingPlayerPonyRenderer(context, slimArms, DefaultPonySkinHelper.NIRIK_SKIN_TYPE_ID, PonyPosture::hasNirikForm));
+ }
+
public LevitatingItemRenderer getMagicRenderer() {
return magicRenderer;
}
@@ -34,42 +46,20 @@ public class PonyRenderDispatcher {
* Registers all new player skin types. (currently only pony and slimpony).
*/
public void initialise(EntityRenderDispatcher manager, boolean force) {
- for (SkinTextures.Model armShape : SkinTextures.Model.values()) {
- addPlayerRenderer(armShape);
- }
+ PonyForm.REGISTRY.values().forEach(form -> {
+ for (SkinTextures.Model armShape : SkinTextures.Model.values()) {
+ Mson.getInstance().getEntityRendererRegistry().registerPlayerRenderer(
+ form.id().withSuffixedPath("/" + armShape.getName()),
+ player -> !Pony.getManager().getPony(player).race().isHuman()
+ && player.getSkinTextures().model() == armShape
+ && form.shouldApply().test(player) && PonyForm.of(player) == form,
+ context -> form.factory().create(context, armShape == SkinTextures.Model.SLIM)
+ );
+ }
+ });
MobRenderers.REGISTRY.values().forEach(i -> i.apply(this, force));
}
- private void addPlayerRenderer(SkinTextures.Model armShape) {
- Mson.getInstance().getEntityRendererRegistry().registerPlayerRenderer(
- new Identifier("minelittlepony", "sea/" + armShape.getName()),
- player -> {
- return !Pony.getManager().getPony(player).race().isHuman()
- && PonyPosture.hasSeaponyForm(player)
- && player.getSkinTextures().model() == armShape;
- },
- context -> new AquaticPlayerPonyRenderer(context, armShape == SkinTextures.Model.SLIM)
- );
- Mson.getInstance().getEntityRendererRegistry().registerPlayerRenderer(
- new Identifier("minelittlepony", "nirik/" + armShape.getName()),
- player -> {
- return !Pony.getManager().getPony(player).race().isHuman()
- && PonyPosture.hasNirikForm(player)
- && player.getSkinTextures().model() == armShape;
- },
- context -> new FormChangingPlayerPonyRenderer(context, armShape == SkinTextures.Model.SLIM, DefaultPonySkinHelper.NIRIK_SKIN_TYPE_ID, PonyPosture::isNirikModifier)
- );
- Mson.getInstance().getEntityRendererRegistry().registerPlayerRenderer(
- new Identifier("minelittlepony", "land/" + armShape.getName()),
- player -> {
- return !Pony.getManager().getPony(player).race().isHuman()
- && !PonyPosture.hasSeaponyForm(player) && !PonyPosture.hasNirikForm(player)
- && player.getSkinTextures().model() == armShape;
- },
- context -> new PlayerPonyRenderer(context, armShape == SkinTextures.Model.SLIM)
- );
- }
-
/**
*
* Replaces an entity renderer depending on whether we want ponies or not.
@@ -80,25 +70,17 @@ public class PonyRenderDispatcher {
* @param The entity type
*/
void switchRenderer(MobRenderers state, EntityType type, Function> factory) {
- Mson.getInstance().getEntityRendererRegistry().registerEntityRenderer(type, ctx -> {
- if (!state.get()) {
- return MixinEntityRenderers.getRendererFactories().get(type).create(ctx);
- }
- return factory.apply(ctx);
- });
+ Mson.getInstance().getEntityRendererRegistry().registerEntityRenderer(type, ctx -> state.get()
+ ? factory.apply(ctx)
+ : MixinEntityRenderers.getRendererFactories().get(type).create(ctx)
+ );
}
@SuppressWarnings("unchecked")
@Nullable
public & PonyModel> PonyRenderContext getPonyRenderer(@Nullable T entity) {
- if (entity == null) {
- return null;
- }
-
- EntityRenderer> renderer = MinecraftClient.getInstance().getEntityRenderDispatcher().getRenderer(entity);
-
- if (renderer instanceof PonyRenderContext) {
- return (PonyRenderContext) renderer;
+ if (entity != null && MinecraftClient.getInstance().getEntityRenderDispatcher().getRenderer(entity) instanceof PonyRenderContext c) {
+ return c;
}
return null;
diff --git a/src/main/java/com/minelittlepony/client/render/entity/AquaticPlayerPonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/AquaticPlayerPonyRenderer.java
index a36e028b..e1a64ce4 100644
--- a/src/main/java/com/minelittlepony/client/render/entity/AquaticPlayerPonyRenderer.java
+++ b/src/main/java/com/minelittlepony/client/render/entity/AquaticPlayerPonyRenderer.java
@@ -5,16 +5,19 @@ import com.minelittlepony.api.pony.*;
import com.minelittlepony.api.pony.meta.Race;
import com.minelittlepony.util.MathUtil;
+import java.util.function.Predicate;
+
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.particle.ParticleTypes;
+import net.minecraft.util.Identifier;
public class AquaticPlayerPonyRenderer extends FormChangingPlayerPonyRenderer {
- public AquaticPlayerPonyRenderer(EntityRendererFactory.Context context, boolean slim) {
- super(context, slim, DefaultPonySkinHelper.SEAPONY_SKIN_TYPE_ID, PonyPosture::isSeaponyModifier);
+ public AquaticPlayerPonyRenderer(EntityRendererFactory.Context context, boolean slim, Identifier alternateFormSkinId, Predicate formModifierPredicate) {
+ super(context, slim, alternateFormSkinId, formModifierPredicate);
}
@Override
@@ -32,12 +35,12 @@ public class AquaticPlayerPonyRenderer extends FormChangingPlayerPonyRenderer {
@Override
protected Race getPlayerRace(AbstractClientPlayerEntity entity, Pony pony) {
Race race = super.getPlayerRace(entity, pony);
- return PonyPosture.isSeaponyModifier(entity) ? Race.SEAPONY : race == Race.SEAPONY ? Race.UNICORN : race;
+ return transformed ? Race.SEAPONY : race == Race.SEAPONY ? Race.UNICORN : race;
}
@Override
protected void setupTransforms(AbstractClientPlayerEntity player, MatrixStack matrices, float animationProgress, float bodyYaw, float tickDelta, float scale) {
- if (PonyPosture.isSeaponyModifier(player)) {
+ if (transformed) {
matrices.translate(0, 0.6 * scale, 0);
if (player.isInSneakingPose()) {
matrices.translate(0, 0.125 * scale, 0);
diff --git a/src/main/java/com/minelittlepony/client/render/entity/FormChangingPlayerPonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/FormChangingPlayerPonyRenderer.java
index da571585..7cc8b815 100644
--- a/src/main/java/com/minelittlepony/client/render/entity/FormChangingPlayerPonyRenderer.java
+++ b/src/main/java/com/minelittlepony/client/render/entity/FormChangingPlayerPonyRenderer.java
@@ -1,14 +1,12 @@
package com.minelittlepony.client.render.entity;
+import com.minelittlepony.api.model.ModelAttributes;
import com.minelittlepony.api.pony.*;
import java.util.function.Predicate;
import net.minecraft.client.network.AbstractClientPlayerEntity;
-import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRendererFactory;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.util.Arm;
import net.minecraft.util.Identifier;
public class FormChangingPlayerPonyRenderer extends PlayerPonyRenderer {
@@ -33,14 +31,8 @@ public class FormChangingPlayerPonyRenderer extends PlayerPonyRenderer {
}
@Override
- public void render(AbstractClientPlayerEntity player, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int light) {
- super.render(player, entityYaw, tickDelta, stack, renderContext, light);
- updateForm(player);
- }
-
- @Override
- protected void renderArm(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, AbstractClientPlayerEntity player, Arm side) {
- super.renderArm(stack, renderContext, lightUv, player, side);
+ protected final void preRender(AbstractClientPlayerEntity player, ModelAttributes.Mode mode) {
+ super.preRender(player, mode);
updateForm(player);
}
diff --git a/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java
index 5c2e3c1e..7e6a4c41 100644
--- a/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java
+++ b/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java
@@ -75,10 +75,14 @@ public class PlayerPonyRenderer extends PlayerEntityRenderer implements PonyRend
super.scale(entity, stack, tickDelta);
}
+ protected void preRender(AbstractClientPlayerEntity player, ModelAttributes.Mode mode) {
+ manager.preRender(player, mode);
+ }
+
@Override
public void render(AbstractClientPlayerEntity entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) {
// EntityModelFeatures: We have to force it to use our models otherwise EMF overrides it and breaks pony rendering
- manager.preRender(entity, ModelAttributes.Mode.THIRD_PERSON);
+ preRender(entity, ModelAttributes.Mode.THIRD_PERSON);
shadowRadius = manager.getShadowSize();
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
DebugBoundingBoxRenderer.render(getEntityPony(entity), this, entity, stack, renderContext, tickDelta);
@@ -143,7 +147,7 @@ public class PlayerPonyRenderer extends PlayerEntityRenderer implements PonyRend
}
protected void renderArm(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, AbstractClientPlayerEntity player, Arm side) {
- manager.preRender(player, ModelAttributes.Mode.FIRST_PERSON);
+ preRender(player, ModelAttributes.Mode.FIRST_PERSON);
stack.push();
float reflect = side == Arm.LEFT ? 1 : -1;
diff --git a/src/main/resources/assets/minelittlepony/lang/af_za.json b/src/main/resources/assets/minelittlepony/lang/af_za.json
index 60658677..17a6a4e3 100644
--- a/src/main/resources/assets/minelittlepony/lang/af_za.json
+++ b/src/main/resources/assets/minelittlepony/lang/af_za.json
@@ -50,7 +50,7 @@
"minelp.debug.size": "Grootte ignoreer",
"minelp.debug.race": "Ras oorheersing",
"minelp.debug.armour": "Deaktiveer geponifiseerde pantserteksture",
- "skin_type.minelp.seapony": "Seeponie",
+ "skin_type.minelittlepony.seapony": "Seeponie",
"skin_type.minelittlepony.crown": "Kroon",
"skin_type.minelittlepony.muffin": "Muffin hoed",
"skin_type.minelittlepony.hat": "Hekshoed",
diff --git a/src/main/resources/assets/minelittlepony/lang/de_de.json b/src/main/resources/assets/minelittlepony/lang/de_de.json
index 1c86ee41..91bdeacc 100644
--- a/src/main/resources/assets/minelittlepony/lang/de_de.json
+++ b/src/main/resources/assets/minelittlepony/lang/de_de.json
@@ -51,7 +51,7 @@
"minelp.debug.size": "Überschreibe Größe",
"minelp.debug.race": "Überschreibe Spezies",
"minelp.debug.armour": "Ponifizierte Rüstungsständer deaktivieren",
- "skin_type.minelp.seapony": "Seepony",
+ "skin_type.minelittlepony.seapony": "Seepony",
"skin_type.minelittlepony.crown": "Krone",
"skin_type.minelittlepony.muffin": "Muffin-Mütze",
"skin_type.minelittlepony.hat": "Hexen Hut",
diff --git a/src/main/resources/assets/minelittlepony/lang/en_gb.json b/src/main/resources/assets/minelittlepony/lang/en_gb.json
index e841d636..9ff63f0c 100644
--- a/src/main/resources/assets/minelittlepony/lang/en_gb.json
+++ b/src/main/resources/assets/minelittlepony/lang/en_gb.json
@@ -50,7 +50,7 @@
"minelp.debug.size": "Size Override",
"minelp.debug.race": "Race Override",
"minelp.debug.armour": "Disable ponified armour textures",
- "skin_type.minelp.seapony": "Seapony",
+ "skin_type.minelittlepony.seapony": "Seapony",
"skin_type.minelittlepony.crown": "Crown",
"skin_type.minelittlepony.muffin": "Muffin Hat",
"skin_type.minelittlepony.hat": "Witch's Hat",
diff --git a/src/main/resources/assets/minelittlepony/lang/en_pt.json b/src/main/resources/assets/minelittlepony/lang/en_pt.json
index a8a08586..39a5b035 100644
--- a/src/main/resources/assets/minelittlepony/lang/en_pt.json
+++ b/src/main/resources/assets/minelittlepony/lang/en_pt.json
@@ -51,7 +51,7 @@
"minelp.debug.size": "Bow Width",
"minelp.debug.race": "Sail Height",
"minelp.debug.armour": "Batten down the hatches",
- "skin_type.minelp.seapony": "Maremaid",
+ "skin_type.minelittlepony.seapony": "Maremaid",
"skin_type.minelittlepony.crown": "Captain's Tricorne",
"skin_type.minelittlepony.muffin": "Galley-man's Headwear",
"skin_type.minelittlepony.hat": "Olde Hag's Gown",
diff --git a/src/main/resources/assets/minelittlepony/lang/en_ud.json b/src/main/resources/assets/minelittlepony/lang/en_ud.json
index 3714266c..148e64f6 100644
--- a/src/main/resources/assets/minelittlepony/lang/en_ud.json
+++ b/src/main/resources/assets/minelittlepony/lang/en_ud.json
@@ -50,7 +50,7 @@
"minelp.debug.size": "ǝpᴉɹɹǝʌO ǝzᴉS",
"minelp.debug.race": "ǝpᴉɹɹǝʌO ǝɔɐᴚ",
"minelp.debug.armour": "sǝɹnʇxǝʇ ɹnoɯɹɐ pǝᴉɟᴉuod ǝlqɐsᴉD",
- "skin_type.minelp.seapony": "ʎuodɐǝS",
+ "skin_type.minelittlepony.seapony": "ʎuodɐǝS",
"skin_type.minelittlepony.crown": "uʍoɹƆ",
"skin_type.minelittlepony.muffin": "ʇɐH uᴉɟɟnW",
"skin_type.minelittlepony.hat": "ʇɐH ɥɔʇᴉM",
diff --git a/src/main/resources/assets/minelittlepony/lang/en_us.json b/src/main/resources/assets/minelittlepony/lang/en_us.json
index ada3bd8a..384b1449 100644
--- a/src/main/resources/assets/minelittlepony/lang/en_us.json
+++ b/src/main/resources/assets/minelittlepony/lang/en_us.json
@@ -54,8 +54,8 @@
"minelp.debug.race": "Race Override",
"minelp.debug.armour": "Disable ponified armour textures",
- "skin_type.minelp.seapony": "Seapony Form",
- "skin_type.minelp.nirik": "Kirin Nirik Form",
+ "skin_type.minelittlepony.seapony": "Seapony Form",
+ "skin_type.minelittlepony.nirik": "Kirin Nirik Form",
"skin_type.minelittlepony.crown": "Crown",
"skin_type.minelittlepony.muffin": "Muffin Hat",
"skin_type.minelittlepony.hat": "Witch Hat",
diff --git a/src/main/resources/assets/minelittlepony/lang/enus_enp.json b/src/main/resources/assets/minelittlepony/lang/enus_enp.json
index 3d4a7bcf..43268819 100644
--- a/src/main/resources/assets/minelittlepony/lang/enus_enp.json
+++ b/src/main/resources/assets/minelittlepony/lang/enus_enp.json
@@ -51,7 +51,7 @@
"minelp.debug.size": "Bulk Override",
"minelp.debug.race": "Kind Override",
"minelp.debug.armour": "Cripple horselingified armour skins",
- "skin_type.minelp.seapony": "Seahorseling",
+ "skin_type.minelittlepony.seapony": "Seahorseling",
"skin_type.minelittlepony.crown": "Kinehelm",
"skin_type.minelittlepony.muffin": "Muffin Hat",
"skin_type.minelittlepony.hat": "Witch Hat",
diff --git a/src/main/resources/assets/minelittlepony/lang/lol_us.json b/src/main/resources/assets/minelittlepony/lang/lol_us.json
index 2acfd36c..0a74092d 100644
--- a/src/main/resources/assets/minelittlepony/lang/lol_us.json
+++ b/src/main/resources/assets/minelittlepony/lang/lol_us.json
@@ -51,7 +51,7 @@
"minelp.debug.size": "Size Owewwide",
"minelp.debug.race": "Waze Owewwide",
"minelp.debug.armour": "Disabl ponifid armr texturez",
- "skin_type.minelp.seapony": "Seeponeh",
+ "skin_type.minelittlepony.seapony": "Seeponeh",
"skin_type.minelittlepony.crown": "Meown",
"skin_type.minelittlepony.muffin": "Muffin Hat plz",
"skin_type.minelittlepony.hat": "Crazy Kitteh Ownr Hat",
diff --git a/src/main/resources/assets/minelittlepony/lang/ru_ru.json b/src/main/resources/assets/minelittlepony/lang/ru_ru.json
index 16da8da0..944be9bc 100644
--- a/src/main/resources/assets/minelittlepony/lang/ru_ru.json
+++ b/src/main/resources/assets/minelittlepony/lang/ru_ru.json
@@ -50,7 +50,7 @@
"minelp.debug.size": "Переопределение размера",
"minelp.debug.race": "Переопределение расы",
"minelp.debug.armour": "Отключить понифицированную броню",
- "skin_type.minelp.seapony": "Морской пони",
+ "skin_type.minelittlepony.seapony": "Морской пони",
"skin_type.minelittlepony.crown": "Корона",
"skin_type.minelittlepony.muffin": "Маффин",
"skin_type.minelittlepony.hat": "Шляпа Ведьмы",
diff --git a/src/main/resources/assets/minelittlepony/lang/sr_rs.json b/src/main/resources/assets/minelittlepony/lang/sr_rs.json
index 9f9f40e3..736803d5 100644
--- a/src/main/resources/assets/minelittlepony/lang/sr_rs.json
+++ b/src/main/resources/assets/minelittlepony/lang/sr_rs.json
@@ -52,7 +52,7 @@
"minelp.debug.race": "Nadjačavanje vrste",
"minelp.debug.armour": "Onemogući ponified oklop tekstura",
- "skin_type.minelp.seapony": "Vodeni Poni",
+ "skin_type.minelittlepony.seapony": "Vodeni Poni",
"skin_type.minelittlepony.crown": "Kruna",
"skin_type.minelittlepony.muffin": "Mafin Šešir",
"skin_type.minelittlepony.hat": "Veštičiji Šešir",
diff --git a/src/main/resources/assets/minelittlepony/lang/zh_cn.json b/src/main/resources/assets/minelittlepony/lang/zh_cn.json
index e8a51c85..44473d56 100644
--- a/src/main/resources/assets/minelittlepony/lang/zh_cn.json
+++ b/src/main/resources/assets/minelittlepony/lang/zh_cn.json
@@ -53,8 +53,8 @@
"minelp.debug.race": "覆盖种族",
"minelp.debug.armour": "停用小马化护甲纹理",
- "skin_type.minelp.seapony": "海马形态",
- "skin_type.minelp.nirik": "麒麟 逆麟形态",
+ "skin_type.minelittlepony.seapony": "海马形态",
+ "skin_type.minelittlepony.nirik": "麒麟 逆麟形态",
"skin_type.minelittlepony.crown": "头冠",
"skin_type.minelittlepony.muffin": "马芬帽",
"skin_type.minelittlepony.hat": "女巫帽",
diff --git a/src/main/resources/assets/minelp/textures/gui/skin_type/nirik.png b/src/main/resources/assets/minelittlepony/textures/gui/skin_type/nirik.png
similarity index 100%
rename from src/main/resources/assets/minelp/textures/gui/skin_type/nirik.png
rename to src/main/resources/assets/minelittlepony/textures/gui/skin_type/nirik.png
diff --git a/src/main/resources/assets/minelp/textures/gui/skin_type/seapony.png b/src/main/resources/assets/minelittlepony/textures/gui/skin_type/seapony.png
similarity index 100%
rename from src/main/resources/assets/minelp/textures/gui/skin_type/seapony.png
rename to src/main/resources/assets/minelittlepony/textures/gui/skin_type/seapony.png