From d26471de0ee03ff1bced941f1e7f61b677b3b80d Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 23 Oct 2022 01:02:39 +0800 Subject: [PATCH] [ci skip] Fix #340 (#341) --- .../registry/ReloadListenerRegistry.java | 15 ++++++++++++++- .../fabric/ReloadListenerRegistryImpl.java | 11 +++++++++-- .../forge/ReloadListenerRegistryImpl.java | 5 ++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/dev/architectury/registry/ReloadListenerRegistry.java b/common/src/main/java/dev/architectury/registry/ReloadListenerRegistry.java index 9268d390..a68767a8 100644 --- a/common/src/main/java/dev/architectury/registry/ReloadListenerRegistry.java +++ b/common/src/main/java/dev/architectury/registry/ReloadListenerRegistry.java @@ -20,15 +20,28 @@ package dev.architectury.registry; import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.resources.PreparableReloadListener; +import javax.annotation.Nullable; +import java.util.Collection; +import java.util.List; + public final class ReloadListenerRegistry { private ReloadListenerRegistry() { } - @ExpectPlatform public static void register(PackType type, PreparableReloadListener listener) { + register(type, listener, null); + } + + public static void register(PackType type, PreparableReloadListener listener, @Nullable ResourceLocation listenerId) { + register(type, listener, listenerId, List.of()); + } + + @ExpectPlatform + public static void register(PackType type, PreparableReloadListener listener, @Nullable ResourceLocation listenerId, Collection dependencies) { throw new AssertionError(); } } diff --git a/fabric/src/main/java/dev/architectury/registry/fabric/ReloadListenerRegistryImpl.java b/fabric/src/main/java/dev/architectury/registry/fabric/ReloadListenerRegistryImpl.java index 1daeaf49..8e0c0497 100644 --- a/fabric/src/main/java/dev/architectury/registry/fabric/ReloadListenerRegistryImpl.java +++ b/fabric/src/main/java/dev/architectury/registry/fabric/ReloadListenerRegistryImpl.java @@ -29,17 +29,19 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.profiling.ProfilerFiller; import org.apache.commons.lang3.StringUtils; +import javax.annotation.Nullable; import java.security.SecureRandom; +import java.util.Collection; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; public class ReloadListenerRegistryImpl { private static final SecureRandom RANDOM = new SecureRandom(); - public static void register(PackType type, PreparableReloadListener listener) { + public static void register(PackType type, PreparableReloadListener listener, @Nullable ResourceLocation listenerId, Collection dependencies) { var bytes = new byte[8]; RANDOM.nextBytes(bytes); - var id = new ResourceLocation("architectury:reload_" + StringUtils.leftPad(Math.abs(Longs.fromByteArray(bytes)) + "", 19, '0')); + var id = listenerId != null ? listenerId : new ResourceLocation("architectury:reload_" + StringUtils.leftPad(Math.abs(Longs.fromByteArray(bytes)) + "", 19, '0')); ResourceManagerHelper.get(type).registerReloadListener(new IdentifiableResourceReloadListener() { @Override public ResourceLocation getFabricId() { @@ -51,6 +53,11 @@ public class ReloadListenerRegistryImpl { return listener.getName(); } + @Override + public Collection getFabricDependencies() { + return dependencies; + } + @Override public CompletableFuture reload(PreparationBarrier preparationBarrier, ResourceManager resourceManager, ProfilerFiller profilerFiller, ProfilerFiller profilerFiller2, Executor executor, Executor executor2) { return listener.reload(preparationBarrier, resourceManager, profilerFiller, profilerFiller2, executor, executor2); diff --git a/forge/src/main/java/dev/architectury/registry/forge/ReloadListenerRegistryImpl.java b/forge/src/main/java/dev/architectury/registry/forge/ReloadListenerRegistryImpl.java index 359bd7d3..fc958741 100644 --- a/forge/src/main/java/dev/architectury/registry/forge/ReloadListenerRegistryImpl.java +++ b/forge/src/main/java/dev/architectury/registry/forge/ReloadListenerRegistryImpl.java @@ -22,6 +22,7 @@ package dev.architectury.registry.forge; import com.google.common.collect.Lists; import dev.architectury.forge.ArchitecturyForge; import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ReloadableResourceManager; @@ -31,13 +32,15 @@ import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import javax.annotation.Nullable; +import java.util.Collection; import java.util.List; @Mod.EventBusSubscriber(modid = ArchitecturyForge.MOD_ID) public class ReloadListenerRegistryImpl { private static List serverDataReloadListeners = Lists.newArrayList(); - public static void register(PackType type, PreparableReloadListener listener) { + public static void register(PackType type, PreparableReloadListener listener, @Nullable ResourceLocation listenerId, Collection dependencies) { if (type == PackType.SERVER_DATA) { serverDataReloadListeners.add(listener); } else if (type == PackType.CLIENT_RESOURCES) {