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 2e243c6f..bde29102 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/cartographer.png and b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/cartographer.png differ 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 efd8a89d..89218d5e 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/farmer.png and b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/farmer.png differ diff --git a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/fisherman.png b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/fisherman.png index efd8a89d..89218d5e 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/fisherman.png and b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/fisherman.png differ diff --git a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/librarian.png b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/librarian.png index 2e243c6f..bde29102 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/librarian.png and b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/librarian.png differ 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 efd8a89d..8aefd55d 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/shepherd.png and b/src/main/resources/assets/minelittlepony/textures/entity/villager/profession/shepherd.png differ diff --git a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/cartographer.png b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/cartographer.png index a74c1217..67020a39 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/cartographer.png and b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/cartographer.png differ 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 4133047b..2c82733d 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/farmer.png and b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/farmer.png differ diff --git a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/fisherman.png b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/fisherman.png index 4133047b..2c82733d 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/fisherman.png and b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/fisherman.png differ diff --git a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/librarian.png b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/librarian.png index a74c1217..67020a39 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/librarian.png and b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/librarian.png differ 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 4133047b..2c82733d 100644 Binary files a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/shepherd.png and b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/profession/shepherd.png differ