diff --git a/src/main/java/de/pauljako/airclient/cosmetics/capes/WebCapeLoader.java b/src/main/java/de/pauljako/airclient/cosmetics/capes/WebCapeLoader.java index a61405f..e54cb7a 100644 --- a/src/main/java/de/pauljako/airclient/cosmetics/capes/WebCapeLoader.java +++ b/src/main/java/de/pauljako/airclient/cosmetics/capes/WebCapeLoader.java @@ -13,6 +13,7 @@ import net.minecraft.client.texture.NativeImageBackedTexture; import net.minecraft.util.Identifier; import java.io.File; +import java.lang.reflect.Constructor; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -20,6 +21,7 @@ import java.net.http.HttpResponse; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -148,9 +150,23 @@ public class WebCapeLoader { private NativeImageBackedTexture createNativeTexture(String name, byte[] bytes) { if (bytes == null) return null; try { - return new NativeImageBackedTexture(() -> name, NativeImage.read(bytes)); + // Try 1.21.5 constructor first (2 parameters) + Constructor constructor = + NativeImageBackedTexture.class.getConstructor(Supplier.class, NativeImage.class); + + Supplier nameSupplier = () -> name; + return constructor.newInstance(nameSupplier, NativeImage.read(bytes)); + } catch (NoSuchMethodException e) { + try { + // Fall back to >=1.21.4 constructor (1 parameter) + Constructor constructor = + NativeImageBackedTexture.class.getConstructor(NativeImage.class); + return constructor.newInstance(NativeImage.read(bytes)); + } catch (Exception ex) { + throw new RuntimeException("Failed to create NativeImageBackedTexture", ex); + } } catch (Exception e) { - throw new RuntimeException(e); + throw new RuntimeException("Failed to create NativeImageBackedTexture", e); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index acaec52..3d66118 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -6,8 +6,8 @@ "description": "The AirClient", "authors": [ "pauljako" ], "contact": { - "issues": "https://gitlab.com/pauljako/airclient/-/issues", - "sources": "https://gitlab.com/pauljako/airclient" + "issues": "https://git.pauljako.de/AirClient/AirClient/issues", + "sources": "https://git.pauljako.de/AirClient/AirClient" }, "license": " LGPL-3.0-or-later", "icon": "assets/airclient/icon.png", @@ -27,6 +27,6 @@ "fabricloader": ">=${loader_version}", "fabric-language-kotlin": "*", "fabric": "*", - "minecraft": "${minecraft_version}" + "minecraft": "~1.21.3" } }