From 005f5c0f45a460f40294056e4584710470bd4de6 Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 4 Sep 2018 23:58:15 +0200 Subject: [PATCH] Try to handle unknown villager professions. If this works correctly skins not present should become the generic villager pony --- .../render/ponies/RenderPonyVillager.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/minelittlepony/render/ponies/RenderPonyVillager.java b/src/main/java/com/minelittlepony/render/ponies/RenderPonyVillager.java index 99d1d816..737b28df 100644 --- a/src/main/java/com/minelittlepony/render/ponies/RenderPonyVillager.java +++ b/src/main/java/com/minelittlepony/render/ponies/RenderPonyVillager.java @@ -3,6 +3,11 @@ package com.minelittlepony.render.ponies; import com.minelittlepony.model.PMAPI; import com.minelittlepony.render.RenderPonyMob; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.passive.EntityVillager; @@ -21,6 +26,9 @@ public class RenderPonyVillager extends RenderPonyMob { private static final ResourceLocation EGG = new ResourceLocation("minelittlepony", "textures/entity/villager/silly_pony.png"); private static final ResourceLocation EGG_2 = new ResourceLocation("minelittlepony", "textures/entity/villager/tiny_silly_pony.png"); + + private static final Map MOD_PROFESSIONS = new HashMap<>(); + public RenderPonyVillager(RenderManager manager) { super(manager, PMAPI.villager); } @@ -33,12 +41,35 @@ public class RenderPonyVillager extends RenderPonyMob { @Override protected ResourceLocation getTexture(EntityVillager entity) { + ResourceLocation texture = getVillagerTexture(entity); + + try { + Minecraft.getMinecraft().getResourceManager().getResource(texture); + } catch (IOException e) { + return PROFESSIONS[5]; + } + + return texture; + } + + private ResourceLocation getVillagerTexture(EntityVillager entity) { if ("Derpy".equals(entity.getCustomNameTag())) { if (entity.isChild()) { return EGG_2; } return EGG; } - return PROFESSIONS[entity.getProfession() % PROFESSIONS.length]; + + int profession = entity.getProfession(); + + if (profession >= PROFESSIONS.length) { + return MOD_PROFESSIONS.computeIfAbsent(profession, this::getModProfessionResource); + } + + return PROFESSIONS[profession]; + } + + protected ResourceLocation getModProfessionResource(int professionId) { + return new ResourceLocation("minelittlepony", String.format("textures/entity/villager/%d_pony.png", professionId)); } }