From 9d1d0ef3f3c6a4c6d7d31d59d8c64302c1ce8658 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Thu, 28 Aug 2025 18:09:09 -0700 Subject: [PATCH] Add and call RegionizedServerInitEvent from Folia (#13034) --- .../RegionizedServerInitEvent.java | 25 +++++++++++++++++++ .../server/MinecraftServer.java.patch | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 paper-api/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java diff --git a/paper-api/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java b/paper-api/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java new file mode 100644 index 000000000..fe9dae4cf --- /dev/null +++ b/paper-api/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java @@ -0,0 +1,25 @@ +package io.papermc.paper.threadedregions; + +import org.bukkit.event.HandlerList; +import org.bukkit.event.server.ServerEvent; +import org.jspecify.annotations.NullMarked; + +/** + * This event is called after the server is initialised but before the server begins ticking regions in parallel. + * Plugins may use this as a hook to run post initialisation logic without worrying about the possibility that + * regions are ticking in parallel. + */ +@NullMarked +public class RegionizedServerInitEvent extends ServerEvent { + + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/paper-server/patches/sources/net/minecraft/server/MinecraftServer.java.patch b/paper-server/patches/sources/net/minecraft/server/MinecraftServer.java.patch index 6d618ba9b..8b8e29d62 100644 --- a/paper-server/patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -747,7 +747,7 @@ protected void runServer() { try { if (!this.initServer()) { -@@ -675,6 +_,35 @@ +@@ -675,6 +_,36 @@ this.statusIcon = this.loadStatusIcon().orElse(null); this.status = this.buildServerStatus(); @@ -755,6 +755,7 @@ + // Spigot start + // Paper start + LOGGER.info("Running delayed init tasks"); ++ new io.papermc.paper.threadedregions.RegionizedServerInitEvent().callEvent(); // Call Folia init event + this.server.getScheduler().mainThreadHeartbeat(); // run all 1 tick delay tasks during init, + // this is going to be the first thing the tick process does anyways, so move done and run it after + // everything is init before watchdog tick.