From 880de2d1729fd2785de9db0c8bf8cda21ef2c69e Mon Sep 17 00:00:00 2001 From: onebeastchris Date: Wed, 18 Oct 2023 12:36:44 +0200 Subject: [PATCH] Ensure GeyserUrlPackCodec.create returns a ResourcePack with the URL codec --- .../geyser/pack/url/GeyserUrlPackCodec.java | 4 +- .../registry/loader/ResourcePackLoader.java | 45 +++++++++++++++---- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/pack/url/GeyserUrlPackCodec.java b/core/src/main/java/org/geysermc/geyser/pack/url/GeyserUrlPackCodec.java index 391f78c4e..26ea72c7f 100644 --- a/core/src/main/java/org/geysermc/geyser/pack/url/GeyserUrlPackCodec.java +++ b/core/src/main/java/org/geysermc/geyser/pack/url/GeyserUrlPackCodec.java @@ -38,7 +38,7 @@ import java.nio.file.Path; public class GeyserUrlPackCodec extends UrlPackCodec { private final String url; private final String contentKey; - private final GeyserPathPackCodec fallback; + public final GeyserPathPackCodec fallback; public GeyserUrlPackCodec(String url) { this(url, ""); @@ -72,7 +72,7 @@ public class GeyserUrlPackCodec extends UrlPackCodec { @Override @NonNull public ResourcePack create() { - return fallback.create(); + return ResourcePackLoader.loadDownloadedPack(this); } @Override diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java index a30292175..d01b6d2c9 100644 --- a/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java +++ b/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java @@ -29,6 +29,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import org.geysermc.geyser.GeyserImpl; import org.geysermc.geyser.api.event.lifecycle.GeyserLoadResourcePacksEvent; import org.geysermc.geyser.api.pack.ResourcePack; +import org.geysermc.geyser.api.pack.ResourcePackManifest; import org.geysermc.geyser.event.type.GeyserDefineResourcePacksEventImpl; import org.geysermc.geyser.pack.GeyserResourcePack; import org.geysermc.geyser.pack.GeyserResourcePackManifest; @@ -131,6 +132,35 @@ public class ResourcePackLoader implements RegistryLoader manifestReference = new AtomicReference<>(); try (ZipFile zip = new ZipFile(path.toFile()); @@ -138,7 +168,7 @@ public class ResourcePackLoader implements RegistryLoader { String name = x.getName(); if (SHOW_RESOURCE_PACK_LENGTH_WARNING && name.length() >= 80) { - GeyserImpl.getInstance().getLogger().warning("The resource pack " + path.getFileName() + GeyserImpl.getInstance().getLogger().warning("The resource pack " + packLocation + " has a file in it that meets or exceeds 80 characters in its path (" + name + ", " + name.length() + " characters long). This will cause problems on some Bedrock platforms." + " Please rename it to be shorter, or reduce the amount of folders needed to get to the file."); @@ -157,20 +187,15 @@ public class ResourcePackLoader implements RegistryLoader loadCdnEntries() { final Path cachedCdnPacksDirectory = GeyserImpl.getInstance().getBootstrap().getConfigFolder().resolve("cache").resolve("cdn-packs"); @@ -200,6 +225,8 @@ public class ResourcePackLoader implements RegistryLoader