From f75bf7ff15ac6a731d44ab825d6a734d7af900a1 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 20 Mar 2020 19:34:06 +0200 Subject: [PATCH] Fixed exceptions when resolving armour textures --- .../armour/DefaultArmourTextureResolver.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/minelittlepony/client/model/armour/DefaultArmourTextureResolver.java b/src/main/java/com/minelittlepony/client/model/armour/DefaultArmourTextureResolver.java index 32075675..5c70a275 100644 --- a/src/main/java/com/minelittlepony/client/model/armour/DefaultArmourTextureResolver.java +++ b/src/main/java/com/minelittlepony/client/model/armour/DefaultArmourTextureResolver.java @@ -79,23 +79,25 @@ public class DefaultArmourTextureResolver implements IAr }); } - private Identifier getArmorTexture(String def, @Nullable String type) { - - if (type.isEmpty() || type.equals(def)) { - return HUMAN_ARMOUR.computeIfAbsent(def, Identifier::new); - } - - return HUMAN_ARMOUR.computeIfAbsent(type, s -> { - Identifier modId = new Identifier(s); + private Identifier getArmorTexture(String def, String type) { + return HUMAN_ARMOUR.computeIfAbsent(def + "#" + type, s -> { Identifier defId = new Identifier(def); - Path defPath = Paths.get(defId.getPath()); + if (type.isEmpty() || type.equals(def)) { + return defId; + } - String domain = modId.getNamespace(); + Identifier modId = new Identifier(type); - String path = Paths.get(modId.getPath()).getParent().resolve(defPath.getFileName()).toString().replace('\\', '/'); + Path modPath = Paths.get(modId.getPath()).getParent(); - Identifier interemId = new Identifier(domain, path); + if (modPath == null) { + return defId; + } + + Path path = modPath.resolve(Paths.get(defId.getPath()).getFileName()); + + Identifier interemId = new Identifier(modId.getNamespace(), path.toString().replace('\\', '/')); if (MinecraftClient.getInstance().getResourceManager().containsResource(interemId)) { return interemId;