mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 03:56:59 -05:00
@@ -20,15 +20,28 @@
|
|||||||
package dev.architectury.registry;
|
package dev.architectury.registry;
|
||||||
|
|
||||||
import dev.architectury.injectables.annotations.ExpectPlatform;
|
import dev.architectury.injectables.annotations.ExpectPlatform;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.packs.PackType;
|
import net.minecraft.server.packs.PackType;
|
||||||
import net.minecraft.server.packs.resources.PreparableReloadListener;
|
import net.minecraft.server.packs.resources.PreparableReloadListener;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public final class ReloadListenerRegistry {
|
public final class ReloadListenerRegistry {
|
||||||
private ReloadListenerRegistry() {
|
private ReloadListenerRegistry() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExpectPlatform
|
|
||||||
public static void register(PackType type, PreparableReloadListener listener) {
|
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<ResourceLocation> dependencies) {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,17 +29,19 @@ import net.minecraft.server.packs.resources.ResourceManager;
|
|||||||
import net.minecraft.util.profiling.ProfilerFiller;
|
import net.minecraft.util.profiling.ProfilerFiller;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
public class ReloadListenerRegistryImpl {
|
public class ReloadListenerRegistryImpl {
|
||||||
private static final SecureRandom RANDOM = new SecureRandom();
|
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<ResourceLocation> dependencies) {
|
||||||
var bytes = new byte[8];
|
var bytes = new byte[8];
|
||||||
RANDOM.nextBytes(bytes);
|
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() {
|
ResourceManagerHelper.get(type).registerReloadListener(new IdentifiableResourceReloadListener() {
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation getFabricId() {
|
public ResourceLocation getFabricId() {
|
||||||
@@ -51,6 +53,11 @@ public class ReloadListenerRegistryImpl {
|
|||||||
return listener.getName();
|
return listener.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<ResourceLocation> getFabricDependencies() {
|
||||||
|
return dependencies;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> reload(PreparationBarrier preparationBarrier, ResourceManager resourceManager, ProfilerFiller profilerFiller, ProfilerFiller profilerFiller2, Executor executor, Executor executor2) {
|
public CompletableFuture<Void> reload(PreparationBarrier preparationBarrier, ResourceManager resourceManager, ProfilerFiller profilerFiller, ProfilerFiller profilerFiller2, Executor executor, Executor executor2) {
|
||||||
return listener.reload(preparationBarrier, resourceManager, profilerFiller, profilerFiller2, executor, executor2);
|
return listener.reload(preparationBarrier, resourceManager, profilerFiller, profilerFiller2, executor, executor2);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package dev.architectury.registry.forge;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import dev.architectury.forge.ArchitecturyForge;
|
import dev.architectury.forge.ArchitecturyForge;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.packs.PackType;
|
import net.minecraft.server.packs.PackType;
|
||||||
import net.minecraft.server.packs.resources.PreparableReloadListener;
|
import net.minecraft.server.packs.resources.PreparableReloadListener;
|
||||||
import net.minecraft.server.packs.resources.ReloadableResourceManager;
|
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.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = ArchitecturyForge.MOD_ID)
|
@Mod.EventBusSubscriber(modid = ArchitecturyForge.MOD_ID)
|
||||||
public class ReloadListenerRegistryImpl {
|
public class ReloadListenerRegistryImpl {
|
||||||
private static List<PreparableReloadListener> serverDataReloadListeners = Lists.newArrayList();
|
private static List<PreparableReloadListener> serverDataReloadListeners = Lists.newArrayList();
|
||||||
|
|
||||||
public static void register(PackType type, PreparableReloadListener listener) {
|
public static void register(PackType type, PreparableReloadListener listener, @Nullable ResourceLocation listenerId, Collection<ResourceLocation> dependencies) {
|
||||||
if (type == PackType.SERVER_DATA) {
|
if (type == PackType.SERVER_DATA) {
|
||||||
serverDataReloadListeners.add(listener);
|
serverDataReloadListeners.add(listener);
|
||||||
} else if (type == PackType.CLIENT_RESOURCES) {
|
} else if (type == PackType.CLIENT_RESOURCES) {
|
||||||
|
|||||||
Reference in New Issue
Block a user