From d26471de0ee03ff1bced941f1e7f61b677b3b80d Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 23 Oct 2022 01:02:39 +0800 Subject: [PATCH 1/2] [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) { From 382e6b0bf0709b1f5b33998913e4bec8ef4ccabb Mon Sep 17 00:00:00 2001 From: Max Date: Sat, 22 Oct 2022 19:02:47 +0200 Subject: [PATCH 2/2] Fix crash with EntityEvent.LIVING_CHECK_SPAWN on Forge (#345) * Fix crash with EntityEvent.LIVING_CHECK_SPAWN on Forge * Fix whitespace Co-authored-by: Juuz <6596629+Juuxel@users.noreply.github.com> Co-authored-by: Juuz <6596629+Juuxel@users.noreply.github.com> --- .../architectury/event/forge/EventHandlerImplCommon.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java b/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java index f0ded37f..52052178 100644 --- a/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java +++ b/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java @@ -272,10 +272,11 @@ public class EventHandlerImplCommon { public static void event(LivingSpawnEvent.CheckSpawn event) { EventResult result = EntityEvent.LIVING_CHECK_SPAWN.invoker().canSpawn(event.getEntityLiving(), event.getWorld(), event.getX(), event.getY(), event.getZ(), event.getSpawnReason(), event.getSpawner()); if (result.interruptsFurtherEvaluation()) { - if (result.value() != null) { - event.setResult(result.value() == Boolean.TRUE ? Event.Result.ALLOW : Event.Result.DENY); + if (result.isEmpty()) { + event.setResult(Event.Result.DEFAULT); + } else { + event.setResult(result.value() ? Event.Result.ALLOW : Event.Result.DENY); } - event.setCanceled(true); } }