From 2cfe7e138a5137e33f847d44db3eebdf4527c3a3 Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 27 Nov 2019 13:42:19 +0200 Subject: [PATCH] Properly implement steve/alex models --- .../client/PonyRenderManager.java | 10 ++-- .../client/model/ModelType.java | 2 +- .../client/model/PlayerModelKey.java | 56 +++++-------------- .../minelittlepony/models/guardian.json | 2 +- .../assets/minelittlepony/models/illager.json | 2 +- .../minelittlepony/models/pillager.json | 2 +- .../models/races/alex/alicorn.json | 8 +++ .../models/races/alex/bat_pony.json | 8 +++ .../models/races/alex/changeling.json | 8 +++ .../models/races/alex/earth_pony.json | 8 +++ .../models/races/alex/gryphon.json | 3 + .../models/races/alex/hippogriff.json | 3 + .../models/races/alex/kirin.json | 3 + .../models/races/alex/pegasus.json | 8 +++ .../models/races/alex/sea_pony.json | 8 +++ .../models/races/alex/unicorn.json | 8 +++ .../models/races/alex/zebra.json | 8 +++ .../minelittlepony/models/races/gryphon.json | 3 - .../models/races/hippogriff.json | 3 - .../minelittlepony/models/races/kirin.json | 3 - .../models/races/{ => steve}/alicorn.json | 2 +- .../models/races/{ => steve}/bat_pony.json | 0 .../models/races/{ => steve}/changeling.json | 2 +- .../models/races/{ => steve}/earth_pony.json | 0 .../models/races/steve/gryphon.json | 3 + .../models/races/steve/hippogriff.json | 3 + .../models/races/steve/kirin.json | 3 + .../models/races/{ => steve}/pegasus.json | 0 .../models/races/{ => steve}/sea_pony.json | 2 +- .../models/races/{ => steve}/unicorn.json | 0 .../models/races/{ => steve}/zebra.json | 0 .../minelittlepony/models/skeleton.json | 2 +- .../minelittlepony/models/villager.json | 2 +- .../assets/minelittlepony/models/witch.json | 2 +- .../assets/minelittlepony/models/zombie.json | 2 +- 35 files changed, 111 insertions(+), 68 deletions(-) create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/alicorn.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/bat_pony.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/changeling.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/earth_pony.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/gryphon.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/hippogriff.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/kirin.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/pegasus.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/sea_pony.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/unicorn.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/alex/zebra.json delete mode 100644 src/main/resources/assets/minelittlepony/models/races/gryphon.json delete mode 100644 src/main/resources/assets/minelittlepony/models/races/hippogriff.json delete mode 100644 src/main/resources/assets/minelittlepony/models/races/kirin.json rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/alicorn.json (79%) rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/bat_pony.json (100%) rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/changeling.json (79%) rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/earth_pony.json (100%) create mode 100644 src/main/resources/assets/minelittlepony/models/races/steve/gryphon.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/steve/hippogriff.json create mode 100644 src/main/resources/assets/minelittlepony/models/races/steve/kirin.json rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/pegasus.json (100%) rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/sea_pony.json (94%) rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/unicorn.json (100%) rename src/main/resources/assets/minelittlepony/models/races/{ => steve}/zebra.json (100%) diff --git a/src/main/java/com/minelittlepony/client/PonyRenderManager.java b/src/main/java/com/minelittlepony/client/PonyRenderManager.java index cb88889d..b5ba6af7 100644 --- a/src/main/java/com/minelittlepony/client/PonyRenderManager.java +++ b/src/main/java/com/minelittlepony/client/PonyRenderManager.java @@ -5,7 +5,6 @@ import java.util.function.Function; import com.google.common.collect.Maps; import com.minelittlepony.client.model.IPonyModel; -import com.minelittlepony.client.model.PlayerModelKey; import com.minelittlepony.client.model.entity.race.PlayerModels; import com.minelittlepony.client.render.LevitatingItemRenderer; import com.minelittlepony.client.render.entity.MobRenderers; @@ -60,11 +59,10 @@ public class PonyRenderManager { } private void addPlayerSkin(EntityRenderDispatcher manager, boolean slimArms, PlayerModels playerModel) { - - PlayerModelKey.Key key = playerModel.getModelKey().getKey(slimArms); - String id = playerModel.getId(slimArms); - - Mson.getInstance().getEntityRendererRegistry().registerPlayerRenderer(id, key.getFactory()); + Mson.getInstance().getEntityRendererRegistry().registerPlayerRenderer( + playerModel.getId(slimArms), + playerModel.getModelKey().getRendererFactory(slimArms) + ); } /** diff --git a/src/main/java/com/minelittlepony/client/model/ModelType.java b/src/main/java/com/minelittlepony/client/model/ModelType.java index 6e5297a7..71286829 100644 --- a/src/main/java/com/minelittlepony/client/model/ModelType.java +++ b/src/main/java/com/minelittlepony/client/model/ModelType.java @@ -74,7 +74,7 @@ public final class ModelType { @SuppressWarnings("unchecked") static PlayerModelKey registerPlayer(String name, Race race, Function constructor, PlayerModelKey.RendererFactory rendererFactory) { return (PlayerModelKey)PLAYER_MODELS.computeIfAbsent(race, r -> { - return new PlayerModelKey<>(new Identifier("minelittlepony", "races/" + name), constructor, rendererFactory); + return new PlayerModelKey<>(name, constructor, rendererFactory); }); } diff --git a/src/main/java/com/minelittlepony/client/model/PlayerModelKey.java b/src/main/java/com/minelittlepony/client/model/PlayerModelKey.java index 7b349c92..fe813b50 100644 --- a/src/main/java/com/minelittlepony/client/model/PlayerModelKey.java +++ b/src/main/java/com/minelittlepony/client/model/PlayerModelKey.java @@ -12,63 +12,35 @@ import com.minelittlepony.mson.api.Mson; import com.minelittlepony.mson.api.MsonModel; import java.util.function.Function; -import java.util.function.Supplier; public class PlayerModelKey { - private final ModelKey key; - - private boolean slim; - - private final Key steveKey; - private final Key alexKey; + private final ModelKey steveKey; + private final ModelKey alexKey; private final RendererFactory rendererFactory; - PlayerModelKey(Identifier id, Function factory, RendererFactory rendererFactory) { - this.key = Mson.getInstance().registerModel(id, () -> factory.apply(slim)); + PlayerModelKey(String name, Function modelFactory, RendererFactory rendererFactory) { this.rendererFactory = rendererFactory; - steveKey = new Key(false); - alexKey = new Key(true); + steveKey = Mson.getInstance().registerModel(new Identifier("minelittlepony", "races/steve/" + name), () -> modelFactory.apply(false)); + alexKey = Mson.getInstance().registerModel(new Identifier("minelittlepony", "races/alex/" + name), () -> modelFactory.apply(true)); } - public Key getKey(boolean slimArms) { + public ModelKey getKey(boolean slimArms) { return slimArms ? alexKey : steveKey; } - public class Key implements ModelKey { - - final boolean slim; - - public Key(boolean slim) { - this.slim = slim; - } - - @Override - public Identifier getId() { - return key.getId(); - } - - @Override - public M createModel() { - PlayerModelKey.this.slim = this.slim; - return key.createModel(); - } - - @SuppressWarnings("unchecked") - public Function getFactory() { - return d -> rendererFactory.create(d, slim, (ModelKey>)this); - } - - @Override - public V createModel(Supplier supplier) { - PlayerModelKey.this.slim = this.slim; - return key.createModel(supplier); - } + @SuppressWarnings("unchecked") + public Function getRendererFactory(boolean slimArms) { + return d -> rendererFactory.create(d, slimArms, (ModelKey>)getKey(slimArms)); } public interface RendererFactory { - PlayerEntityRenderer create(EntityRenderDispatcher dispatcher, boolean slim, ModelKey> key); + PlayerEntityRenderer create( + EntityRenderDispatcher dispatcher, + boolean slim, + ModelKey> key + ); } } diff --git a/src/main/resources/assets/minelittlepony/models/guardian.json b/src/main/resources/assets/minelittlepony/models/guardian.json index 67983459..1f91ff61 100644 --- a/src/main/resources/assets/minelittlepony/models/guardian.json +++ b/src/main/resources/assets/minelittlepony/models/guardian.json @@ -1,3 +1,3 @@ { - "parent": "minelittlepony:races/sea_pony" + "parent": "minelittlepony:races/steve/sea_pony" } diff --git a/src/main/resources/assets/minelittlepony/models/illager.json b/src/main/resources/assets/minelittlepony/models/illager.json index cd84e2e7..57b398c4 100644 --- a/src/main/resources/assets/minelittlepony/models/illager.json +++ b/src/main/resources/assets/minelittlepony/models/illager.json @@ -1,3 +1,3 @@ { - "parent": "minelittlepony:races/alicorn" + "parent": "minelittlepony:races/steve/alicorn" } diff --git a/src/main/resources/assets/minelittlepony/models/pillager.json b/src/main/resources/assets/minelittlepony/models/pillager.json index 6d33d7ed..300aedb6 100644 --- a/src/main/resources/assets/minelittlepony/models/pillager.json +++ b/src/main/resources/assets/minelittlepony/models/pillager.json @@ -1,3 +1,3 @@ { - "parent": "minelittlepony:races/changeling" + "parent": "minelittlepony:races/steve/changeling" } diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/alicorn.json b/src/main/resources/assets/minelittlepony/models/races/alex/alicorn.json new file mode 100644 index 00000000..104f6889 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/alicorn.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/alicorn", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/bat_pony.json b/src/main/resources/assets/minelittlepony/models/races/alex/bat_pony.json new file mode 100644 index 00000000..e4729c07 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/bat_pony.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/bat_pony", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/changeling.json b/src/main/resources/assets/minelittlepony/models/races/alex/changeling.json new file mode 100644 index 00000000..104f6889 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/changeling.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/alicorn", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/earth_pony.json b/src/main/resources/assets/minelittlepony/models/races/alex/earth_pony.json new file mode 100644 index 00000000..81b5e8f0 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/earth_pony.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/earth_pony", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/gryphon.json b/src/main/resources/assets/minelittlepony/models/races/alex/gryphon.json new file mode 100644 index 00000000..c51776c8 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/gryphon.json @@ -0,0 +1,3 @@ +{ + "parent": "minelittlepony:races/alex/pegasus" +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/hippogriff.json b/src/main/resources/assets/minelittlepony/models/races/alex/hippogriff.json new file mode 100644 index 00000000..c51776c8 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/hippogriff.json @@ -0,0 +1,3 @@ +{ + "parent": "minelittlepony:races/alex/pegasus" +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/kirin.json b/src/main/resources/assets/minelittlepony/models/races/alex/kirin.json new file mode 100644 index 00000000..8090a2db --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/kirin.json @@ -0,0 +1,3 @@ +{ + "parent": "minelittlepony:races/alex/unicorn" +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/pegasus.json b/src/main/resources/assets/minelittlepony/models/races/alex/pegasus.json new file mode 100644 index 00000000..8522f0d3 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/pegasus.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/pegasus", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/sea_pony.json b/src/main/resources/assets/minelittlepony/models/races/alex/sea_pony.json new file mode 100644 index 00000000..e92dca17 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/sea_pony.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/sea_pony", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/unicorn.json b/src/main/resources/assets/minelittlepony/models/races/alex/unicorn.json new file mode 100644 index 00000000..7db68b7c --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/unicorn.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:race/steve/unicorn", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/alex/zebra.json b/src/main/resources/assets/minelittlepony/models/races/alex/zebra.json new file mode 100644 index 00000000..4b7715b1 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/alex/zebra.json @@ -0,0 +1,8 @@ +{ + "parent": "minelittlepony:races/steve/zebra", + "locals": { + "arm_width": 3, + "arm_rotation_x": 2, + "arm_rotation_y": 8.5 + } +} diff --git a/src/main/resources/assets/minelittlepony/models/races/gryphon.json b/src/main/resources/assets/minelittlepony/models/races/gryphon.json deleted file mode 100644 index 75a78a89..00000000 --- a/src/main/resources/assets/minelittlepony/models/races/gryphon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minelittlepony:races/pegasus" -} diff --git a/src/main/resources/assets/minelittlepony/models/races/hippogriff.json b/src/main/resources/assets/minelittlepony/models/races/hippogriff.json deleted file mode 100644 index 75a78a89..00000000 --- a/src/main/resources/assets/minelittlepony/models/races/hippogriff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minelittlepony:races/pegasus" -} diff --git a/src/main/resources/assets/minelittlepony/models/races/kirin.json b/src/main/resources/assets/minelittlepony/models/races/kirin.json deleted file mode 100644 index ed5fb1aa..00000000 --- a/src/main/resources/assets/minelittlepony/models/races/kirin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minelittlepony:races/unicorn" -} diff --git a/src/main/resources/assets/minelittlepony/models/races/alicorn.json b/src/main/resources/assets/minelittlepony/models/races/steve/alicorn.json similarity index 79% rename from src/main/resources/assets/minelittlepony/models/races/alicorn.json rename to src/main/resources/assets/minelittlepony/models/races/steve/alicorn.json index b09fe503..e1906160 100644 --- a/src/main/resources/assets/minelittlepony/models/races/alicorn.json +++ b/src/main/resources/assets/minelittlepony/models/races/steve/alicorn.json @@ -1,5 +1,5 @@ { - "parent": "minelittlepony:races/unicorn", + "parent": "minelittlepony:races/steve/unicorn", "wings": { "type": "mson:slot", "name": "wings", diff --git a/src/main/resources/assets/minelittlepony/models/races/bat_pony.json b/src/main/resources/assets/minelittlepony/models/races/steve/bat_pony.json similarity index 100% rename from src/main/resources/assets/minelittlepony/models/races/bat_pony.json rename to src/main/resources/assets/minelittlepony/models/races/steve/bat_pony.json diff --git a/src/main/resources/assets/minelittlepony/models/races/changeling.json b/src/main/resources/assets/minelittlepony/models/races/steve/changeling.json similarity index 79% rename from src/main/resources/assets/minelittlepony/models/races/changeling.json rename to src/main/resources/assets/minelittlepony/models/races/steve/changeling.json index ed727d2b..54405aab 100644 --- a/src/main/resources/assets/minelittlepony/models/races/changeling.json +++ b/src/main/resources/assets/minelittlepony/models/races/steve/changeling.json @@ -1,5 +1,5 @@ { - "parent": "minelittlepony:races/alicorn", + "parent": "minelittlepony:races/steve/alicorn", "wings": { "type": "mson:slot", "name": "wings", diff --git a/src/main/resources/assets/minelittlepony/models/races/earth_pony.json b/src/main/resources/assets/minelittlepony/models/races/steve/earth_pony.json similarity index 100% rename from src/main/resources/assets/minelittlepony/models/races/earth_pony.json rename to src/main/resources/assets/minelittlepony/models/races/steve/earth_pony.json diff --git a/src/main/resources/assets/minelittlepony/models/races/steve/gryphon.json b/src/main/resources/assets/minelittlepony/models/races/steve/gryphon.json new file mode 100644 index 00000000..5c99b53c --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/steve/gryphon.json @@ -0,0 +1,3 @@ +{ + "parent": "minelittlepony:races/steve/pegasus" +} diff --git a/src/main/resources/assets/minelittlepony/models/races/steve/hippogriff.json b/src/main/resources/assets/minelittlepony/models/races/steve/hippogriff.json new file mode 100644 index 00000000..5c99b53c --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/steve/hippogriff.json @@ -0,0 +1,3 @@ +{ + "parent": "minelittlepony:races/steve/pegasus" +} diff --git a/src/main/resources/assets/minelittlepony/models/races/steve/kirin.json b/src/main/resources/assets/minelittlepony/models/races/steve/kirin.json new file mode 100644 index 00000000..17eab8e0 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/races/steve/kirin.json @@ -0,0 +1,3 @@ +{ + "parent": "minelittlepony:races/steve/unicorn" +} diff --git a/src/main/resources/assets/minelittlepony/models/races/pegasus.json b/src/main/resources/assets/minelittlepony/models/races/steve/pegasus.json similarity index 100% rename from src/main/resources/assets/minelittlepony/models/races/pegasus.json rename to src/main/resources/assets/minelittlepony/models/races/steve/pegasus.json diff --git a/src/main/resources/assets/minelittlepony/models/races/sea_pony.json b/src/main/resources/assets/minelittlepony/models/races/steve/sea_pony.json similarity index 94% rename from src/main/resources/assets/minelittlepony/models/races/sea_pony.json rename to src/main/resources/assets/minelittlepony/models/races/steve/sea_pony.json index 7b2a39a9..4687912d 100644 --- a/src/main/resources/assets/minelittlepony/models/races/sea_pony.json +++ b/src/main/resources/assets/minelittlepony/models/races/steve/sea_pony.json @@ -1,5 +1,5 @@ { - "parent": "minelittlepony:races/alicorn", + "parent": "minelittlepony:races/steve/alicorn", "left_fin": { "type": "mson:planar", "texture": {"u": 56, "v": 16}, diff --git a/src/main/resources/assets/minelittlepony/models/races/unicorn.json b/src/main/resources/assets/minelittlepony/models/races/steve/unicorn.json similarity index 100% rename from src/main/resources/assets/minelittlepony/models/races/unicorn.json rename to src/main/resources/assets/minelittlepony/models/races/steve/unicorn.json diff --git a/src/main/resources/assets/minelittlepony/models/races/zebra.json b/src/main/resources/assets/minelittlepony/models/races/steve/zebra.json similarity index 100% rename from src/main/resources/assets/minelittlepony/models/races/zebra.json rename to src/main/resources/assets/minelittlepony/models/races/steve/zebra.json diff --git a/src/main/resources/assets/minelittlepony/models/skeleton.json b/src/main/resources/assets/minelittlepony/models/skeleton.json index 5a1c0d4d..3267c1f5 100644 --- a/src/main/resources/assets/minelittlepony/models/skeleton.json +++ b/src/main/resources/assets/minelittlepony/models/skeleton.json @@ -1,5 +1,5 @@ { - "parent": "minelittlepony:races/alicorn", + "parent": "minelittlepony:races/steve/alicorn", "locals": { "arm_width": 2, "arm_depth": 2 diff --git a/src/main/resources/assets/minelittlepony/models/villager.json b/src/main/resources/assets/minelittlepony/models/villager.json index b8625520..baca75ad 100644 --- a/src/main/resources/assets/minelittlepony/models/villager.json +++ b/src/main/resources/assets/minelittlepony/models/villager.json @@ -1,5 +1,5 @@ { - "parent": "minelittlepony:races/alicorn", + "parent": "minelittlepony:races/steve/alicorn", "head": { "offset": [ 0, -1, -2 ], "center": [ 0, 0, -2 ], diff --git a/src/main/resources/assets/minelittlepony/models/witch.json b/src/main/resources/assets/minelittlepony/models/witch.json index cd84e2e7..57b398c4 100644 --- a/src/main/resources/assets/minelittlepony/models/witch.json +++ b/src/main/resources/assets/minelittlepony/models/witch.json @@ -1,3 +1,3 @@ { - "parent": "minelittlepony:races/alicorn" + "parent": "minelittlepony:races/steve/alicorn" } diff --git a/src/main/resources/assets/minelittlepony/models/zombie.json b/src/main/resources/assets/minelittlepony/models/zombie.json index cd84e2e7..57b398c4 100644 --- a/src/main/resources/assets/minelittlepony/models/zombie.json +++ b/src/main/resources/assets/minelittlepony/models/zombie.json @@ -1,3 +1,3 @@ { - "parent": "minelittlepony:races/alicorn" + "parent": "minelittlepony:races/steve/alicorn" }