From cc560615c99bcda5a76737b114b3b49b12d6ab15 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 4 Oct 2019 21:31:48 +0200 Subject: [PATCH] Rewrite villager rendering and fix saddlebags not appearing correctly. Should fix #134 --- .../model/entities/ModelVillagerPony.java | 13 +++- .../client/model/gear/AbstractGear.java | 17 ----- .../client/model/gear/ChristmasHat.java | 2 +- .../client/model/gear/IGearRenderContext.java | 13 ++++ .../client/model/gear/Muffin.java | 2 +- .../client/model/gear/SaddleBags.java | 5 +- .../client/model/gear/Stetson.java | 2 +- .../client/model/gear/VillagerHat.java | 51 ++++++++++++++ .../client/model/gear/WitchHat.java | 2 +- .../client/render/IPonyRender.java | 9 ++- .../client/render/RenderPony.java | 6 ++ .../render/entities/RenderPonyVillager.java | 23 ++----- .../entities/RenderPonyZombieVillager.java | 24 ++----- .../villager/AbstractVillagerRenderer.java | 48 ++++++++++++++ .../entities/villager/ClothingLayer.java | 62 ++++++++++++++++++ .../PonyTextures.java} | 10 ++- .../client/render/layer/LayerGear.java | 27 ++++---- .../render/layer/LayerVillagerClothing.java | 31 --------- .../com/minelittlepony/model/gear/IGear.java | 11 +--- .../minelittlepony/pony/meta/Wearable.java | 1 + .../resources/FormattedTextureSupplier.java | 22 ------- .../util/resources/ITextureSupplier.java | 4 ++ .../util/resources/IntStringMapper.java | 42 ------------ .../villager/profession/cartographer.png | Bin 4140 -> 4141 bytes .../entity/villager/profession/farmer.png | Bin 4394 -> 4395 bytes .../entity/villager/profession/fisherman.png | Bin 4394 -> 4395 bytes .../entity/villager/profession/librarian.png | Bin 4140 -> 4141 bytes .../entity/villager/profession/shepherd.png | Bin 4394 -> 4396 bytes .../profession/cartographer.png | Bin 7927 -> 7932 bytes .../zombie_villager/profession/farmer.png | Bin 8113 -> 8116 bytes .../zombie_villager/profession/fisherman.png | Bin 8113 -> 8116 bytes .../zombie_villager/profession/librarian.png | Bin 7927 -> 7932 bytes .../zombie_villager/profession/shepherd.png | Bin 8113 -> 8116 bytes 33 files changed, 244 insertions(+), 183 deletions(-) create mode 100644 src/main/java/com/minelittlepony/client/model/gear/IGearRenderContext.java create mode 100644 src/main/java/com/minelittlepony/client/model/gear/VillagerHat.java create mode 100644 src/main/java/com/minelittlepony/client/render/entities/villager/AbstractVillagerRenderer.java create mode 100644 src/main/java/com/minelittlepony/client/render/entities/villager/ClothingLayer.java rename src/main/java/com/minelittlepony/client/render/entities/{VillagerProfessionTextureCache.java => villager/PonyTextures.java} (87%) delete mode 100644 src/main/java/com/minelittlepony/client/render/layer/LayerVillagerClothing.java delete mode 100644 src/main/java/com/minelittlepony/util/resources/FormattedTextureSupplier.java delete mode 100644 src/main/java/com/minelittlepony/util/resources/IntStringMapper.java diff --git a/src/main/java/com/minelittlepony/client/model/entities/ModelVillagerPony.java b/src/main/java/com/minelittlepony/client/model/entities/ModelVillagerPony.java index 68f82570..6ed0d95c 100644 --- a/src/main/java/com/minelittlepony/client/model/entities/ModelVillagerPony.java +++ b/src/main/java/com/minelittlepony/client/model/entities/ModelVillagerPony.java @@ -16,11 +16,14 @@ public class ModelVillagerPony e public PlaneRenderer apron; public PlaneRenderer trinket; + private VillagerProfession profession; public boolean special; public boolean special2; + public boolean hatVisible; + @Override protected void shakeBody(float move, float swing, float bodySwing, float ticks) { super.shakeBody(move, swing, bodySwing, ticks); @@ -51,16 +54,22 @@ public class ModelVillagerPony e @Override public boolean isWearing(Wearable wearable) { + if (wearable == Wearable.SADDLE_BAGS) { return !special && profession != VillagerProfession.NONE && ( - profession == VillagerProfession.FARMER + profession == VillagerProfession.CARTOGRAPHER + || profession == VillagerProfession.FARMER || profession == VillagerProfession.FISHERMAN + || profession == VillagerProfession.LIBRARIAN || profession == VillagerProfession.SHEPHERD); } if (wearable == Wearable.MUFFIN) { return special2; } + if (wearable == Wearable.VILLAGER) { + return hatVisible; + } return super.isWearing(wearable); } @@ -81,7 +90,7 @@ public class ModelVillagerPony e @Override public void setHatVisible(boolean visible) { - + hatVisible = visible; } @Override diff --git a/src/main/java/com/minelittlepony/client/model/gear/AbstractGear.java b/src/main/java/com/minelittlepony/client/model/gear/AbstractGear.java index 1c80c2a7..f222ea73 100644 --- a/src/main/java/com/minelittlepony/client/model/gear/AbstractGear.java +++ b/src/main/java/com/minelittlepony/client/model/gear/AbstractGear.java @@ -1,11 +1,6 @@ package com.minelittlepony.client.model.gear; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.model.Model; -import net.minecraft.client.texture.TextureManager; -import net.minecraft.entity.Entity; - -import org.lwjgl.opengl.GL11; import com.minelittlepony.model.gear.IGear; @@ -17,16 +12,4 @@ public abstract class AbstractGear extends Model implements IGear { init(0, 0); } - - @Override - public void renderSeparately(Entity entity, float scale) { - GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - - TextureManager tex = MinecraftClient.getInstance().getEntityRenderManager().textureManager; - tex.bindTexture(getTexture(entity)); - - renderPart(scale, entity.getUuid()); - - GL11.glPopAttrib(); - } } diff --git a/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java b/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java index 48532f09..badb6305 100644 --- a/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java +++ b/src/main/java/com/minelittlepony/client/model/gear/ChristmasHat.java @@ -82,7 +82,7 @@ public class ChristmasHat extends AbstractGear { } @Override - public Identifier getTexture(Entity entity) { + public Identifier getTexture(T entity, IGearRenderContext context) { return TEXTURE; } diff --git a/src/main/java/com/minelittlepony/client/model/gear/IGearRenderContext.java b/src/main/java/com/minelittlepony/client/model/gear/IGearRenderContext.java new file mode 100644 index 00000000..3581f0ae --- /dev/null +++ b/src/main/java/com/minelittlepony/client/model/gear/IGearRenderContext.java @@ -0,0 +1,13 @@ +package com.minelittlepony.client.model.gear; + +import net.minecraft.entity.Entity; +import net.minecraft.util.Identifier; + +import com.minelittlepony.model.gear.IGear; + +public interface IGearRenderContext { + + IGearRenderContext NULL = (e, g) -> null; + + Identifier getDefaultTexture(T entity, IGear gear); +} diff --git a/src/main/java/com/minelittlepony/client/model/gear/Muffin.java b/src/main/java/com/minelittlepony/client/model/gear/Muffin.java index 295b3357..de767a33 100644 --- a/src/main/java/com/minelittlepony/client/model/gear/Muffin.java +++ b/src/main/java/com/minelittlepony/client/model/gear/Muffin.java @@ -44,7 +44,7 @@ public class Muffin extends AbstractGear implements IStackable { } @Override - public Identifier getTexture(Entity entity) { + public Identifier getTexture(T entity, IGearRenderContext context) { return TEXTURE; } diff --git a/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java b/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java index 0a764963..566b95ab 100644 --- a/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java +++ b/src/main/java/com/minelittlepony/client/model/gear/SaddleBags.java @@ -136,9 +136,8 @@ public class SaddleBags extends AbstractGear { } @Override - public Identifier getTexture(Entity entity) { - // use the default - return null; + public Identifier getTexture(T entity, IGearRenderContext context) { + return context.getDefaultTexture(entity, this); } } diff --git a/src/main/java/com/minelittlepony/client/model/gear/Stetson.java b/src/main/java/com/minelittlepony/client/model/gear/Stetson.java index ef05c4d2..e8dae282 100644 --- a/src/main/java/com/minelittlepony/client/model/gear/Stetson.java +++ b/src/main/java/com/minelittlepony/client/model/gear/Stetson.java @@ -39,7 +39,7 @@ public class Stetson extends AbstractGear implements IStackable { } @Override - public Identifier getTexture(Entity entity) { + public Identifier getTexture(T entity, IGearRenderContext context) { return TEXTURE; } diff --git a/src/main/java/com/minelittlepony/client/model/gear/VillagerHat.java b/src/main/java/com/minelittlepony/client/model/gear/VillagerHat.java new file mode 100644 index 00000000..d1f5b61a --- /dev/null +++ b/src/main/java/com/minelittlepony/client/model/gear/VillagerHat.java @@ -0,0 +1,51 @@ +package com.minelittlepony.client.model.gear; + +import net.minecraft.entity.Entity; +import net.minecraft.util.Identifier; +import net.minecraft.village.VillagerDataContainer; + +import com.minelittlepony.client.util.render.PonyRenderer; +import com.minelittlepony.model.BodyPart; +import com.minelittlepony.model.IModel; +import com.minelittlepony.pony.meta.Wearable; + +import java.util.UUID; + +public class VillagerHat extends AbstractGear { + + private static final Identifier TEXTURE = new Identifier("minelittlepony", "textures/models/antlers.png"); + + private PonyRenderer hat; + + @Override + public void init(float yOffset, float stretch) { + hat = new PonyRenderer(this, 30, 47) + .around(0, 0, 0) + .box(-8, -8, -6, 16, 16, 1, stretch); + hat.pitch = -1.5707964F; + } + + @Override + public boolean canRender(IModel model, Entity entity) { + return model.isWearing(Wearable.VILLAGER); + } + + @Override + public BodyPart getGearLocation() { + return BodyPart.HEAD; + } + + @Override + public Identifier getTexture(T entity, IGearRenderContext context) { + if (entity instanceof VillagerDataContainer) { + return context.getDefaultTexture(entity, this); + } + return TEXTURE; + } + + @Override + public void renderPart(float scale, UUID interpolatorId) { + hat.render(scale); + } + +} diff --git a/src/main/java/com/minelittlepony/client/model/gear/WitchHat.java b/src/main/java/com/minelittlepony/client/model/gear/WitchHat.java index 3342b9ae..0c7ce793 100644 --- a/src/main/java/com/minelittlepony/client/model/gear/WitchHat.java +++ b/src/main/java/com/minelittlepony/client/model/gear/WitchHat.java @@ -50,7 +50,7 @@ public class WitchHat extends AbstractGear implements IStackable { } @Override - public Identifier getTexture(Entity entity) { + public Identifier getTexture(T entity, IGearRenderContext context) { return WITCH_TEXTURES; } diff --git a/src/main/java/com/minelittlepony/client/render/IPonyRender.java b/src/main/java/com/minelittlepony/client/render/IPonyRender.java index 0c21242a..c378175a 100644 --- a/src/main/java/com/minelittlepony/client/render/IPonyRender.java +++ b/src/main/java/com/minelittlepony/client/render/IPonyRender.java @@ -2,8 +2,10 @@ package com.minelittlepony.client.render; import com.minelittlepony.client.model.IPonyModel; import com.minelittlepony.client.model.ModelWrapper; +import com.minelittlepony.client.model.gear.IGearRenderContext; import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.PonyModelConstants; +import com.minelittlepony.model.gear.IGear; import com.minelittlepony.pony.IPony; import com.minelittlepony.util.math.MathUtil; @@ -11,7 +13,7 @@ import net.minecraft.client.render.entity.model.EntityModel; import net.minecraft.entity.LivingEntity; import net.minecraft.util.Identifier; -public interface IPonyRender & IPonyModel> extends PonyModelConstants { +public interface IPonyRender & IPonyModel> extends PonyModelConstants, IGearRenderContext { /** * Gets the wrapped pony model for this renderer. @@ -24,6 +26,11 @@ public interface IPonyRender & Identifier findTexture(T entity); + @Override + default Identifier getDefaultTexture(T entity, IGear gear) { + return findTexture(entity); + } + /** * Called by riders to have their transportation adjust their position. */ diff --git a/src/main/java/com/minelittlepony/client/render/RenderPony.java b/src/main/java/com/minelittlepony/client/render/RenderPony.java index af24dfef..2d774ed6 100644 --- a/src/main/java/com/minelittlepony/client/render/RenderPony.java +++ b/src/main/java/com/minelittlepony/client/render/RenderPony.java @@ -15,6 +15,7 @@ import net.minecraft.client.render.VisibleRegion; import net.minecraft.client.render.entity.model.EntityModel; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.util.Identifier; public class RenderPony & IPonyModel> { @@ -134,6 +135,11 @@ public class RenderPony & IPony return getModel(); } + public void updateMetadata(Identifier texture) { + pony = MineLittlePony.getInstance().getManager().getPony(texture); + playerModel.apply(pony.getMetadata()); + } + public void updateModel(T entity) { pony = renderer.getEntityPony(entity); playerModel.apply(pony.getMetadata()); diff --git a/src/main/java/com/minelittlepony/client/render/entities/RenderPonyVillager.java b/src/main/java/com/minelittlepony/client/render/entities/RenderPonyVillager.java index a95619a7..c308218e 100644 --- a/src/main/java/com/minelittlepony/client/render/entities/RenderPonyVillager.java +++ b/src/main/java/com/minelittlepony/client/render/entities/RenderPonyVillager.java @@ -1,30 +1,21 @@ package com.minelittlepony.client.render.entities; import com.minelittlepony.client.model.entities.ModelVillagerPony; -import com.minelittlepony.client.render.layer.LayerVillagerClothing; -import com.minelittlepony.util.resources.FormattedTextureSupplier; +import com.minelittlepony.client.render.entities.villager.AbstractVillagerRenderer; import com.minelittlepony.util.resources.ITextureSupplier; import com.mojang.blaze3d.platform.GlStateManager; import net.fabricmc.fabric.api.client.render.EntityRendererRegistry; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.entity.passive.VillagerEntity; -import net.minecraft.util.Identifier; -public class RenderPonyVillager extends RenderPonyMob.Caster> { +public class RenderPonyVillager extends AbstractVillagerRenderer> { - private static final ITextureSupplier FORMATTER = new FormattedTextureSupplier("minelittlepony", "textures/entity/villager/%s.png"); - - private static final ITextureSupplier PROFESSIONS = new VillagerProfessionTextureCache<>(FORMATTER); + private static final String TYPE = "villager"; + private static final ITextureSupplier FORMATTER = ITextureSupplier.formatted("minelittlepony", "textures/entity/villager/%s.png"); public RenderPonyVillager(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) { - super(manager, new ModelVillagerPony<>()); - } - - @Override - protected void addLayers() { - super.addLayers(); - addFeature(new LayerVillagerClothing<>(this, "villager")); + super(manager, new ModelVillagerPony<>(), TYPE, FORMATTER); } @Override @@ -33,8 +24,4 @@ public class RenderPonyVillager extends RenderPonyMob.Caster { +public class RenderPonyZombieVillager extends AbstractVillagerRenderer { - private static final ITextureSupplier FORMATTER = new FormattedTextureSupplier("minelittlepony", "textures/entity/zombie_villager/zombie_%s.png"); - - private static final ITextureSupplier PROFESSIONS = new VillagerProfessionTextureCache<>(FORMATTER); + private static final String TYPE = "zombie_villager"; + private static final ITextureSupplier FORMATTER = ITextureSupplier.formatted("minelittlepony", "textures/entity/zombie_villager/zombie_%s.png"); public RenderPonyZombieVillager(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) { - super(manager, new ModelZombieVillagerPony()); - } - - @Override - protected void addLayers() { - super.addLayers(); - addFeature(new LayerVillagerClothing<>(this, "zombie_villager")); - } - - @Override - public Identifier findTexture(ZombieVillagerEntity entity) { - return PROFESSIONS.supplyTexture(entity); + super(manager, new ModelZombieVillagerPony(), TYPE, FORMATTER); } @Override diff --git a/src/main/java/com/minelittlepony/client/render/entities/villager/AbstractVillagerRenderer.java b/src/main/java/com/minelittlepony/client/render/entities/villager/AbstractVillagerRenderer.java new file mode 100644 index 00000000..3c3a3481 --- /dev/null +++ b/src/main/java/com/minelittlepony/client/render/entities/villager/AbstractVillagerRenderer.java @@ -0,0 +1,48 @@ +package com.minelittlepony.client.render.entities.villager; + +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.model.ModelWithHat; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.util.Identifier; +import net.minecraft.village.VillagerDataContainer; + +import com.minelittlepony.client.model.ClientPonyModel; +import com.minelittlepony.client.render.entities.RenderPonyMob; +import com.minelittlepony.client.render.layer.LayerGear; +import com.minelittlepony.client.util.render.PonyRenderer; +import com.minelittlepony.model.IUnicorn; +import com.minelittlepony.model.gear.IGear; +import com.minelittlepony.util.resources.ITextureSupplier; + +public abstract class AbstractVillagerRenderer< + T extends MobEntity & VillagerDataContainer, + M extends ClientPonyModel & IUnicorn & ModelWithHat> extends RenderPonyMob.Caster { + + private final ITextureSupplier professions; + + private final String entityType; + + public AbstractVillagerRenderer(EntityRenderDispatcher manager, M model, String type, ITextureSupplier formatter) { + super(manager, model); + + entityType = type; + professions = new PonyTextures<>(formatter); + addFeature(new ClothingLayer<>(this, entityType)); + } + + @Override + public Identifier getDefaultTexture(T villager, IGear gear) { + if (gear == LayerGear.SADDLE_BAGS) { + return ClothingLayer.getClothingTexture(villager, entityType); + } + if (gear == LayerGear.VILLAGER_HAT) { + return ClothingLayer.getHatTexture(villager, entityType); + } + return super.getDefaultTexture(villager, gear); + } + + @Override + public Identifier findTexture(T villager) { + return professions.supplyTexture(villager); + } +} diff --git a/src/main/java/com/minelittlepony/client/render/entities/villager/ClothingLayer.java b/src/main/java/com/minelittlepony/client/render/entities/villager/ClothingLayer.java new file mode 100644 index 00000000..9fa741e5 --- /dev/null +++ b/src/main/java/com/minelittlepony/client/render/entities/villager/ClothingLayer.java @@ -0,0 +1,62 @@ +package com.minelittlepony.client.render.entities.villager; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.entity.feature.FeatureRendererContext; +import net.minecraft.client.render.entity.feature.VillagerClothingFeatureRenderer; +import net.minecraft.client.render.entity.model.EntityModel; +import net.minecraft.client.render.entity.model.ModelWithHat; +import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.entity.LivingEntity; +import net.minecraft.resource.ReloadableResourceManager; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; +import net.minecraft.village.VillagerDataContainer; +import net.minecraft.village.VillagerProfession; +import net.minecraft.village.VillagerType; + +import com.minelittlepony.client.model.IPonyModel; +import com.minelittlepony.client.render.IPonyRender; +import com.minelittlepony.client.render.RenderPony; + +public class ClothingLayer< + T extends LivingEntity & VillagerDataContainer, + M extends EntityModel & IPonyModel & ModelWithHat, + C extends FeatureRendererContext & IPonyRender> extends VillagerClothingFeatureRenderer { + + private final RenderPony renderer; + + public ClothingLayer(C context, String type) { + super(context, (ReloadableResourceManager)MinecraftClient.getInstance().getResourceManager(), type); + renderer = context.getInternalRenderer(); + } + + public static Identifier getClothingTexture(VillagerDataContainer entity, String entityType) { + VillagerProfession profession = entity.getVillagerData().getProfession(); + + return createTexture("minelittlepony", "profession", entityType, Registry.VILLAGER_PROFESSION.getId(profession)); + } + + public static Identifier getHatTexture(VillagerDataContainer entity, String entityType) { + VillagerType villagerType = entity.getVillagerData().getType(); + + return createTexture("minecraft", "type", entityType, Registry.VILLAGER_TYPE.getId(villagerType)); + } + + public static Identifier createTexture(String namespace, String type, String entityType, Identifier profession) { + return new Identifier(namespace, String.format("textures/entity/%s/%s/%s.png", entityType, type, profession.getPath())); + } + + @Override + public void bindTexture(Identifier texture) { + + if (texture != SpriteAtlasTexture.BLOCK_ATLAS_TEX) { + if (!"minelittlepony".contentEquals(texture.getNamespace())) { + texture = new Identifier("minelittlepony", texture.getPath()); + } + } + + renderer.updateMetadata(texture); + + super.bindTexture(texture); + } +} diff --git a/src/main/java/com/minelittlepony/client/render/entities/VillagerProfessionTextureCache.java b/src/main/java/com/minelittlepony/client/render/entities/villager/PonyTextures.java similarity index 87% rename from src/main/java/com/minelittlepony/client/render/entities/VillagerProfessionTextureCache.java rename to src/main/java/com/minelittlepony/client/render/entities/villager/PonyTextures.java index 7f12a19a..d7733286 100644 --- a/src/main/java/com/minelittlepony/client/render/entities/VillagerProfessionTextureCache.java +++ b/src/main/java/com/minelittlepony/client/render/entities/villager/PonyTextures.java @@ -1,7 +1,8 @@ -package com.minelittlepony.client.render.entities; +package com.minelittlepony.client.render.entities.villager; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.passive.VillagerEntity; import net.minecraft.util.Identifier; import net.minecraft.village.VillagerData; import net.minecraft.village.VillagerDataContainer; @@ -18,7 +19,7 @@ import java.util.Optional; /** * Cached pool of villager textures. */ -class VillagerProfessionTextureCache implements ITextureSupplier { +class PonyTextures implements ITextureSupplier { private final ITextureSupplier formatter; @@ -36,7 +37,7 @@ class VillagerProfessionTextureCache formatter) { + public PonyTextures(ITextureSupplier formatter) { this.formatter = formatter; this.fallback = formatter.supplyTexture("villager_pony"); this.egg = formatter.supplyTexture("silly_pony"); @@ -55,6 +56,9 @@ class VillagerProfessionTextureCache & IPonyModel> extends AbstractPonyLayer { + public static final IGear SADDLE_BAGS = new SaddleBags(); + public static final IGear WITCH_HAT = new WitchHat(); + public static final IGear MUFFIN = new Muffin(); + public static final IGear STETSON = new Stetson(); + public static final IGear ANTLERS = new ChristmasHat(); + public static final IGear VILLAGER_HAT = new VillagerHat(); + private static List gears = Lists.newArrayList( - new SaddleBags(), - new WitchHat(), - new Muffin(), - new Stetson(), - new ChristmasHat() + SADDLE_BAGS, + WITCH_HAT, + MUFFIN, + STETSON, + ANTLERS, + VILLAGER_HAT ); public LayerGear(IPonyRender renderer) { @@ -75,12 +83,7 @@ public class LayerGear & IPonyM private void renderGear(M model, T entity, IGear gear, float move, float swing, float scale, float ticks) { GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - Identifier texture = gear.getTexture(entity); - if (texture == null) { - texture = getContext().findTexture(entity); - } - - getContext().bindTexture(texture); + getContext().bindTexture(gear.getTexture(entity, getContext())); gear.setLivingAnimations(model, entity); gear.setRotationAndAngles(model.getAttributes().isGoingFast, entity.getUuid(), move, swing, model.getWobbleAmount(), ticks); diff --git a/src/main/java/com/minelittlepony/client/render/layer/LayerVillagerClothing.java b/src/main/java/com/minelittlepony/client/render/layer/LayerVillagerClothing.java deleted file mode 100644 index e082c82f..00000000 --- a/src/main/java/com/minelittlepony/client/render/layer/LayerVillagerClothing.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.minelittlepony.client.render.layer; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.entity.feature.FeatureRendererContext; -import net.minecraft.client.render.entity.feature.VillagerClothingFeatureRenderer; -import net.minecraft.client.render.entity.model.EntityModel; -import net.minecraft.client.render.entity.model.ModelWithHat; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.entity.LivingEntity; -import net.minecraft.resource.ReloadableResourceManager; -import net.minecraft.util.Identifier; -import net.minecraft.village.VillagerDataContainer; - -public class LayerVillagerClothing & ModelWithHat> extends VillagerClothingFeatureRenderer { - - public LayerVillagerClothing(FeatureRendererContext context, String type) { - super(context, (ReloadableResourceManager)MinecraftClient.getInstance().getResourceManager(), type); - } - - @Override - public void bindTexture(Identifier texture) { - - if (texture != SpriteAtlasTexture.BLOCK_ATLAS_TEX) { - if (!"minelittlepony".contentEquals(texture.getNamespace())) { - texture = new Identifier("minelittlepony", texture.getPath()); - } - } - - super.bindTexture(texture); - } -} diff --git a/src/main/java/com/minelittlepony/model/gear/IGear.java b/src/main/java/com/minelittlepony/model/gear/IGear.java index 685fb23d..ee4b073b 100644 --- a/src/main/java/com/minelittlepony/model/gear/IGear.java +++ b/src/main/java/com/minelittlepony/model/gear/IGear.java @@ -3,12 +3,11 @@ package com.minelittlepony.model.gear; import net.minecraft.entity.Entity; import net.minecraft.util.Identifier; +import com.minelittlepony.client.model.gear.IGearRenderContext; import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.IModel; import com.minelittlepony.model.IPart; -import javax.annotation.Nullable; - public interface IGear extends IPart { /** @@ -30,8 +29,7 @@ public interface IGear extends IPart { * Gets the texture to use for this wearable. * Return null to use the same as the primary model. */ - @Nullable - Identifier getTexture(Entity entity); + Identifier getTexture(T entity, IGearRenderContext context); /** * Orients this wearable. @@ -39,9 +37,4 @@ public interface IGear extends IPart { default void setLivingAnimations(IModel model, Entity entity) { } - - /** - * Renders this wearable separately. (used outside of the gear render layer) - */ - void renderSeparately(Entity entity, float scale); } diff --git a/src/main/java/com/minelittlepony/pony/meta/Wearable.java b/src/main/java/com/minelittlepony/pony/meta/Wearable.java index d8fae8c2..9f162789 100644 --- a/src/main/java/com/minelittlepony/pony/meta/Wearable.java +++ b/src/main/java/com/minelittlepony/pony/meta/Wearable.java @@ -11,6 +11,7 @@ public enum Wearable implements ITriggerPixelMapped { HAT (0x64), ANTLERS (0x96), SADDLE_BAGS (0xC8), + VILLAGER (0x11), STETSON (0xFA); private int triggerValue; diff --git a/src/main/java/com/minelittlepony/util/resources/FormattedTextureSupplier.java b/src/main/java/com/minelittlepony/util/resources/FormattedTextureSupplier.java deleted file mode 100644 index 0f7236a6..00000000 --- a/src/main/java/com/minelittlepony/util/resources/FormattedTextureSupplier.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.minelittlepony.util.resources; - -import net.minecraft.util.Identifier; - -/** - * Supplies new resource locations based on a pre-defined domain and formatted path. - */ -public class FormattedTextureSupplier implements ITextureSupplier { - - private final String domain; - private final String path; - - public FormattedTextureSupplier(String domain, String path) { - this.domain = domain; - this.path = path; - } - - @Override - public Identifier supplyTexture(String key) { - return new Identifier(domain, String.format(path, key)); - } -} diff --git a/src/main/java/com/minelittlepony/util/resources/ITextureSupplier.java b/src/main/java/com/minelittlepony/util/resources/ITextureSupplier.java index 6a520e3e..539e9a0a 100644 --- a/src/main/java/com/minelittlepony/util/resources/ITextureSupplier.java +++ b/src/main/java/com/minelittlepony/util/resources/ITextureSupplier.java @@ -11,4 +11,8 @@ public interface ITextureSupplier { * Supplies a new texture. May be generated for returned from a pool indexed by the given key. */ Identifier supplyTexture(T key); + + static ITextureSupplier formatted(String domain, String path) { + return key -> new Identifier(domain, String.format(path, key)); + } } diff --git a/src/main/java/com/minelittlepony/util/resources/IntStringMapper.java b/src/main/java/com/minelittlepony/util/resources/IntStringMapper.java deleted file mode 100644 index 17303fa2..00000000 --- a/src/main/java/com/minelittlepony/util/resources/IntStringMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.minelittlepony.util.resources; - -import com.google.common.collect.Maps; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; - -/** - * Simple mapping from an integer index to a pre-defined set of strings. - * Returns the string representation of the index if no value was found. - */ -public class IntStringMapper implements Function { - - private final HashMap values = Maps.newHashMap(); - - /** - * Creates a new string mapper pre-populated with the provided values by index. - */ - public IntStringMapper(String...values) { - for (int i = 0; i < values.length; i++) { - this.values.put(i, Objects.requireNonNull(values[i])); - } - } - - /** - * Return the values. So you can actually modify it. - * I mean, if you want to @modders... - */ - public Map getValues() { - return values; - } - - @Override - public String apply(Integer t) { - if (values.containsKey(t)) { - return values.get(t); - } - return String.valueOf(t); - } -} diff --git a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/cartographer.png b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/cartographer.png index 2e243c6f99e38027e37533eb09f8012247ee861a..bde2910208c1ecf499f7b6fd59d5d9cc977b846b 100644 GIT binary patch delta 1434 zcmV;L1!elIAgv&x;wgN=X;s6=giE`|NY;8IXlb!`QsvT|1E!ovt0lH)E_Sc05o12 zzZKQl*i&z9@CN)6W$d=NEqvO zq1LXVGA{&44lo5!uSXI>5sR#}6Hu8Kf?wU4Zm2$%_FO#-ZFx1s#3<1>hMkT_=O9Sw$IhgRSU|Od=soD!62IGF6;f7}ZES@_72wKccRoF&_+tSbm^AL5JJJ!XmtHh*uft zxuR%=qNsnY$50d%KGhMefJpQpJN;L*{xIIh>$;u)< zml6qp8Q(s(1lXY}nbguF9 zJJ>Ju;4J_^KgQ!H!AQK_(!!EsWU{1di9iii6qSVljawQH$v_AJAtdf+y*P_{oJGB6 z&XVk+(c*k2aY>dn8;nsMU+PmGfC^L>tZ7Q#PJdqr;C}K<9fSPcV5qAJ9c~YP#$?o* zMel!2eBOCDs;i>L$?&+Y835p&x)F08@E9ulp{^!W7p$?P_faX}-U9)S>MHoW^K86Z zJTrKILCdDI#E+Tv(x`-)FbPVs40&}8wz5(HfV{efA9^mv+-K90m`Yy}Bq3~VZ^4pd zfxz)P@=N^Zqo_Y#MvA3d_^r1OkiG`&U!s40_yLNgTX=12T)zVL0|LiG$W8BVZ`mI} zQ2Gnp+y)4l1Glol=3eCg**yV~3DIt|rR@2Ggf0T))wQ_ulz@Xoyyr`KFF?H<-ND&1 z!h3q2Z}`H8)OhaxZx!bl8z6SnyfXZEzxws^NbJ z;6xrDoO=U&?h)851(}rujX+(M0-zPI+yj8~JCjua&*uhZ*m;{)fT-GIaK=Vyg2SHt*j2g3Ag52K&p{@%FE0004dOT+bc_gd^PWtRbMh zXq}Dci@tica3_ltaH4`BpzMtEMQwjlG^+sJZq98LLZKZKg%xBl-Nn?4nb8|};l-eeh;wT}2?cSnwzO;G z$)fQj&a;c|J?7-QO;S^H{x|2%`<`=hp8xZIKHi*2e|&$375{(K;n{Bopmk$C0PRQn zSqf|#9l+(RMh!)0Jz$7m=|kn`R2+MBuUEJZEd?fWXL>SSxct? z;W=SICggKYvZ|6h$ebbY!oUeSFI_^{b^6YoHW7bws;!N`4s_)Vfy5XV(id~>pI&CE zaELbm=;K1>B$$jhJ3Ec!n4B!dS~dtnqfyNW0TH(%9CAU|b#z_N_&HzfqLp2=n&xb| zE*e@}ZAe@VhfN!dp*+4csJTId=GD`tk~iPq*8sog&eUnhUkCI81nI8fSeS0O6@=zB_az?LJ$S#6tRtm>%cR<44%4Y}h3^ zkNlGP`2<=w*6VB4^Ze3#7}PJp^*OD_uCsquJEC{FQ;~J&a&`c zKF@b-@B8}cpT^jJ<{iepKhV_Q$*()l@lpFQn{3x|H$uxDEA2Ku>9~lb$TS_hj--Fc zytn%`wKCHaDhkn{P}=l|jIb38}Cu zu$=MkzJD3$tLMO>DXt#)%9!`feI``|0Rw&Y#_{6MI{`TS)|tvtKq3+iuNVRvYG;h` zcxsttx*Y_V|nKy%+P_z(P>y^JVG-df%?nZ%jx?rFdvh zOTRQXckA(*H7^4&H+PG>6DOo{R7Xkn0%N0Iok~VSW0&q}>DLn!p*J*k=@p}Z<%E(F zaG|zA|8|v2uUG;=;G>E+z}C*wa^`LPkOY~6t600000NkvXXu0mjf^-#9n diff --git a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/farmer.png b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/farmer.png index efd8a89d801dd1a1ef6adb653fa788c0114b2f20..89218d5e2d664ed2cbd45fbda70e97da6a867e7d 100644 GIT binary patch delta 1690 zcmV;L24(rGBC8^>rV4*>Nklw9SseeKH_7Yz2C2LL4c zfA-vX{#{O>Y8oU#a9s}y02=|q1q&OtqVMQi7`X70rw$mI60xvhD*zy=D3&9KSuRnU zCU*mAF1>xC4VQo8J~Y4cDP{vnMS*Wi699l{8mJ&Z?;Su=Q6S1P06>&w=zW9G8iJ4- z>ml04OO60LX3O~Sk+INy5OnS*YnmBNkz#_f*fpm8i!i9XC2QqR%jG(w&x1kiO+1jBnY65^_KgR zijr0onMr?=pY!{Tl*^^q$8YWcV+&n0hj;GD`uSC-zJRJ}h@R?l^j!0~L@88FGn_{Am65Bvj^kSB7^2^vG2}PS zbYtZ65LR~`$G*_%l8iSOJEANbGoA~>JNG!Q3hjSUp!W?z5(H=s!BoWMd%&I-UQCe% zAy)Dr#270DW}-_f3iRFqNP>X6lbv~;;54o5QNYtcYX}xbg7J790O0rgT_eHo}y|UvA#da1>*5I;-k0VU;aeu zdh`~)IdULlpUs!VQtAqoFeJesfj1u6&$e z;y%No$H>ezFmaz@EK!65_zc?#ajq-MeBgh^12CL1mSD~t5FfpjRqp1BP%N_PXE!*L zGxBmkCX|EGx%4yR*^xFD8wZ*L1iyYbjZsRmy`3N&VTCP&4>OtrDT7BT#d2LoIKt2z zAgEbVW+dn(*46>d?F2v-ChoJ`TVnGKW)9%z+zAyC0b>bZEWu3ItUT)guMistYLtH6qLK&}Xw_as=e1Q@#hfCR%4W}E|n zP|W6rx%PH*Zy?)7j2o38U;lY0c&{X9znZn)jxZ1TB=>m+};H5kk~)^hM**>QxU2uMsh{~7vZB!U%L#`^Z} z_r!=o^z#IJDP`x@tz&;3I%FKp9FT8(EEv0Gl4ILe2vkDM5iLj0_%S`VI1ONd43=LW2E0W2ws|P$;4K|4)+a!u* z$^NcKK(-Rtj(Iur4>QQN^}&)tve4$Em}bXI{eR<5@Q1K3MeLo-*^8J4A_5Hc@FL?=TI~+=rIemYi z)b|hK@i;o)ZGDsiPVi(+EqlZPmFfUK`(Tf5OYcRPwY(@SUT$7d5x^pD-$jBw;a+Wvwv kIaxU`O2+PP&M5yMwMi0)i^L{}tN;K207*qoM6N<$f{nZ{*8l(j delta 1689 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 delta 1689 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 diff --git a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/shepherd.png b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/shepherd.png index efd8a89d801dd1a1ef6adb653fa788c0114b2f20..8aefd55de75a254f0fbafe3b111b924c0a170408 100644 GIT binary patch delta 1691 zcmV;M24wlFBCH~?rV4*?Nkl$2J7doB$xxSYMNniUi#sz~t=K%nT z{+~TJo`07UsG0^z5M0-T0>DOqaKXZct>`=Y76vZ-XB(gXk?ng%Ke(0d1vR1}D^3;+;i8G7F!w1yz0 z#(Idh@scCJj@dFkeB^ETwlqQ2GypI{oHo`Q#+heZ5(KE4W{kTL326>ky1R2$jK6)N z&63-C?*R1P0mB(uL(rIIZs^o+J%$t9iU0v~gr&PX(F}i}yFUzlW~N11PO*GreJUEZ zG(qnjFq|OD@&kvtVEmjqz{~-nEL%d}oa5&4q@ut#lO}FO0LiybdX4U(aGEn{V}084 zXI=*F^?=zKye@dE_4T~QlOPA1p2nfp?ODfjjTIUNob9=ScH%P|F9`x@W4-0R zq@tu1MP`4J441^H8cl0Ze zs^YWB9R6fR!Qq{IvVMNmsV|^v8ltDV96i^3E>Q|q(+sE4d}ZY7uH(2CI)>=CXAJp` zGu;^ZJcQL<$FVPTx+LSx#f~V;#*F8}@XkGst3rQ!6zF|}kOTo*LogL_`5v(6g%?v~ zL5P(+2rDh;kzhO?2LSl}e%DCwJ2_#g z{Orek%}zGhNzlG(aH6G79~d3J3cueEzu%AO@Kx6wV6W`Bl4SEn%W6<4u7!@JrI$G} zc+r35IC*PVtuYL*UA4wF2e1o&K%ZfM-V3M>h_DcHwbv7dQ~EFEPJwtlj`-*;_?JJC zx*olSZ;l+u*k|)4v6Q+(B@9V0h#-&{ag>tT^y3JT6 z7;_A0RA9FQvl<~<44ECGhDKOn(ygc;`m zAQZE?VXnR1+#ATY5#vTB$k%_~37-3)ijDlo^7o$G)(6=_UuqK}F{R+_pO+lGY8}wpGy$89B@Mv(WI*Akt8&!Dy|b^d_zY^*{lM@O(Lvg%reuv0s#QPKSM(n`HEz+?CJqeR)bBV$To>$ zS+c+D5s<9}wqst-{KE{gZGEt$kSw(MD5lx*Qa@q2e{t49WpXm3TwbtX)@I0S{bdwqW{{YzfL+75@(WKQ27 zDE0k=cs!2IcUvE&fD=4fQ_CK4K&3i>&wi#Ts0at#j77-;pAR=l^MA)ZCH2{R3PssPK+oUyOr)rmc~IDouw17M((`^twG33tRi@{bkptA{I@3aU z+F>1_#^b=**3u%N)P5Tt>?*mvUr;SyHX^|Od4YFI#q`qI`tjL>6a8a%HzORmkhZ^| lOiotLi;}Usn={J)2Q(8;iHzF<0IdK3002ovPDHLkV1o3AG3fvR delta 1689 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 b?^galL>Yp|91Og!00000NkvXXu0mjf@VyCq diff --git a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/farmer.png b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/farmer.png index 4133047bea5fdfa75901420a2a5e2fead7de2674..2c82733d14ab61bf099fca908a955d3fe26922b9 100644 GIT binary patch delta 5115 zcmVfB z3TOhp$V(ifTC;;Hf*20#`SC0>9wJ%4Ch8xyCX3K zc2;}roEsU36**;AVa0lPjfRMr(A#2zuFmFPeTw02_fvmb12|T3z3<**=1#75j*-&Z z@$*~Jgh3-QL_`A-1%#9$L?wrOqX543mw%Eb!dxqeP)kKqq}E1hl`uro?m!$e>)ka| z*>Z6C8aP;YdMotaX>M3@=2CD27qD)m5Siz~YyaJEoU(0u==0b^pFb8xd&@n?t9-=h z{JRex3*moOHK26^cf1?jI|yWnNQ2`2MiYoZ>8eO?hzq?pBuA_|T_K6$?hGMPY9Wr9 zF%4XP>N0KyJ0p1LPbr1Eo!Ram;7N&^DArgJkt7%b4cgEtQ$@Q{w}mv0r&Ru=jUOG4 z&WA%Yxn&>FD??h-yyFyBabPZmUJXlv{N&&JS>x6UdLjA5X8XP!Gb1U~T({^_X~zVib=gQ@eI zAO2^j?|jcCrynzLG)Xy};8%Y7=bnF8 ztzZA~e?n=ECqDi!UKj+OFp;D4tV(I^SZFGuta76Ej)p)aU{dL3yz>J;%dfosZ2-7C z2&_UnzW$ZBzl{ez^gciqsrF@+lSG0CybD7NgrJmC>DEx7w$AnKL_Y&|(l{Qk_zTfj ze){Kb85N$@0{iS2$T8C1a?hf1c}Rb_C?N>j%?1gA#)w2gg7b#^4?&6uF$8Ms$JcMT z|9&J!aHF(J)BsVabAbrG6uLlAMcnD;)KXdJOiWKYA_z}ixDy@ZQ!=f#USPSSvi;0QTKdQ+-bQVckeE@0J2 zF=Nv4s5Cc%1bo}+N$}777wpjcALRn&798O%Wr8PiiIaHZSSX+S67qjjfB$_16Si$8 zdZ6?|8WI>>diDyJzx6bGfA|i@n0e;gPw~ay_>Tbm)Cb>-hXvjO{Kh~0=K#Fp{eOeJ z%HYtgQa7FT?uZ*~`%H{safIHH4ml*MbfPON%1k4=($(3CD_W~G9JfYF19O>3lIamH zJ^eKM-@eTGAGiY$u6}>#694VjKXXb5zwqb9&kE+5{S(O7iqTaV@``z$5DoOX6UPiV zafl2lQ>+QL@=D#162&~usf_d=rbzdz2oAT2}uJ2bOhHiz_~8BNN;{+89=4qiH&Rxz9q(o$9nPa2|M|bjxEdE{>jJ<3>wNVoc+=hR$iFeJ zitwl2Ej)kv#Nrwh7epY%%(TD3RH)YQZph(ks04_CR%c3U3>v|NnBubXwV(z;lvXRl zdQCs54C9J!4Lfv0LiKeVF`_*N(_me)ebQy%4UmO0~2h3N?+99g{gMR z+z15Rp}Sy!QeV}C#Hxa1lI-6 z*CmHnh1x10c&kia8DgfiLLd-=&>GC!1CnIgW@22gDDzAh2U^>ZBr)|u9#rTWYf@>E@Fn1}R3 zuY!M_cP~FUn4Sv^+DoU^wxGXNq-`cl1QACf3$zWLRtgdVh9C&jw4rSao6UypwJl|Ud$xv+tQ{n2fR~MA2!s`4Et5ss&pD3+h-KkT7=4|&5Kp=$y>XOgbQfRHy z+f1(oB{1%+31ej3UE$)aRs%5yVhWfWZ7zSL2u>4(WBc;T=ofy`c+B@Dl!G&RG z#8(BI8%{%_a&YxJY0QYj!L{p)AW&wntkQ~=+z<)$(ujY< zfZD?JwJluRKDX*8&!Y(7LW+v1us*j-*`K)n%ym}zFlAgNQVolp=12~KgJ}yI2x9~U z)qvw{HZyw{)`$fDrbsWJCoQrCTAW;z`Jw8FmJ) zUA<0FK|K(MNIT3vr-O+gLXH8C%4C1WIz?Kq$H3>VJx-nfUo(3RQ>t_cu=EKaRT zC6S2h1g�Z5Ymv%+pMt3z&bQx}@Y*SVCqLyefT~kL~_61~_2?Wn0L*@vz`w2#M{r zeME$v^$zp2U3LNmq6Ex3p)X-k$3suAiXU!ywQ6Jy47(#<3S!EpHKHykPR)ox7>1F# z&0H@Nc^H`YucIF6dQ?VV{K6^@R9#GosN@>4sgY773=uWO1!|oa|1y6ltu(3i{>(2$OEmm7aI;DiZGwU9L8YPbkPNVK}3G0n+afVtDW6D1H7f+nUiqiNAFcPDA2nNz%C?!+d< zJTQcSTSE!Zg(Lw_iX0drCqy9xrF+B0xodB+`6DOz=o5Z?4j_MT`b+nrDH0_tQm%#t zK}A8KP4#d!gjyO|blFjnfQj)#fBf|zU}ofykiMk4F(q2-h&KWeL}|ScQ$i5D^+Wt` zXb9koPoX)UmC%(=<7>b72h>*4!(75jLx%+JU{1#gs;CBPT@tGt5@roT;J$00_OsdG z(fPM8FB_(7VDo=`S=5ie^&a+yrHHUUZ~3kN`lVYcM!aA3l(GG?neZ~ucRRmh6L=x! zzZ*JY{4B%IcmI_pz1=T-`#tyE^#0dV;_E5#{YJMWfc<&P{(Ngq2_Jjxv76q1ZLKdG z6E9_cFAKe2)qm&BZ}x{j@{!}?NgwcH&tFNpE%x}HVQ_zd`%B@$oVmXgz9w>P@9$Uj zuc!39&tFN3x8o(RtySKB&pm$Ofd_cQCqBW^@jrd}%MS3shd<1f=kCkL9(&ARTdVxP zr~&d|&VIDgPaHzAzt-CE%0HO1++T`+O+Ug&*cdN?L z^@BMdJ^z2c359Yy9pUTTPp&lYed8MeZQR4_4{hh@-hhF2>2X1IzRDW{{4mo|Gy{s@weXdJ-y(i zCLiBTvh#AzFTU#hMF5_USIR4N5op*8W+yzt|kMQ^-U*Y^~?m~)j_33B%!eM{H?Wz~V+r3Ir z1nYktK~Q&^bR-C^w`KSDMX2$Ae(IGqfv9>Y#ttf!xq?Hp zP9zXKFxQz@D!nfKK;E2M8e&4!u=FS6%x&3tUG0ucrP5kuE;GG#tTjsOh%IBi8Bu?4 zy~OsKAH4hJsRvX#UOUztaz{d-^^SML+*q&IxCt)HZq0T(FQs#-wX z`C!7Vk;2H_4VO;Gi72%eDvs*Xf&R)nLGQ#N6LTPI!l#0|Fs9Y9)9bA+Jq6n>8kbKf zcGkOOSvo!>3DTf@C#Jw^m09oZ;HqAD5Q6H`&L5m4fpyAQZ_bDQx12L~HuGOj#*nW@anS7l-OX2=yfhSg3Fj+!HV`8J{TMyZt{Bs47F zG6a+^P`lwcLl|ypj+0g$lL0xC>K!j2A_}W~q!ee5oVs2ZdU15P%CO3M;=Q*~0Htiu zm{DQblQ|wSf9I&RBRN8|<1bCFJ$nTn{>|@A1HRXMdlQ!4027ERl&c4Xka*~cBIj)evLFI`HJ)(RSg^)OI+BcTi_QKyDvA!#J8Ml?s#bZ{!uyIHN`sjHV6 zcYaJBed5!8mWS;$5%-4i6jnZY{;KmAZ(#aHFdZ=O#E?LiSe`6U=&W+a#gGcag%yZ1 z&0EIxNk~*>J5Ng|nag1d-b{>28Zxt2a>!JxppLErL6<(j#`1~IN#AkA$64HeH2-nu d$8H)e{x@~|X#8YL=LY})002ovPDHLkV1f;_%3%Ni delta 5112 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 a#s3C8OK1Efi;Ft|0000fB z3TOhp$V(ifTC;;Hf*20#`SC0>9wJ%4Ch8xyCX3K zc2;}roEsU36**;AVa0lPjfRMr(A#2zuFmFPeTw02_fvmb12|T3z3<**=1#75j*-&Z z@$*~Jgh3-QL_`A-1%#9$L?wrOqX543mw%Eb!dxqeP)kKqq}E1hl`uro?m!$e>)ka| z*>Z6C8aP;YdMotaX>M3@=2CD27qD)m5Siz~YyaJEoU(0u==0b^pFb8xd&@n?t9-=h z{JRex3*moOHK26^cf1?jI|yWnNQ2`2MiYoZ>8eO?hzq?pBuA_|T_K6$?hGMPY9Wr9 zF%4XP>N0KyJ0p1LPbr1Eo!Ram;7N&^DArgJkt7%b4cgEtQ$@Q{w}mv0r&Ru=jUOG4 z&WA%Yxn&>FD??h-yyFyBabPZmUJXlv{N&&JS>x6UdLjA5X8XP!Gb1U~T({^_X~zVib=gQ@eI zAO2^j?|jcCrynzLG)Xy};8%Y7=bnF8 ztzZA~e?n=ECqDi!UKj+OFp;D4tV(I^SZFGuta76Ej)p)aU{dL3yz>J;%dfosZ2-7C z2&_UnzW$ZBzl{ez^gciqsrF@+lSG0CybD7NgrJmC>DEx7w$AnKL_Y&|(l{Qk_zTfj ze){Kb85N$@0{iS2$T8C1a?hf1c}Rb_C?N>j%?1gA#)w2gg7b#^4?&6uF$8Ms$JcMT z|9&J!aHF(J)BsVabAbrG6uLlAMcnD;)KXdJOiWKYA_z}ixDy@ZQ!=f#USPSSvi;0QTKdQ+-bQVckeE@0J2 zF=Nv4s5Cc%1bo}+N$}777wpjcALRn&798O%Wr8PiiIaHZSSX+S67qjjfB$_16Si$8 zdZ6?|8WI>>diDyJzx6bGfA|i@n0e;gPw~ay_>Tbm)Cb>-hXvjO{Kh~0=K#Fp{eOeJ z%HYtgQa7FT?uZ*~`%H{safIHH4ml*MbfPON%1k4=($(3CD_W~G9JfYF19O>3lIamH zJ^eKM-@eTGAGiY$u6}>#694VjKXXb5zwqb9&kE+5{S(O7iqTaV@``z$5DoOX6UPiV zafl2lQ>+QL@=D#162&~usf_d=rbzdz2oAT2}uJ2bOhHiz_~8BNN;{+89=4qiH&Rxz9q(o$9nPa2|M|bjxEdE{>jJ<3>wNVoc+=hR$iFeJ zitwl2Ej)kv#Nrwh7epY%%(TD3RH)YQZph(ks04_CR%c3U3>v|NnBubXwV(z;lvXRl zdQCs54C9J!4Lfv0LiKeVF`_*N(_me)ebQy%4UmO0~2h3N?+99g{gMR z+z15Rp}Sy!QeV}C#Hxa1lI-6 z*CmHnh1x10c&kia8DgfiLLd-=&>GC!1CnIgW@22gDDzAh2U^>ZBr)|u9#rTWYf@>E@Fn1}R3 zuY!M_cP~FUn4Sv^+DoU^wxGXNq-`cl1QACf3$zWLRtgdVh9C&jw4rSao6UypwJl|Ud$xv+tQ{n2fR~MA2!s`4Et5ss&pD3+h-KkT7=4|&5Kp=$y>XOgbQfRHy z+f1(oB{1%+31ej3UE$)aRs%5yVhWfWZ7zSL2u>4(WBc;T=ofy`c+B@Dl!G&RG z#8(BI8%{%_a&YxJY0QYj!L{p)AW&wntkQ~=+z<)$(ujY< zfZD?JwJluRKDX*8&!Y(7LW+v1us*j-*`K)n%ym}zFlAgNQVolp=12~KgJ}yI2x9~U z)qvw{HZyw{)`$fDrbsWJCoQrCTAW;z`Jw8FmJ) zUA<0FK|K(MNIT3vr-O+gLXH8C%4C1WIz?Kq$H3>VJx-nfUo(3RQ>t_cu=EKaRT zC6S2h1g�Z5Ymv%+pMt3z&bQx}@Y*SVCqLyefT~kL~_61~_2?Wn0L*@vz`w2#M{r zeME$v^$zp2U3LNmq6Ex3p)X-k$3suAiXU!ywQ6Jy47(#<3S!EpHKHykPR)ox7>1F# z&0H@Nc^H`YucIF6dQ?VV{K6^@R9#GosN@>4sgY773=uWO1!|oa|1y6ltu(3i{>(2$OEmm7aI;DiZGwU9L8YPbkPNVK}3G0n+afVtDW6D1H7f+nUiqiNAFcPDA2nNz%C?!+d< zJTQcSTSE!Zg(Lw_iX0drCqy9xrF+B0xodB+`6DOz=o5Z?4j_MT`b+nrDH0_tQm%#t zK}A8KP4#d!gjyO|blFjnfQj)#fBf|zU}ofykiMk4F(q2-h&KWeL}|ScQ$i5D^+Wt` zXb9koPoX)UmC%(=<7>b72h>*4!(75jLx%+JU{1#gs;CBPT@tGt5@roT;J$00_OsdG z(fPM8FB_(7VDo=`S=5ie^&a+yrHHUUZ~3kN`lVYcM!aA3l(GG?neZ~ucRRmh6L=x! zzZ*JY{4B%IcmI_pz1=T-`#tyE^#0dV;_E5#{YJMWfc<&P{(Ngq2_Jjxv76q1ZLKdG z6E9_cFAKe2)qm&BZ}x{j@{!}?NgwcH&tFNpE%x}HVQ_zd`%B@$oVmXgz9w>P@9$Uj zuc!39&tFN3x8o(RtySKB&pm$Ofd_cQCqBW^@jrd}%MS3shd<1f=kCkL9(&ARTdVxP zr~&d|&VIDgPaHzAzt-CE%0HO1++T`+O+Ug&*cdN?L z^@BMdJ^z2c359Yy9pUTTPp&lYed8MeZQR4_4{hh@-hhF2>2X1IzRDW{{4mo|Gy{s@weXdJ-y(i zCLiBTvh#AzFTU#hMF5_USIR4N5op*8W+yzt|kMQ^-U*Y^~?m~)j_33B%!eM{H?Wz~V+r3Ir z1nYktK~Q&^bR-C^w`KSDMX2$Ae(IGqfv9>Y#ttf!xq?Hp zP9zXKFxQz@D!nfKK;E2M8e&4!u=FS6%x&3tUG0ucrP5kuE;GG#tTjsOh%IBi8Bu?4 zy~OsKAH4hJsRvX#UOUztaz{d-^^SML+*q&IxCt)HZq0T(FQs#-wX z`C!7Vk;2H_4VO;Gi72%eDvs*Xf&R)nLGQ#N6LTPI!l#0|Fs9Y9)9bA+Jq6n>8kbKf zcGkOOSvo!>3DTf@C#Jw^m09oZ;HqAD5Q6H`&L5m4fpyAQZ_bDQx12L~HuGOj#*nW@anS7l-OX2=yfhSg3Fj+!HV`8J{TMyZt{Bs47F zG6a+^P`lwcLl|ypj+0g$lL0xC>K!j2A_}W~q!ee5oVs2ZdU15P%CO3M;=Q*~0Htiu zm{DQblQ|wSf9I&RBRN8|<1bCFJ$nTn{>|@A1HRXMdlQ!4027ERl&c4Xka*~cBIj)evLFI`HJ)(RSg^)OI+BcTi_QKyDvA!#J8Ml?s#bZ{!uyIHN`sjHV6 zcYaJBed5!8mWS;$5%-4i6jnZY{;KmAZ(#aHFdZ=O#E?LiSe`6U=&W+a#gGcag%yZ1 z&0EIxNk~*>J5Ng|nag1d-b{>28Zxt2a>!JxppLErL6<(j#`1~IN#AkA$64HeH2-nu d$8H)e{x@~|X#8YL=LY})002ovPDHLkV1f;_%3%Ni delta 5112 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 b?^galL>Yp|91Og!00000NkvXXu0mjf@VyCq diff --git a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/shepherd.png b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/shepherd.png index 4133047bea5fdfa75901420a2a5e2fead7de2674..2c82733d14ab61bf099fca908a955d3fe26922b9 100644 GIT binary patch delta 5115 zcmVfB z3TOhp$V(ifTC;;Hf*20#`SC0>9wJ%4Ch8xyCX3K zc2;}roEsU36**;AVa0lPjfRMr(A#2zuFmFPeTw02_fvmb12|T3z3<**=1#75j*-&Z z@$*~Jgh3-QL_`A-1%#9$L?wrOqX543mw%Eb!dxqeP)kKqq}E1hl`uro?m!$e>)ka| z*>Z6C8aP;YdMotaX>M3@=2CD27qD)m5Siz~YyaJEoU(0u==0b^pFb8xd&@n?t9-=h z{JRex3*moOHK26^cf1?jI|yWnNQ2`2MiYoZ>8eO?hzq?pBuA_|T_K6$?hGMPY9Wr9 zF%4XP>N0KyJ0p1LPbr1Eo!Ram;7N&^DArgJkt7%b4cgEtQ$@Q{w}mv0r&Ru=jUOG4 z&WA%Yxn&>FD??h-yyFyBabPZmUJXlv{N&&JS>x6UdLjA5X8XP!Gb1U~T({^_X~zVib=gQ@eI zAO2^j?|jcCrynzLG)Xy};8%Y7=bnF8 ztzZA~e?n=ECqDi!UKj+OFp;D4tV(I^SZFGuta76Ej)p)aU{dL3yz>J;%dfosZ2-7C z2&_UnzW$ZBzl{ez^gciqsrF@+lSG0CybD7NgrJmC>DEx7w$AnKL_Y&|(l{Qk_zTfj ze){Kb85N$@0{iS2$T8C1a?hf1c}Rb_C?N>j%?1gA#)w2gg7b#^4?&6uF$8Ms$JcMT z|9&J!aHF(J)BsVabAbrG6uLlAMcnD;)KXdJOiWKYA_z}ixDy@ZQ!=f#USPSSvi;0QTKdQ+-bQVckeE@0J2 zF=Nv4s5Cc%1bo}+N$}777wpjcALRn&798O%Wr8PiiIaHZSSX+S67qjjfB$_16Si$8 zdZ6?|8WI>>diDyJzx6bGfA|i@n0e;gPw~ay_>Tbm)Cb>-hXvjO{Kh~0=K#Fp{eOeJ z%HYtgQa7FT?uZ*~`%H{safIHH4ml*MbfPON%1k4=($(3CD_W~G9JfYF19O>3lIamH zJ^eKM-@eTGAGiY$u6}>#694VjKXXb5zwqb9&kE+5{S(O7iqTaV@``z$5DoOX6UPiV zafl2lQ>+QL@=D#162&~usf_d=rbzdz2oAT2}uJ2bOhHiz_~8BNN;{+89=4qiH&Rxz9q(o$9nPa2|M|bjxEdE{>jJ<3>wNVoc+=hR$iFeJ zitwl2Ej)kv#Nrwh7epY%%(TD3RH)YQZph(ks04_CR%c3U3>v|NnBubXwV(z;lvXRl zdQCs54C9J!4Lfv0LiKeVF`_*N(_me)ebQy%4UmO0~2h3N?+99g{gMR z+z15Rp}Sy!QeV}C#Hxa1lI-6 z*CmHnh1x10c&kia8DgfiLLd-=&>GC!1CnIgW@22gDDzAh2U^>ZBr)|u9#rTWYf@>E@Fn1}R3 zuY!M_cP~FUn4Sv^+DoU^wxGXNq-`cl1QACf3$zWLRtgdVh9C&jw4rSao6UypwJl|Ud$xv+tQ{n2fR~MA2!s`4Et5ss&pD3+h-KkT7=4|&5Kp=$y>XOgbQfRHy z+f1(oB{1%+31ej3UE$)aRs%5yVhWfWZ7zSL2u>4(WBc;T=ofy`c+B@Dl!G&RG z#8(BI8%{%_a&YxJY0QYj!L{p)AW&wntkQ~=+z<)$(ujY< zfZD?JwJluRKDX*8&!Y(7LW+v1us*j-*`K)n%ym}zFlAgNQVolp=12~KgJ}yI2x9~U z)qvw{HZyw{)`$fDrbsWJCoQrCTAW;z`Jw8FmJ) zUA<0FK|K(MNIT3vr-O+gLXH8C%4C1WIz?Kq$H3>VJx-nfUo(3RQ>t_cu=EKaRT zC6S2h1g�Z5Ymv%+pMt3z&bQx}@Y*SVCqLyefT~kL~_61~_2?Wn0L*@vz`w2#M{r zeME$v^$zp2U3LNmq6Ex3p)X-k$3suAiXU!ywQ6Jy47(#<3S!EpHKHykPR)ox7>1F# z&0H@Nc^H`YucIF6dQ?VV{K6^@R9#GosN@>4sgY773=uWO1!|oa|1y6ltu(3i{>(2$OEmm7aI;DiZGwU9L8YPbkPNVK}3G0n+afVtDW6D1H7f+nUiqiNAFcPDA2nNz%C?!+d< zJTQcSTSE!Zg(Lw_iX0drCqy9xrF+B0xodB+`6DOz=o5Z?4j_MT`b+nrDH0_tQm%#t zK}A8KP4#d!gjyO|blFjnfQj)#fBf|zU}ofykiMk4F(q2-h&KWeL}|ScQ$i5D^+Wt` zXb9koPoX)UmC%(=<7>b72h>*4!(75jLx%+JU{1#gs;CBPT@tGt5@roT;J$00_OsdG z(fPM8FB_(7VDo=`S=5ie^&a+yrHHUUZ~3kN`lVYcM!aA3l(GG?neZ~ucRRmh6L=x! zzZ*JY{4B%IcmI_pz1=T-`#tyE^#0dV;_E5#{YJMWfc<&P{(Ngq2_Jjxv76q1ZLKdG z6E9_cFAKe2)qm&BZ}x{j@{!}?NgwcH&tFNpE%x}HVQ_zd`%B@$oVmXgz9w>P@9$Uj zuc!39&tFN3x8o(RtySKB&pm$Ofd_cQCqBW^@jrd}%MS3shd<1f=kCkL9(&ARTdVxP zr~&d|&VIDgPaHzAzt-CE%0HO1++T`+O+Ug&*cdN?L z^@BMdJ^z2c359Yy9pUTTPp&lYed8MeZQR4_4{hh@-hhF2>2X1IzRDW{{4mo|Gy{s@weXdJ-y(i zCLiBTvh#AzFTU#hMF5_USIR4N5op*8W+yzt|kMQ^-U*Y^~?m~)j_33B%!eM{H?Wz~V+r3Ir z1nYktK~Q&^bR-C^w`KSDMX2$Ae(IGqfv9>Y#ttf!xq?Hp zP9zXKFxQz@D!nfKK;E2M8e&4!u=FS6%x&3tUG0ucrP5kuE;GG#tTjsOh%IBi8Bu?4 zy~OsKAH4hJsRvX#UOUztaz{d-^^SML+*q&IxCt)HZq0T(FQs#-wX z`C!7Vk;2H_4VO;Gi72%eDvs*Xf&R)nLGQ#N6LTPI!l#0|Fs9Y9)9bA+Jq6n>8kbKf zcGkOOSvo!>3DTf@C#Jw^m09oZ;HqAD5Q6H`&L5m4fpyAQZ_bDQx12L~HuGOj#*nW@anS7l-OX2=yfhSg3Fj+!HV`8J{TMyZt{Bs47F zG6a+^P`lwcLl|ypj+0g$lL0xC>K!j2A_}W~q!ee5oVs2ZdU15P%CO3M;=Q*~0Htiu zm{DQblQ|wSf9I&RBRN8|<1bCFJ$nTn{>|@A1HRXMdlQ!4027ERl&c4Xka*~cBIj)evLFI`HJ)(RSg^)OI+BcTi_QKyDvA!#J8Ml?s#bZ{!uyIHN`sjHV6 zcYaJBed5!8mWS;$5%-4i6jnZY{;KmAZ(#aHFdZ=O#E?LiSe`6U=&W+a#gGcag%yZ1 z&0EIxNk~*>J5Ng|nag1d-b{>28Zxt2a>!JxppLErL6<(j#`1~IN#AkA$64HeH2-nu d$8H)e{x@~|X#8YL=LY})002ovPDHLkV1f;_%3%Ni delta 5112 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 a#s3C8OK1Efi;Ft|0000