+ */
-+public interface RegionisedScheduler {
++public interface RegionScheduler {
+
+ /**
+ * Schedules a task to be executed on the region which owns the location.
@@ -419,7 +419,7 @@ index 0000000000000000000000000000000000000000..fa4ac300d3721b2d6d84b95618d33058
+ }
+}
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index ac9b690fcccb60b587e5345f12f1383afd0a73a1..22952628c894e29bfdb94897bd9970103730b898 100644
+index ac9b690fcccb60b587e5345f12f1383afd0a73a1..7986b9fcaf256e9042f6d9ddc38e8bd76645cbb7 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2459,6 +2459,44 @@ public final class Bukkit {
@@ -438,7 +438,7 @@ index ac9b690fcccb60b587e5345f12f1383afd0a73a1..22952628c894e29bfdb94897bd997010
+ *
+ * @return the region task scheduler
+ */
-+ public static @NotNull io.papermc.paper.threadedregions.scheduler.RegionisedScheduler getRegionScheduler() {
++ public static @NotNull io.papermc.paper.threadedregions.scheduler.RegionScheduler getRegionScheduler() {
+ return server.getRegionScheduler();
+ }
+
@@ -468,7 +468,7 @@ index ac9b690fcccb60b587e5345f12f1383afd0a73a1..22952628c894e29bfdb94897bd997010
@NotNull
public static Server.Spigot spigot() {
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 2204336d8800311b65e894739ab1b27273e7c6f2..ea4d93680066295de9fd447eda58b93014eac635 100644
+index 2204336d8800311b65e894739ab1b27273e7c6f2..bf02c948a50d934e94c44f4844254a45ae7cb2a5 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2139,4 +2139,36 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -487,7 +487,7 @@ index 2204336d8800311b65e894739ab1b27273e7c6f2..ea4d93680066295de9fd447eda58b930
+ *
+ * @return the region task scheduler
+ */
-+ public @NotNull io.papermc.paper.threadedregions.scheduler.RegionisedScheduler getRegionScheduler();
++ public @NotNull io.papermc.paper.threadedregions.scheduler.RegionScheduler getRegionScheduler();
+
+ /**
+ * Returns the async task scheduler. The async task scheduler can be used to schedule tasks
diff --git a/patches/api/0004-Add-RegionisedServerInitEvent.patch b/patches/api/0004-Add-RegionizedServerInitEvent.patch
similarity index 77%
rename from patches/api/0004-Add-RegionisedServerInitEvent.patch
rename to patches/api/0004-Add-RegionizedServerInitEvent.patch
index aace997..f9f4c2b 100644
--- a/patches/api/0004-Add-RegionisedServerInitEvent.patch
+++ b/patches/api/0004-Add-RegionizedServerInitEvent.patch
@@ -1,18 +1,18 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf
Date: Tue, 7 Mar 2023 12:58:48 -0800
-Subject: [PATCH] Add RegionisedServerInitEvent
+Subject: [PATCH] Add RegionizedServerInitEvent
This event allows plugins to perform synchronous operations before
any region will tick. Plugins will not have to worry about the
possibility of a region ticking in parallel while listening
to the event.
-diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionisedServerInitEvent.java b/src/main/java/io/papermc/paper/threadedregions/RegionisedServerInitEvent.java
+diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java
new file mode 100644
-index 0000000000000000000000000000000000000000..8ffadb7c54087b79cdf7ebe11367b9d5884536e6
+index 0000000000000000000000000000000000000000..c7be944c5638cb6650624bd622b2ad9d52c5c31d
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/threadedregions/RegionisedServerInitEvent.java
++++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedServerInitEvent.java
@@ -0,0 +1,26 @@
+package io.papermc.paper.threadedregions;
+
@@ -25,7 +25,7 @@ index 0000000000000000000000000000000000000000..8ffadb7c54087b79cdf7ebe11367b9d5
+ * Plugins may use this as a hook to run post initialisation logic without worrying about the possibility that
+ * regions are ticking in parallel.
+ */
-+public class RegionisedServerInitEvent extends ServerEvent {
++public class RegionizedServerInitEvent extends ServerEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+
diff --git a/patches/api/0005-Add-API-for-checking-ownership-of-region-by-position.patch b/patches/api/0005-Add-API-for-checking-ownership-of-region-by-position.patch
index d9e5b67..f212e61 100644
--- a/patches/api/0005-Add-API-for-checking-ownership-of-region-by-position.patch
+++ b/patches/api/0005-Add-API-for-checking-ownership-of-region-by-position.patch
@@ -11,7 +11,7 @@ the schedulers depending on the result of the ownership
check.
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index 22952628c894e29bfdb94897bd9970103730b898..62b7f94de5ffacd3919f9843e64a40f6f329fadd 100644
+index 7986b9fcaf256e9042f6d9ddc38e8bd76645cbb7..16043d6f7894182e8ff75a8faf57dedf8db50d84 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2496,6 +2496,100 @@ public final class Bukkit {
@@ -116,7 +116,7 @@ index 22952628c894e29bfdb94897bd9970103730b898..62b7f94de5ffacd3919f9843e64a40f6
@NotNull
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index ea4d93680066295de9fd447eda58b93014eac635..78cd452e804310eb8ed954833f2b7431ad9101b0 100644
+index bf02c948a50d934e94c44f4844254a45ae7cb2a5..fea84620b25ac393be6d3253c100ddeac1983105 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2170,5 +2170,83 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
diff --git a/patches/server/0002-New-player-chunk-loader-system.patch b/patches/server/0002-New-player-chunk-loader-system.patch
index e5c2494..54fb219 100644
--- a/patches/server/0002-New-player-chunk-loader-system.patch
+++ b/patches/server/0002-New-player-chunk-loader-system.patch
@@ -22,7 +22,7 @@ index 06bff37e4c1fddd3be6343049a66787c63fb420c..1be1fe766401221b6adb417175312007
));
}));
diff --git a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java
-index 0e45a340ae534caf676b7f9d0adcbcee5829925e..6df1948b1204a7288ecb7238b6fc2a733f7d25b3 100644
+index 0e45a340ae534caf676b7f9d0adcbcee5829925e..61d03808c8d1ab822d9b2f31fab0de14089a3b15 100644
--- a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java
+++ b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java
@@ -129,15 +129,15 @@ public final class ChunkSystem {
@@ -30,25 +30,25 @@ index 0e45a340ae534caf676b7f9d0adcbcee5829925e..6df1948b1204a7288ecb7238b6fc2a73
public static int getSendViewDistance(final ServerPlayer player) {
- return io.papermc.paper.chunk.PlayerChunkLoader.getSendViewDistance(player);
-+ return io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.getAPISendViewDistance(player);
++ return io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.getAPISendViewDistance(player);
}
public static int getLoadViewDistance(final ServerPlayer player) {
- return io.papermc.paper.chunk.PlayerChunkLoader.getLoadViewDistance(player);
-+ return io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.getLoadViewDistance(player);
++ return io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.getLoadViewDistance(player);
}
public static int getTickViewDistance(final ServerPlayer player) {
- return io.papermc.paper.chunk.PlayerChunkLoader.getTickViewDistance(player);
-+ return io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.getAPITickViewDistance(player);
++ return io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.getAPITickViewDistance(player);
}
private ChunkSystem() {
-diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java
+diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
new file mode 100644
-index 0000000000000000000000000000000000000000..7e2176f343160b299e7d4a2817c8f6c9ba7dba7b
+index 0000000000000000000000000000000000000000..99dc2038aa4fb0f70dc3670e451018ff541d3a85
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java
++++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
@@ -0,0 +1,1304 @@
+package io.papermc.paper.chunk.system;
+
@@ -87,7 +87,7 @@ index 0000000000000000000000000000000000000000..7e2176f343160b299e7d4a2817c8f6c9
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
-+public class RegionisedPlayerChunkLoader {
++public class RegionizedPlayerChunkLoader {
+
+ public static final TicketType REGION_PLAYER_TICKET = TicketType.create("region_player_ticket", Long::compareTo);
+
@@ -169,7 +169,7 @@ index 0000000000000000000000000000000000000000..7e2176f343160b299e7d4a2817c8f6c9
+
+ private final ServerLevel world;
+
-+ public RegionisedPlayerChunkLoader(final ServerLevel world) {
++ public RegionizedPlayerChunkLoader(final ServerLevel world) {
+ this.world = world;
+ }
+
@@ -1954,22 +1954,22 @@ index ca84eddbdb1e198b899750e5f6b3eafd25ce970f..736f37979c882e41e7571202df38eb6a
return true;
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..e57cf6a74a129ea0919a4ad5e84b615cd5aa141e 100644
+index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..bf1a77cf9bbea4e2104b2a8c61309e740f28d51b 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -521,6 +521,48 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper end - optimise get nearest players for entity AI
-+ public final io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader playerChunkLoader = new io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader(this);
-+ private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.ViewDistances(-1, -1, -1));
++ public final io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader playerChunkLoader = new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader(this);
++ private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
+
-+ public io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.ViewDistances getViewDistances() {
++ public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
+ return this.viewDistances.get();
+ }
+
-+ private void updateViewDistance(final java.util.function.Function update) {
-+ for (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.ViewDistances curr = this.viewDistances.get();;) {
++ private void updateViewDistance(final java.util.function.Function update) {
++ for (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances curr = this.viewDistances.get();;) {
+ if (this.viewDistances.compareAndSet(curr, update.apply(curr))) {
+ return;
+ }
@@ -1977,8 +1977,8 @@ index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..e57cf6a74a129ea0919a4ad5e84b615c
+ }
+
+ public void setTickViewDistance(final int distance) {
-+ if ((distance < io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE)) {
-+ throw new IllegalArgumentException("Tick view distance must be a number between " + io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE) + ", got: " + distance);
++ if ((distance < io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE)) {
++ throw new IllegalArgumentException("Tick view distance must be a number between " + io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE) + ", got: " + distance);
+ }
+ this.updateViewDistance((input) -> {
+ return input.setTickViewDistance(distance);
@@ -1986,8 +1986,8 @@ index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..e57cf6a74a129ea0919a4ad5e84b615c
+ }
+
+ public void setLoadViewDistance(final int distance) {
-+ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
-+ throw new IllegalArgumentException("Load view distance must be a number between " + io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
++ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
++ throw new IllegalArgumentException("Load view distance must be a number between " + io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
+ }
+ this.updateViewDistance((input) -> {
+ return input.setLoadViewDistance(distance);
@@ -1995,8 +1995,8 @@ index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..e57cf6a74a129ea0919a4ad5e84b615c
+ }
+
+ public void setSendViewDistance(final int distance) {
-+ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
-+ throw new IllegalArgumentException("Send view distance must be a number between " + io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
++ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
++ throw new IllegalArgumentException("Send view distance must be a number between " + io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
+ }
+ this.updateViewDistance((input) -> {
+ return input.setSendViewDistance(distance);
@@ -2007,22 +2007,22 @@ index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..e57cf6a74a129ea0919a4ad5e84b615c
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
// IRegistryCustom.Dimension iregistrycustom_dimension = minecraftserver.registryAccess(); // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index ca5291a9573a62cb5c19539cf5c7aceff11f9829..8a80b222456c2e4818cada3a9248ab2f9b76a983 100644
+index ca5291a9573a62cb5c19539cf5c7aceff11f9829..a3cef477646abf6172d4e50a28ed30f04c30d667 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -275,6 +275,48 @@ public class ServerPlayer extends Player {
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
-+ private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.ViewDistances(-1, -1, -1));
-+ public io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
++ private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
++ public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
+
-+ public io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.ViewDistances getViewDistances() {
++ public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
+ return this.viewDistances.get();
+ }
+
-+ private void updateViewDistance(final java.util.function.Function update) {
-+ for (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.ViewDistances curr = this.viewDistances.get();;) {
++ private void updateViewDistance(final java.util.function.Function update) {
++ for (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances curr = this.viewDistances.get();;) {
+ if (this.viewDistances.compareAndSet(curr, update.apply(curr))) {
+ return;
+ }
@@ -2030,8 +2030,8 @@ index ca5291a9573a62cb5c19539cf5c7aceff11f9829..8a80b222456c2e4818cada3a9248ab2f
+ }
+
+ public void setTickViewDistance(final int distance) {
-+ if ((distance < io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE)) {
-+ throw new IllegalArgumentException("Tick view distance must be a number between " + io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE) + ", got: " + distance);
++ if ((distance < io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE)) {
++ throw new IllegalArgumentException("Tick view distance must be a number between " + io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE) + ", got: " + distance);
+ }
+ this.updateViewDistance((input) -> {
+ return input.setTickViewDistance(distance);
@@ -2039,8 +2039,8 @@ index ca5291a9573a62cb5c19539cf5c7aceff11f9829..8a80b222456c2e4818cada3a9248ab2f
+ }
+
+ public void setLoadViewDistance(final int distance) {
-+ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
-+ throw new IllegalArgumentException("Load view distance must be a number between " + io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
++ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
++ throw new IllegalArgumentException("Load view distance must be a number between " + io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
+ }
+ this.updateViewDistance((input) -> {
+ return input.setLoadViewDistance(distance);
@@ -2048,8 +2048,8 @@ index ca5291a9573a62cb5c19539cf5c7aceff11f9829..8a80b222456c2e4818cada3a9248ab2f
+ }
+
+ public void setSendViewDistance(final int distance) {
-+ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
-+ throw new IllegalArgumentException("Send view distance must be a number between " + io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
++ if (distance != -1 && (distance < io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE || distance > io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1)) {
++ throw new IllegalArgumentException("Send view distance must be a number between " + io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MIN_VIEW_DISTANCE + " and " + (io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.MAX_VIEW_DISTANCE + 1) + " or -1, got: " + distance);
+ }
+ this.updateViewDistance((input) -> {
+ return input.setSendViewDistance(distance);
@@ -2203,7 +2203,7 @@ index 5e9055fdf411029ea2fed91acd6b981f79156418..ff6559bf563f2fdcc0f2843d4f4aa24d
// Paper end - view distance api
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 1bada55af5d16437da4d16f9ded55f88a6121eb4..100f057f98b2f15972afe32fade22a7a320cf300 100644
+index 1bada55af5d16437da4d16f9ded55f88a6121eb4..e769c1c2a99a13941124c7442d44a509e7859666 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -189,44 +189,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2216,7 +2216,7 @@ index 1bada55af5d16437da4d16f9ded55f88a6121eb4..100f057f98b2f15972afe32fade22a7a
- return chunkMap.playerChunkManager.getTargetNoTickViewDistance();
- }
- return data.getTargetNoTickViewDistance();
-+ return io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.getAPIViewDistance(this);
++ return io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.getAPIViewDistance(this);
}
@Override
@@ -2239,7 +2239,7 @@ index 1bada55af5d16437da4d16f9ded55f88a6121eb4..100f057f98b2f15972afe32fade22a7a
- return chunkMap.playerChunkManager.getTargetTickViewDistance();
- }
- return data.getTargetTickViewDistance();
-+ return io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.getAPITickViewDistance(this);
++ return io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.getAPITickViewDistance(this);
}
@Override
@@ -2265,7 +2265,7 @@ index 1bada55af5d16437da4d16f9ded55f88a6121eb4..100f057f98b2f15972afe32fade22a7a
- return chunkMap.playerChunkManager.getTargetSendDistance();
- }
- return data.getTargetSendViewDistance();
-+ return io.papermc.paper.chunk.system.RegionisedPlayerChunkLoader.getAPISendViewDistance(this);
++ return io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.getAPISendViewDistance(this);
}
@Override
diff --git a/patches/server/0004-Threaded-Regions.patch b/patches/server/0004-Threaded-Regions.patch
index 6f8e866..5567767 100644
--- a/patches/server/0004-Threaded-Regions.patch
+++ b/patches/server/0004-Threaded-Regions.patch
@@ -1761,7 +1761,7 @@ index cab91880a08c6fdc545804911d295e0f24f4d983..8f2bff24256f0946f38e1d8b0ae9c8c9
LevelChunk chunk = chunkPacketInfo.getChunk();
int x = chunk.getPos().x;
diff --git a/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java
-index 22a2547810d0c029f29685faddf7ac21cde2df0b..30370ad31056437fa3b5bd65357e2e07cb0a6869 100644
+index 22a2547810d0c029f29685faddf7ac21cde2df0b..e36b4053eb2676e934b8c9c401bf58cfa7dd969c 100644
--- a/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java
+++ b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java
@@ -832,14 +832,14 @@ public class RedstoneWireTurbo {
@@ -1769,7 +1769,7 @@ index 22a2547810d0c029f29685faddf7ac21cde2df0b..30370ad31056437fa3b5bd65357e2e07
int l = 0;
- wire.shouldSignal = false;
-+ io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegionisedWorldData().shouldSignal = false; // Folia - region threading
++ io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegionizedWorldData().shouldSignal = false; // Folia - region threading
// Unfortunately, World.isBlockIndirectlyGettingPowered is complicated,
// and I'm not ready to try to replicate even more functionality from
// elsewhere in Minecraft into this accelerator. So sadly, we must
@@ -1777,7 +1777,7 @@ index 22a2547810d0c029f29685faddf7ac21cde2df0b..30370ad31056437fa3b5bd65357e2e07
// is consistency to what this call returns, we may be able to cache it.
final int k = worldIn.getBestNeighborSignal(upd.self);
- wire.shouldSignal = true;
-+ io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegionisedWorldData().shouldSignal = true; // Folia - region threading
++ io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegionizedWorldData().shouldSignal = true; // Folia - region threading
// The variable 'k' holds the maximum redstone power value of any adjacent blocks.
// If 'k' has the highest level of all neighbors, then the power level of this
@@ -1863,7 +1863,7 @@ index 3c17001bcd3862a76a22df488bff80a0ff4d1b83..b2fffaa862df045bacb346f3cbe7eb96
}
}
diff --git a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java
-index 6df1948b1204a7288ecb7238b6fc2a733f7d25b3..6a413abc67aa4dcbab64231be3eb13446d5cc820 100644
+index 61d03808c8d1ab822d9b2f31fab0de14089a3b15..9051a556fea7ee35014db7bdd75b5476f672f5a9 100644
--- a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java
+++ b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java
@@ -91,6 +91,9 @@ public final class ChunkSystem {
@@ -1910,11 +1910,11 @@ index 6df1948b1204a7288ecb7238b6fc2a733f7d25b3..6a413abc67aa4dcbab64231be3eb1344
}
public static ChunkHolder getUnloadingChunkHolder(final ServerLevel level, final int chunkX, final int chunkZ) {
-diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java
-index 7e2176f343160b299e7d4a2817c8f6c9ba7dba7b..9d44c3923ba29d88e39b742f3da97372626b352e 100644
---- a/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java
-+++ b/src/main/java/io/papermc/paper/chunk/system/RegionisedPlayerChunkLoader.java
-@@ -232,17 +232,19 @@ public class RegionisedPlayerChunkLoader {
+diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
+index 99dc2038aa4fb0f70dc3670e451018ff541d3a85..5b4025178c1e476ed5dd0808cc33bf1ec7c08b66 100644
+--- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
++++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
+@@ -232,17 +232,19 @@ public class RegionizedPlayerChunkLoader {
public void tick() {
TickThread.ensureTickThread("Cannot tick player chunk loader async");
long currTime = System.nanoTime();
@@ -1938,7 +1938,7 @@ index 7e2176f343160b299e7d4a2817c8f6c9ba7dba7b..9d44c3923ba29d88e39b742f3da97372
}
private static long[] generateBFSOrder(final int radius) {
-@@ -384,13 +386,13 @@ public class RegionisedPlayerChunkLoader {
+@@ -384,13 +386,13 @@ public class RegionizedPlayerChunkLoader {
this.player = player;
}
@@ -1955,7 +1955,7 @@ index 7e2176f343160b299e7d4a2817c8f6c9ba7dba7b..9d44c3923ba29d88e39b742f3da97372
}
private void pushDelayedTicketOp(final ChunkHolderManager.TicketOperation, ?> op) {
-@@ -607,7 +609,7 @@ public class RegionisedPlayerChunkLoader {
+@@ -607,7 +609,7 @@ public class RegionizedPlayerChunkLoader {
return Math.max(Math.abs(dx), Math.abs(dz)) <= this.lastTickDistance;
}
@@ -1964,7 +1964,7 @@ index 7e2176f343160b299e7d4a2817c8f6c9ba7dba7b..9d44c3923ba29d88e39b742f3da97372
TickThread.ensureTickThread(this.player, "Cannot tick player chunk loader async");
// update rate limits
this.chunkSendCounter.update(time);
-@@ -799,7 +801,7 @@ public class RegionisedPlayerChunkLoader {
+@@ -799,7 +801,7 @@ public class RegionizedPlayerChunkLoader {
this.chunkSendCounter.addTime(time, sendSlots);
}
@@ -2057,7 +2057,7 @@ index 61c170555c8854b102c640b0b6a615f9f732edbf..515cc130a411f218ed20628eb918be9d
}
diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java
-index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de54675e5a148 100644
+index c6d20bc2f0eab737338db6b88dacb63f0decb66c..0d1896d09d419c78501bbccca97424dd1545230b 100644
--- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java
+++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java
@@ -3,7 +3,6 @@ package io.papermc.paper.chunk.system.scheduling;
@@ -2095,8 +2095,8 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
import java.util.function.Predicate;
+// Folia start - region threading
-+import io.papermc.paper.threadedregions.RegionisedServer;
-+import io.papermc.paper.threadedregions.ThreadedRegioniser;
++import io.papermc.paper.threadedregions.RegionizedServer;
++import io.papermc.paper.threadedregions.ThreadedRegionizer;
+import io.papermc.paper.threadedregions.TickRegionScheduler;
+import io.papermc.paper.threadedregions.TickRegions;
+// Folia end - region threading
@@ -2275,7 +2275,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
+ }
+
+ private ChunkHolderManager.HolderManagerRegionData getCurrentRegionData() {
-+ final ThreadedRegioniser.ThreadedRegion region =
++ final ThreadedRegionizer.ThreadedRegion region =
+ TickRegionScheduler.getCurrentRegion();
+
+ if (region == null) {
@@ -2305,7 +2305,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
- final long coord1 = CoordinateUtils.getChunkKey(c1.chunkX, c1.chunkZ);
- final long coord2 = CoordinateUtils.getChunkKey(c2.chunkX, c2.chunkZ);
-+ final ThreadedRegioniser.ThreadedRegion region
++ final ThreadedRegionizer.ThreadedRegion region
+ = this.world.regioniser.getRegionAtUnsynchronised(chunkX, chunkZ);
- if (coord1 == coord2) {
@@ -2364,7 +2364,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
+ // Folia start - region threading
+ final HolderManagerRegionData regionData = this.getCurrentRegionData();
+ if (!regionData.autoSaveQueue.contains(holder)) {
-+ holder.lastAutoSave = RegionisedServer.getCurrentTick();
++ holder.lastAutoSave = RegionizedServer.getCurrentTick();
+ // Folia end - region threading
+ regionData.autoSaveQueue.add(holder);
}
@@ -2373,7 +2373,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
public void autoSave() {
final List reschedule = new ArrayList<>();
- final long currentTick = MinecraftServer.currentTickLong;
-+ final long currentTick = RegionisedServer.getCurrentTick();
++ final long currentTick = RegionizedServer.getCurrentTick();
final long maxSaveTime = currentTick - this.world.paperConfig().chunks.autoSaveInterval.value();
- for (int autoSaved = 0; autoSaved < this.world.paperConfig().chunks.maxAutoSaveChunksPerTick && !this.autoSaveQueue.isEmpty();) {
- final NewChunkHolder holder = this.autoSaveQueue.first();
@@ -2507,7 +2507,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
}
+ // Folia start - region threading
-+ final ThreadedRegioniser.ThreadedRegion currRegion = TickRegionScheduler.getCurrentRegion();
++ final ThreadedRegionizer.ThreadedRegion currRegion = TickRegionScheduler.getCurrentRegion();
+ final boolean lock = currRegion == null || this.world.regioniser.getRegionAtUnsynchronised(
+ CoordinateUtils.getChunkX(chunk), CoordinateUtils.getChunkZ(chunk)
+ ) != currRegion;
@@ -2589,7 +2589,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
}
+ // Folia start - region threading
-+ final ThreadedRegioniser.ThreadedRegion currRegion = TickRegionScheduler.getCurrentRegion();
++ final ThreadedRegionizer.ThreadedRegion currRegion = TickRegionScheduler.getCurrentRegion();
+ final boolean lock = currRegion == null || this.world.regioniser.getRegionAtUnsynchronised(
+ CoordinateUtils.getChunkX(chunk), CoordinateUtils.getChunkZ(chunk)
+ ) != currRegion;
@@ -2748,7 +2748,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
+ final List thisRegionHolders = new ArrayList<>();
+
+ final int regionShift = this.world.regioniser.sectionChunkShift;
-+ final ThreadedRegioniser.ThreadedRegion thisRegion
++ final ThreadedRegionizer.ThreadedRegion thisRegion
+ = TickRegionScheduler.getCurrentRegion();
+
+ for (final NewChunkHolder holder : changedFullStatus) {
@@ -3004,7 +3004,7 @@ index c6d20bc2f0eab737338db6b88dacb63f0decb66c..04d2c42e69ed8ab27d21d3bf038de546
return ret;
}
diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java
-index 84cc9397237fa0c17aa1012dfb5683c90eb6d3b8..93b666893a9755e426701f5c2849fc0fb2026bb7 100644
+index 84cc9397237fa0c17aa1012dfb5683c90eb6d3b8..25db30284e3bab9ebad1ca7320db66116057e599 100644
--- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java
+++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java
@@ -113,7 +113,7 @@ public final class ChunkTaskScheduler {
@@ -3146,7 +3146,7 @@ index 84cc9397237fa0c17aa1012dfb5683c90eb6d3b8..93b666893a9755e426701f5c2849fc0f
public PrioritisedExecutor.PrioritisedTask createChunkTask(final int chunkX, final int chunkZ, final Runnable run,
final PrioritisedExecutor.Priority priority) {
- return this.mainThreadExecutor.createTask(run, priority);
-+ return MinecraftServer.getServer().regionisedServer.taskQueue.createChunkTask(this.world, chunkX, chunkZ, run, priority); // Folia - regionised ticking
++ return MinecraftServer.getServer().regionizedServer.taskQueue.createChunkTask(this.world, chunkX, chunkZ, run, priority); // Folia - regionised ticking
}
public PrioritisedExecutor.PrioritisedTask scheduleChunkTask(final int chunkX, final int chunkZ, final Runnable run) {
@@ -3157,7 +3157,7 @@ index 84cc9397237fa0c17aa1012dfb5683c90eb6d3b8..93b666893a9755e426701f5c2849fc0f
public PrioritisedExecutor.PrioritisedTask scheduleChunkTask(final int chunkX, final int chunkZ, final Runnable run,
final PrioritisedExecutor.Priority priority) {
- return this.mainThreadExecutor.queueRunnable(run, priority);
-+ return MinecraftServer.getServer().regionisedServer.taskQueue.queueChunkTask(this.world, chunkX, chunkZ, run, priority); // Folia - regionised ticking
++ return MinecraftServer.getServer().regionizedServer.taskQueue.queueChunkTask(this.world, chunkX, chunkZ, run, priority); // Folia - regionised ticking
}
- public void executeTasksUntil(final BooleanSupplier exit) {
@@ -3177,7 +3177,7 @@ index 84cc9397237fa0c17aa1012dfb5683c90eb6d3b8..93b666893a9755e426701f5c2849fc0f
+ final PrioritisedExecutor.Priority priority) {
+ final PrioritisedExecutor.PrioritisedTask ret = this.createChunkTask(chunkX, chunkZ, run, priority);
+ this.world.taskQueueRegionData.pushGlobalChunkTask(() -> {
-+ MinecraftServer.getServer().regionisedServer.taskQueue.queueChunkTask(ChunkTaskScheduler.this.world, chunkX, chunkZ, run, priority);
++ MinecraftServer.getServer().regionizedServer.taskQueue.queueChunkTask(ChunkTaskScheduler.this.world, chunkX, chunkZ, run, priority);
+ });
+ return ret;
}
@@ -3289,14 +3289,14 @@ index bbb8b1933ef33a3b91f69545f69dd3cfb84b27f5..b23b76a598731da8feef53c370b34123
public static void registerCommands(final MinecraftServer server) {
diff --git a/src/main/java/io/papermc/paper/command/subcommands/HeapDumpCommand.java b/src/main/java/io/papermc/paper/command/subcommands/HeapDumpCommand.java
-index cd2e4d792e972b8bf1e07b8961594a670ae949cf..6c24e8567d303db35328fe4f0a7b05df16f3590a 100644
+index cd2e4d792e972b8bf1e07b8961594a670ae949cf..3ab8dbf2768a4ef8fb53af6f5431f7f6afe6d168 100644
--- a/src/main/java/io/papermc/paper/command/subcommands/HeapDumpCommand.java
+++ b/src/main/java/io/papermc/paper/command/subcommands/HeapDumpCommand.java
@@ -18,7 +18,9 @@ import static net.kyori.adventure.text.format.NamedTextColor.YELLOW;
public final class HeapDumpCommand implements PaperSubcommand {
@Override
public boolean execute(final CommandSender sender, final String subCommand, final String[] args) {
-+ io.papermc.paper.threadedregions.RegionisedServer.getInstance().addTask(() -> { // Folia - region threading
++ io.papermc.paper.threadedregions.RegionizedServer.getInstance().addTask(() -> { // Folia - region threading
this.dumpHeap(sender);
+ }); // Folia - region threading
return true;
@@ -3368,14 +3368,14 @@ index 99c41a39cdad0271d089c6e03bebfdafba1aaa57..41aaa709dc2e474f23e759ebc51f3302
private static Component createMobcapsComponent(final ToIntFunction countGetter, final ToIntFunction limitGetter) {
return MOB_CATEGORY_COLORS.entrySet().stream()
diff --git a/src/main/java/io/papermc/paper/command/subcommands/ReloadCommand.java b/src/main/java/io/papermc/paper/command/subcommands/ReloadCommand.java
-index bd68139ae635f2ad7ec8e7a21e0056a139c4c62e..0f641ac581243db55a667ad8bc5d1110206b389e 100644
+index bd68139ae635f2ad7ec8e7a21e0056a139c4c62e..48a43341b17247355a531164019d5cc9c5555f26 100644
--- a/src/main/java/io/papermc/paper/command/subcommands/ReloadCommand.java
+++ b/src/main/java/io/papermc/paper/command/subcommands/ReloadCommand.java
@@ -16,7 +16,9 @@ import static net.kyori.adventure.text.format.NamedTextColor.RED;
public final class ReloadCommand implements PaperSubcommand {
@Override
public boolean execute(final CommandSender sender, final String subCommand, final String[] args) {
-+ io.papermc.paper.threadedregions.RegionisedServer.getInstance().addTask(() -> { // Folia - region threading
++ io.papermc.paper.threadedregions.RegionizedServer.getInstance().addTask(() -> { // Folia - region threading
this.doReload(sender);
+ }); // Folia - region threading
return true;
@@ -3632,7 +3632,7 @@ index 0000000000000000000000000000000000000000..d9687722e02dfd4088c7030abbf5008e
+}
diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java b/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java
new file mode 100644
-index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3f2afd9e8
+index 0000000000000000000000000000000000000000..6c288d1db81c4d6f574674889a98553baf9b86ee
--- /dev/null
+++ b/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java
@@ -0,0 +1,174 @@
@@ -3653,7 +3653,7 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+
+ private static final Logger LOGGER = LogUtils.getClassLogger();
+
-+ ThreadedRegioniser.ThreadedRegion shuttingDown;
++ ThreadedRegionizer.ThreadedRegion shuttingDown;
+
+ public RegionShutdownThread(final String name) {
+ super(name);
@@ -3662,7 +3662,7 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+ });
+ }
+
-+ static ThreadedRegioniser.ThreadedRegion getRegion() {
++ static ThreadedRegionizer.ThreadedRegion getRegion() {
+ final Thread currentThread = Thread.currentThread();
+ if (currentThread instanceof RegionShutdownThread shutdownThread) {
+ return shutdownThread.shuttingDown;
@@ -3671,7 +3671,7 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+ }
+
+
-+ static RegionisedWorldData getWorldData() {
++ static RegionizedWorldData getWorldData() {
+ final Thread currentThread = Thread.currentThread();
+ if (currentThread instanceof RegionShutdownThread shutdownThread) {
+ // no fast path for shutting down
@@ -3695,7 +3695,7 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+ }
+ }
+
-+ private void finishTeleportations(final ThreadedRegioniser.ThreadedRegion region,
++ private void finishTeleportations(final ThreadedRegionizer.ThreadedRegion region,
+ final ServerLevel world) {
+ try {
+ this.shuttingDown = region;
@@ -3729,7 +3729,7 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+ }
+ }
+
-+ private void saveRegionChunks(final ThreadedRegioniser.ThreadedRegion region,
++ private void saveRegionChunks(final ThreadedRegionizer.ThreadedRegion region,
+ final boolean last) {
+ ChunkPos center = null;
+ try {
@@ -3785,17 +3785,17 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+ }
+ LOGGER.info("Halted chunk systems");
+ for (final ServerLevel world : MinecraftServer.getServer().getAllLevels()) {
-+ final List>
++ final List>
+ regions = new ArrayList<>();
+ world.regioniser.computeForAllRegionsUnsynchronised(regions::add);
+
+ for (int i = 0, len = regions.size(); i < len; ++i) {
-+ final ThreadedRegioniser.ThreadedRegion region = regions.get(i);
++ final ThreadedRegionizer.ThreadedRegion region = regions.get(i);
+ this.finishTeleportations(region, world);
+ }
+
+ for (int i = 0, len = regions.size(); i < len; ++i) {
-+ final ThreadedRegioniser.ThreadedRegion region = regions.get(i);
++ final ThreadedRegionizer.ThreadedRegion region = regions.get(i);
+ this.saveRegionChunks(region, (i + 1) == len);
+ }
+
@@ -3810,11 +3810,11 @@ index 0000000000000000000000000000000000000000..85ef8a74152cb0a71d9133815bee05e3
+ // done, part 2 should call exit()
+ }
+}
-diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionisedData.java b/src/main/java/io/papermc/paper/threadedregions/RegionisedData.java
+diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedData.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedData.java
new file mode 100644
-index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d89595442018c9dfa2
+index 0000000000000000000000000000000000000000..1f48ada99d6d24880f9bda1cd05d41a4562e42f5
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/threadedregions/RegionisedData.java
++++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedData.java
@@ -0,0 +1,235 @@
+package io.papermc.paper.threadedregions;
+
@@ -3828,18 +3828,18 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+/**
+ * Use to manage data that needs to be regionised.
+ *
-+ * Note: that unlike {@link ThreadLocal}, regionised data is not deleted once the {@code RegionisedData} object is GC'd.
++ * Note: that unlike {@link ThreadLocal}, regionised data is not deleted once the {@code RegionizedData} object is GC'd.
+ * The data is held in reference to the world it resides in.
+ *
+ *
+ * Note: Keep in mind that when regionised ticking is disabled, the entire server is considered a single region.
-+ * That is, the data may or may not cross worlds. As such, the {@code RegionisedData} object must be instanced
++ * That is, the data may or may not cross worlds. As such, the {@code RegionizedData} object must be instanced
+ * per world when appropriate, as it is no longer guaranteed that separate worlds contain separate regions.
+ * See below for more details on instancing per world.
+ *
+ *
+ * Regionised data may be world-checked. That is, {@link #get()} may throw an exception if the current
-+ * region's world does not match the {@code RegionisedData}'s world. Consider the usages of {@code RegionisedData} below
++ * region's world does not match the {@code RegionizedData}'s world. Consider the usages of {@code RegionizedData} below
+ * see why the behavior may or may not be desirable:
+ *
+ * {@code
@@ -3859,8 +3859,8 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ *
+ * // callback is left out of this example
+ * // note: world != null here
-+ * public final RegionisedData entityTickLists =
-+ * new RegionisedData<>(this, () -> new EntityTickList(), ...);
++ * public final RegionizedData entityTickLists =
++ * new RegionizedData<>(this, () -> new EntityTickList(), ...);
+ *
+ * public void addTickingEntity(Entity e) {
+ * // What we expect here is that this world is the
@@ -3874,7 +3874,7 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ * // and if the world check is disabled, then we will actually
+ * // retrieve _this_ world's EntityTickList for the region,
+ * // and NOT the EntityTickList for the region's world.
-+ * // This is because the RegionisedData object is instantiated
++ * // This is because the RegionizedData object is instantiated
+ * // per world.
+ * this.entityTickLists.get().addEntity(e);
+ * }
@@ -3901,18 +3901,18 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ * public final List worlds = ...;
+ *
+ * // callback is left out of this example
-+ * // note: world == null here, because this RegionisedData object
++ * // note: world == null here, because this RegionizedData object
+ * // is not instantiated per world, but rather globally.
-+ * public final RegionisedData tickTimes =
-+ * new RegionisedData<>(null, () -> new TickTimes(), ...);
++ * public final RegionizedData tickTimes =
++ * new RegionizedData<>(null, () -> new TickTimes(), ...);
+ * }
+ * }
+ *
-+ * In general, it is advised that if a RegionisedData object is instantiated per world, that world checking
++ * In general, it is advised that if a RegionizedData object is instantiated per world, that world checking
+ * is enabled for it by passing the world to the constructor.
+ *
+ */
-+public final class RegionisedData {
++public final class RegionizedData {
+
+ private final ServerLevel world;
+ private final Supplier initialValueSupplier;
@@ -3937,7 +3937,7 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ * @param supplier Initial value supplier used to lazy initialise region data.
+ * @param callback Region callback to manage this regionised data.
+ */
-+ public RegionisedData(final ServerLevel world, final Supplier supplier, final RegioniserCallback callback) {
++ public RegionizedData(final ServerLevel world, final Supplier supplier, final RegioniserCallback callback) {
+ this.world = world;
+ this.initialValueSupplier = Validate.notNull(supplier, "Supplier may not be null.");
+ this.callback = Validate.notNull(callback, "Regioniser callback may not be null.");
@@ -3955,11 +3955,11 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ * Returns the current data type for the current ticking region. If there is no region, returns {@code null}.
+ * @return the current data type for the current ticking region. If there is no region, returns {@code null}.
+ * @throws IllegalStateException If the following are true: The server is in region ticking mode,
-+ * this {@code RegionisedData}'s world is not {@code null},
-+ * and the current ticking region's world does not match this {@code RegionisedData}'s world.
++ * this {@code RegionizedData}'s world is not {@code null},
++ * and the current ticking region's world does not match this {@code RegionizedData}'s world.
+ */
+ public @Nullable T get() {
-+ final ThreadedRegioniser.ThreadedRegion region =
++ final ThreadedRegionizer.ThreadedRegion region =
+ TickRegionScheduler.getCurrentRegion();
+
+ if (region == null) {
@@ -3970,7 +3970,7 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ throw new IllegalStateException("World check failed: expected world: " + this.world.getWorld().getKey() + ", region world: " + region.getData().world.getWorld().getKey());
+ }
+
-+ return region.getData().getOrCreateRegionisedData(this);
++ return region.getData().getOrCreateRegionizedData(this);
+ }
+
+ /**
@@ -4051,17 +4051,16 @@ index 0000000000000000000000000000000000000000..3549e5f3359f38b207e189d895954420
+ );
+ }
+}
-diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionisedServer.java b/src/main/java/io/papermc/paper/threadedregions/RegionisedServer.java
+diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedServer.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedServer.java
new file mode 100644
-index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c683e09a57a
+index 0000000000000000000000000000000000000000..6c1d55144f044f39926ddf998104950b9efe3ee1
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/threadedregions/RegionisedServer.java
-@@ -0,0 +1,355 @@
++++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedServer.java
+@@ -0,0 +1,348 @@
+package io.papermc.paper.threadedregions;
+
+import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue;
+import ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool;
-+import com.mojang.authlib.GameProfile;
+import com.mojang.logging.LogUtils;
+import io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler;
+import io.papermc.paper.util.TickThread;
@@ -4073,33 +4072,27 @@ index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c68
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.protocol.game.ClientboundDisconnectPacket;
-+import net.minecraft.network.protocol.status.ServerStatus;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.dedicated.DedicatedServer;
+import net.minecraft.server.level.ServerLevel;
-+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.server.network.ServerGamePacketListenerImpl;
+import net.minecraft.server.network.ServerLoginPacketListenerImpl;
-+import net.minecraft.server.players.PlayerList;
-+import net.minecraft.util.Mth;
+import net.minecraft.world.level.GameRules;
-+import net.minecraft.world.level.levelgen.LegacyRandomSource;
+import org.bukkit.Bukkit;
+import org.slf4j.Logger;
+import java.util.ArrayList;
-+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.BooleanSupplier;
+
-+public final class RegionisedServer {
++public final class RegionizedServer {
+
+ private static final Logger LOGGER = LogUtils.getLogger();
-+ private static final RegionisedServer INSTANCE = new RegionisedServer();
++ private static final RegionizedServer INSTANCE = new RegionizedServer();
+
-+ public final RegionisedTaskQueue taskQueue = new RegionisedTaskQueue();
++ public final RegionizedTaskQueue taskQueue = new RegionizedTaskQueue();
+
+ private final CopyOnWriteArrayList worlds = new CopyOnWriteArrayList<>();
+ private final CopyOnWriteArrayList connections = new CopyOnWriteArrayList<>();
@@ -4108,7 +4101,7 @@ index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c68
+
+ private final GlobalTickTickHandle tickHandle = new GlobalTickTickHandle(this);
+
-+ public static RegionisedServer getInstance() {
++ public static RegionizedServer getInstance() {
+ return INSTANCE;
+ }
+
@@ -4126,7 +4119,7 @@ index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c68
+
+ public void init() {
+ // call init event _before_ scheduling anything
-+ new RegionisedServerInitEvent().callEvent();
++ new RegionizedServerInitEvent().callEvent();
+
+ // now we can schedule
+ this.tickHandle.setInitialStart(System.nanoTime() + TickRegionScheduler.TIME_BETWEEN_TICKS);
@@ -4152,7 +4145,7 @@ index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c68
+ * @throws IllegalStateException If there is no current region.
+ */
+ public static long getCurrentTick() throws IllegalStateException {
-+ final ThreadedRegioniser.ThreadedRegion region =
++ final ThreadedRegionizer.ThreadedRegion region =
+ TickRegionScheduler.getCurrentRegion();
+ if (region == null) {
+ if (TickThread.isShutdownThread()) {
@@ -4179,12 +4172,12 @@ index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c68
+
+ private static final class GlobalTickTickHandle extends TickRegionScheduler.RegionScheduleHandle {
+
-+ private final RegionisedServer server;
++ private final RegionizedServer server;
+
+ private final AtomicBoolean scheduled = new AtomicBoolean();
+ private final AtomicBoolean ticking = new AtomicBoolean();
+
-+ public GlobalTickTickHandle(final RegionisedServer server) {
++ public GlobalTickTickHandle(final RegionizedServer server) {
+ super(null, SchedulerThreadPool.DEADLINE_NOT_SET);
+ this.server = server;
+ }
@@ -4412,11 +4405,11 @@ index 0000000000000000000000000000000000000000..4525ad9d0537406e2ca6ff8627d06c68
+
+ }
+}
-diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionisedTaskQueue.java b/src/main/java/io/papermc/paper/threadedregions/RegionisedTaskQueue.java
+diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
new file mode 100644
-index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd25aa54be
+index 0000000000000000000000000000000000000000..ac043fbc74874c205b821c3d2d011b921d5704fa
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/threadedregions/RegionisedTaskQueue.java
++++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
@@ -0,0 +1,752 @@
+package io.papermc.paper.threadedregions;
+
@@ -4438,7 +4431,7 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.ReentrantLock;
+
-+public final class RegionisedTaskQueue {
++public final class RegionizedTaskQueue {
+
+ private static final TicketType TASK_QUEUE_TICKET = TicketType.create("task_queue_ticket", (a, b) -> 0);
+
@@ -4513,8 +4506,8 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+ }
+
+ private PrioritisedQueue getQueue(final boolean synchronise, final int chunkX, final int chunkZ, final boolean isChunkTask) {
-+ final ThreadedRegioniser regioniser = this.world.regioniser;
-+ final ThreadedRegioniser.ThreadedRegion region
++ final ThreadedRegionizer regioniser = this.world.regioniser;
++ final ThreadedRegionizer.ThreadedRegion region
+ = synchronise ? regioniser.getRegionAtSynchronised(chunkX, chunkZ) : regioniser.getRegionAtUnsynchronised(chunkX, chunkZ);
+ if (region == null) {
+ return null;
@@ -4636,8 +4629,8 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+ return this.worldRegionTaskData.executeGlobalChunkTask() || this.chunkQueue.executeTask();
+ }
+
-+ void split(final ThreadedRegioniser regioniser,
-+ final Long2ReferenceOpenHashMap> into) {
++ void split(final ThreadedRegionizer regioniser,
++ final Long2ReferenceOpenHashMap> into) {
+ this.tickTaskQueue.split(
+ false, regioniser, into
+ );
@@ -4743,9 +4736,9 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+
+ // into is a map of section coordinate to region
+ public void split(final boolean isChunkData,
-+ final ThreadedRegioniser regioniser,
-+ final Long2ReferenceOpenHashMap> into) {
-+ final Reference2ReferenceOpenHashMap, ArrayDeque[]>
++ final ThreadedRegionizer regioniser,
++ final Long2ReferenceOpenHashMap> into) {
++ final Reference2ReferenceOpenHashMap, ArrayDeque[]>
+ split = new Reference2ReferenceOpenHashMap<>();
+ final int shift = regioniser.sectionChunkShift;
+ synchronized (this) {
@@ -4761,7 +4754,7 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+ final int sectionX = task.chunkX >> shift;
+ final int sectionZ = task.chunkZ >> shift;
+ final long sectionKey = CoordinateUtils.getChunkKey(sectionX, sectionZ);
-+ final ThreadedRegioniser.ThreadedRegion
++ final ThreadedRegionizer.ThreadedRegion
+ region = into.get(sectionKey);
+ if (region == null) {
+ throw new IllegalStateException();
@@ -4780,10 +4773,10 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+ }
+
+ // merge the targets into their queues
-+ for (final Iterator, ArrayDeque[]>>
++ for (final Iterator, ArrayDeque[]>>
+ iterator = split.reference2ReferenceEntrySet().fastIterator();
+ iterator.hasNext();) {
-+ final Reference2ReferenceMap.Entry, ArrayDeque[]>
++ final Reference2ReferenceMap.Entry, ArrayDeque[]>
+ entry = iterator.next();
+ final RegionTaskQueueData taskQueueData = entry.getKey().getData().getTaskQueueData();
+ mergeInto(isChunkData ? taskQueueData.chunkQueue : taskQueueData.tickTaskQueue, entry.getValue());
@@ -5170,11 +5163,11 @@ index 0000000000000000000000000000000000000000..b9c9c2db35924bcc5e752d39fa2949bd
+ }
+ }
+}
-diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionisedWorldData.java b/src/main/java/io/papermc/paper/threadedregions/RegionisedWorldData.java
+diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java
new file mode 100644
-index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a6566b56d
+index 0000000000000000000000000000000000000000..f55c28bbee70e8418dd0555d50c43ddd434d5347
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/threadedregions/RegionisedWorldData.java
++++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java
@@ -0,0 +1,665 @@
+package io.papermc.paper.threadedregions;
+
@@ -5235,13 +5228,13 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+
-+public final class RegionisedWorldData {
++public final class RegionizedWorldData {
+
+ private static final Logger LOGGER = LogUtils.getLogger();
+
-+ public static final RegionisedData.RegioniserCallback REGION_CALLBACK = new RegionisedData.RegioniserCallback<>() {
++ public static final RegionizedData.RegioniserCallback REGION_CALLBACK = new RegionizedData.RegioniserCallback<>() {
+ @Override
-+ public void merge(final RegionisedWorldData from, final RegionisedWorldData into, final long fromTickOffset) {
++ public void merge(final RegionizedWorldData from, final RegionizedWorldData into, final long fromTickOffset) {
+ // connections
+ for (final Connection conn : from.connections) {
+ into.connections.add(conn);
@@ -5315,9 +5308,9 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ }
+
+ @Override
-+ public void split(final RegionisedWorldData from, final int chunkToRegionShift,
-+ final Long2ReferenceOpenHashMap regionToData,
-+ final ReferenceOpenHashSet dataSet) {
++ public void split(final RegionizedWorldData from, final int chunkToRegionShift,
++ final Long2ReferenceOpenHashMap regionToData,
++ final ReferenceOpenHashSet dataSet) {
+ // connections
+ for (final Connection conn : from.connections) {
+ final ServerPlayer player = conn.getPlayer();
@@ -5339,7 +5332,7 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ final ChunkPos pos = entity.chunkPosition();
+ // Note: It is impossible for an entity in the world to _not_ be in an entity chunk, which means
+ // the chunk holder must _exist_, and so the region section exists.
-+ final RegionisedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(pos.x >> chunkToRegionShift, pos.z >> chunkToRegionShift));
++ final RegionizedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(pos.x >> chunkToRegionShift, pos.z >> chunkToRegionShift));
+ into.allEntities.add(entity);
+ // Note: entityTickList is a subset of allEntities
+ if (from.entityTickList.contains(entity)) {
@@ -5356,7 +5349,7 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ final int chunkX = pos.getX() >> 4;
+ final int chunkZ = pos.getZ() >> 4;
+
-+ final RegionisedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift));
++ final RegionizedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift));
+ // Unlike entities, the chunk holder is not guaranteed to exist for block events, because the block events
+ // is just some list. So if it unloads, I guess it's just lost.
+ if (into != null) {
@@ -5367,11 +5360,11 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ final Long2ReferenceOpenHashMap> levelTicksBlockRegionData = new Long2ReferenceOpenHashMap<>(regionToData.size(), 0.75f);
+ final Long2ReferenceOpenHashMap> levelTicksFluidRegionData = new Long2ReferenceOpenHashMap<>(regionToData.size(), 0.75f);
+
-+ for (final Iterator> iterator = regionToData.long2ReferenceEntrySet().fastIterator();
++ for (final Iterator> iterator = regionToData.long2ReferenceEntrySet().fastIterator();
+ iterator.hasNext();) {
-+ final Long2ReferenceMap.Entry entry = iterator.next();
++ final Long2ReferenceMap.Entry entry = iterator.next();
+ final long key = entry.getLongKey();
-+ final RegionisedWorldData worldData = entry.getValue();
++ final RegionizedWorldData worldData = entry.getValue();
+
+ levelTicksBlockRegionData.put(key, worldData.blockLevelTicks);
+ levelTicksFluidRegionData.put(key, worldData.fluidLevelTicks);
@@ -5386,7 +5379,7 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ final int chunkX = pos.getX() >> 4;
+ final int chunkZ = pos.getZ() >> 4;
+
-+ final RegionisedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift));
++ final RegionizedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift));
+ if (into != null) {
+ into.pendingBlockEntityTickers.add(tileEntity);
+ } // else: when a chunk unloads, it does not actually _remove_ the tile entity from the list, it just gets
@@ -5397,15 +5390,15 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ final int chunkX = pos.getX() >> 4;
+ final int chunkZ = pos.getZ() >> 4;
+
-+ final RegionisedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift));
++ final RegionizedWorldData into = regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift));
+ if (into != null) {
+ into.blockEntityTickers.add(tileEntity);
+ } // else: when a chunk unloads, it does not actually _remove_ the tile entity from the list, it just gets
+ // marked as removed. So if there is no section, it's probably removed!
+ }
+ // time
-+ for (final RegionisedWorldData regionisedWorldData : dataSet) {
-+ regionisedWorldData.redstoneTime = from.redstoneTime;
++ for (final RegionizedWorldData regionizedWorldData : dataSet) {
++ regionizedWorldData.redstoneTime = from.redstoneTime;
+ }
+ // ticking chunks
+ for (final Iterator iterator = from.entityTickingChunks.unsafeIterator(); iterator.hasNext();) {
@@ -5428,7 +5421,7 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ for (final net.minecraft.world.level.block.RedstoneTorchBlock.Toggle info : from.redstoneUpdateInfos) {
+ final BlockPos pos = info.pos;
+
-+ final RegionisedWorldData worldData = regionToData.get(CoordinateUtils.getChunkKey((pos.getX() >> 4) >> chunkToRegionShift, (pos.getZ() >> 4) >> chunkToRegionShift));
++ final RegionizedWorldData worldData = regionToData.get(CoordinateUtils.getChunkKey((pos.getX() >> 4) >> chunkToRegionShift, (pos.getZ() >> 4) >> chunkToRegionShift));
+ if (worldData != null) {
+ if (worldData.redstoneUpdateInfos == null) {
+ worldData.redstoneUpdateInfos = new ArrayDeque<>();
@@ -5449,21 +5442,21 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ regionToData.get(CoordinateUtils.getChunkKey(chunkX >> chunkToRegionShift, chunkZ >> chunkToRegionShift)).chunksBeingWorkedOn.put(pos, value);
+ }
+ // mob spawning
-+ for (final RegionisedWorldData regionisedWorldData : dataSet) {
-+ regionisedWorldData.catSpawnerNextTick = from.catSpawnerNextTick;
-+ regionisedWorldData.patrolSpawnerNextTick = from.patrolSpawnerNextTick;
-+ regionisedWorldData.phantomSpawnerNextTick = from.phantomSpawnerNextTick;
-+ regionisedWorldData.wanderingTraderTickDelay = from.wanderingTraderTickDelay;
-+ regionisedWorldData.wanderingTraderSpawnChance = from.wanderingTraderSpawnChance;
-+ regionisedWorldData.wanderingTraderSpawnDelay = from.wanderingTraderSpawnDelay;
-+ regionisedWorldData.villageSiegeState = new VillageSiegeState(); // just re set it, as the spawn pos will be invalid
++ for (final RegionizedWorldData regionizedWorldData : dataSet) {
++ regionizedWorldData.catSpawnerNextTick = from.catSpawnerNextTick;
++ regionizedWorldData.patrolSpawnerNextTick = from.patrolSpawnerNextTick;
++ regionizedWorldData.phantomSpawnerNextTick = from.phantomSpawnerNextTick;
++ regionizedWorldData.wanderingTraderTickDelay = from.wanderingTraderTickDelay;
++ regionizedWorldData.wanderingTraderSpawnChance = from.wanderingTraderSpawnChance;
++ regionizedWorldData.wanderingTraderSpawnDelay = from.wanderingTraderSpawnDelay;
++ regionizedWorldData.villageSiegeState = new VillageSiegeState(); // just re set it, as the spawn pos will be invalid
+ }
+ }
+ };
+
+ public final ServerLevel world;
+
-+ private RegionisedServer.WorldLevelData tickData;
++ private RegionizedServer.WorldLevelData tickData;
+
+ // connections
+ public final List connections = new ArrayList<>();
@@ -5600,7 +5593,7 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ public int spawnZ;
+ }
+
-+ public RegionisedWorldData(final ServerLevel world) {
++ public RegionizedWorldData(final ServerLevel world) {
+ this.world = world;
+ this.blockLevelTicks = new LevelTicks<>(world::isPositionTickingWithEntitiesLoaded, world.getProfilerSupplier(), world, true);
+ this.fluidLevelTicks = new LevelTicks<>(world::isPositionTickingWithEntitiesLoaded, world.getProfilerSupplier(), world, false);
@@ -5610,7 +5603,7 @@ index 0000000000000000000000000000000000000000..d22c6140ee4e34a6cc2dcd110e3cfb1a
+ this.updateTickData();
+ }
+
-+ public RegionisedServer.WorldLevelData getTickData() {
++ public RegionizedServer.WorldLevelData getTickData() {
+ return this.tickData;
+ }
+
@@ -6004,11 +5997,11 @@ index 0000000000000000000000000000000000000000..84b4ff07735fb84e28ee8966ffdedb1b
+
+ private TeleportUtils() {}
+}
-diff --git a/src/main/java/io/papermc/paper/threadedregions/ThreadedRegioniser.java b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegioniser.java
+diff --git a/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
new file mode 100644
-index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da063119868
+index 0000000000000000000000000000000000000000..ff290d9dcd3494215ce7e41945ef47f00e8c9489
--- /dev/null
-+++ b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegioniser.java
++++ b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
@@ -0,0 +1,1211 @@
+package io.papermc.paper.threadedregions;
+
@@ -6035,7 +6028,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+import java.util.function.BooleanSupplier;
+import java.util.function.Consumer;
+
-+public final class ThreadedRegioniser, S extends ThreadedRegioniser.ThreadedRegionSectionData> {
++public final class ThreadedRegionizer, S extends ThreadedRegionizer.ThreadedRegionSectionData> {
+
+ private static final Logger LOGGER = LogUtils.getLogger();
+
@@ -6062,7 +6055,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ * See REGION_LOGIC.md for complete details on what this class is doing
+ */
+
-+ public ThreadedRegioniser(final int minSectionRecalcCount, final double maxDeadRegionPercent,
++ public ThreadedRegionizer(final int minSectionRecalcCount, final double maxDeadRegionPercent,
+ final int emptySectionCreateRadius, final int regionSectionMergeRadius,
+ final int regionSectionChunkShift, final ServerLevel world,
+ final RegionCallbacks callbacks) {
@@ -6654,14 +6647,14 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ private final Long2ReferenceOpenHashMap> sectionByKey = new Long2ReferenceOpenHashMap<>();
+ private final ReferenceOpenHashSet> deadSections = new ReferenceOpenHashSet<>();
+
-+ public final ThreadedRegioniser regioniser;
++ public final ThreadedRegionizer regioniser;
+
+ private final R data;
+
+ private final ReferenceOpenHashSet> mergeIntoLater = new ReferenceOpenHashSet<>();
+ private final ReferenceOpenHashSet> expectingMergeFrom = new ReferenceOpenHashSet<>();
+
-+ public ThreadedRegion(final ThreadedRegioniser regioniser) {
++ public ThreadedRegion(final ThreadedRegionizer regioniser) {
+ this.regioniser = regioniser;
+ this.id = REGION_ID_GENERATOR.getAndIncrement();
+ this.state = STATE_TRANSIENT;
@@ -6912,7 +6905,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ private ThreadedRegion region;
+ private static final VarHandle REGION_HANDLE = ConcurrentUtil.getVarHandle(ThreadedRegionSection.class, "region", ThreadedRegion.class);
+
-+ public final ThreadedRegioniser regioniser;
++ public final ThreadedRegionizer regioniser;
+
+ private final int regionChunkShift;
+ private final int regionChunkMask;
@@ -6932,7 +6925,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ }
+
+ // creates an empty section with zero non-empty neighbours
-+ private ThreadedRegionSection(final int sectionX, final int sectionZ, final ThreadedRegioniser regioniser) {
++ private ThreadedRegionSection(final int sectionX, final int sectionZ, final ThreadedRegionizer regioniser) {
+ this.sectionX = sectionX;
+ this.sectionZ = sectionZ;
+ this.sectionKey = CoordinateUtils.getChunkKey(sectionX, sectionZ);
@@ -6945,7 +6938,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ }
+
+ // creates a section with an initial chunk with zero non-empty neighbours
-+ private ThreadedRegionSection(final int sectionX, final int sectionZ, final ThreadedRegioniser regioniser,
++ private ThreadedRegionSection(final int sectionX, final int sectionZ, final ThreadedRegionizer regioniser,
+ final int chunkXInit, final int chunkZInit) {
+ this(sectionX, sectionZ, regioniser);
+
@@ -6955,7 +6948,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ }
+
+ // creates an empty section with the specified number of non-empty neighbours
-+ private ThreadedRegionSection(final int sectionX, final int sectionZ, final ThreadedRegioniser regioniser,
++ private ThreadedRegionSection(final int sectionX, final int sectionZ, final ThreadedRegionizer regioniser,
+ final int nonEmptyNeighbours) {
+ this(sectionX, sectionZ, regioniser);
+
@@ -7108,7 +7101,7 @@ index 0000000000000000000000000000000000000000..2334e62953a4d0a415c4c1fe653b6da0
+ * @param into A map of region section coordinate key to the region that owns the section.
+ * @param regions The set of regions to split into.
+ */
-+ public void split(final ThreadedRegioniser regioniser, final Long2ReferenceOpenHashMap> into,
++ public void split(final ThreadedRegionizer regioniser, final Long2ReferenceOpenHashMap> into,
+ final ReferenceOpenHashSet> regions);
+
+ /**
@@ -7562,7 +7555,7 @@ index 0000000000000000000000000000000000000000..29f9fed5f02530b3256e6b993e607d46
+}
diff --git a/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java b/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java
new file mode 100644
-index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc02c9a738a
+index 0000000000000000000000000000000000000000..3f14eda409ca49095dc43796868435b705c36ce4
--- /dev/null
+++ b/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java
@@ -0,0 +1,559 @@
@@ -7619,7 +7612,7 @@ index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc0
+ return this.scheduler.getThreads().length;
+ }
+
-+ private static void setTickingRegion(final ThreadedRegioniser.ThreadedRegion region) {
++ private static void setTickingRegion(final ThreadedRegionizer.ThreadedRegion region) {
+ final Thread currThread = Thread.currentThread();
+ if (!(currThread instanceof TickThreadRunner tickThreadRunner)) {
+ throw new IllegalStateException("Must be tick thread runner");
@@ -7632,9 +7625,9 @@ index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc0
+ }
+ tickThreadRunner.currentTickingRegion = region;
+ if (region != null) {
-+ tickThreadRunner.currentTickingWorldRegionisedData = region.regioniser.world.worldRegionData.get();
++ tickThreadRunner.currentTickingWorldRegionizedData = region.regioniser.world.worldRegionData.get();
+ } else {
-+ tickThreadRunner.currentTickingWorldRegionisedData = null;
++ tickThreadRunner.currentTickingWorldRegionizedData = null;
+ }
+ }
+
@@ -7656,7 +7649,7 @@ index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc0
+ * Returns the current ticking region, or {@code null} if there is no ticking region.
+ * If this thread is not a TickThread, then returns {@code null}.
+ */
-+ public static ThreadedRegioniser.ThreadedRegion getCurrentRegion() {
++ public static ThreadedRegionizer.ThreadedRegion getCurrentRegion() {
+ final Thread currThread = Thread.currentThread();
+ if (!(currThread instanceof TickThreadRunner tickThreadRunner)) {
+ return RegionShutdownThread.getRegion();
@@ -7666,15 +7659,15 @@ index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc0
+
+ /**
+ * Returns the current ticking region's world regionised data, or {@code null} if there is no ticking region.
-+ * This is a faster alternative to calling the {@link RegionisedData#get()} method.
++ * This is a faster alternative to calling the {@link RegionizedData#get()} method.
+ * If this thread is not a TickThread, then returns {@code null}.
+ */
-+ public static RegionisedWorldData getCurrentRegionisedWorldData() {
++ public static RegionizedWorldData getCurrentRegionizedWorldData() {
+ final Thread currThread = Thread.currentThread();
+ if (!(currThread instanceof TickThreadRunner tickThreadRunner)) {
+ return RegionShutdownThread.getWorldData();
+ }
-+ return tickThreadRunner.currentTickingWorldRegionisedData;
++ return tickThreadRunner.currentTickingWorldRegionizedData;
+ }
+
+ /**
@@ -7758,8 +7751,8 @@ index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc0
+ // This is much faster than a thread local, since the thread local has to use a map lookup.
+ private static final class TickThreadRunner extends TickThread {
+
-+ private ThreadedRegioniser.ThreadedRegion currentTickingRegion;
-+ private RegionisedWorldData currentTickingWorldRegionisedData;
++ private ThreadedRegionizer.ThreadedRegion currentTickingRegion;
++ private RegionizedWorldData currentTickingWorldRegionizedData;
+ private SchedulerThreadPool.SchedulableTick currentTickingTask;
+
+ public TickThreadRunner(final Runnable run, final String name) {
@@ -8127,7 +8120,7 @@ index 0000000000000000000000000000000000000000..22d54b86ad86ecb8b739f51aedcb3fc0
+}
diff --git a/src/main/java/io/papermc/paper/threadedregions/TickRegions.java b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
new file mode 100644
-index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d774baea1
+index 0000000000000000000000000000000000000000..1ac3c3612df4c1c5c28efc4e23ea107aa722050e
--- /dev/null
+++ b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
@@ -0,0 +1,355 @@
@@ -8151,7 +8144,7 @@ index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BooleanSupplier;
+
-+public final class TickRegions implements ThreadedRegioniser.RegionCallbacks {
++public final class TickRegions implements ThreadedRegionizer.RegionCallbacks {
+
+ private static final Logger LOGGER = LogUtils.getLogger();
+
@@ -8189,7 +8182,7 @@ index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d
+ }
+
+ @Override
-+ public TickRegionData createNewData(final ThreadedRegioniser.ThreadedRegion region) {
++ public TickRegionData createNewData(final ThreadedRegionizer.ThreadedRegion region) {
+ return new TickRegionData(region);
+ }
+
@@ -8199,17 +8192,17 @@ index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d
+ }
+
+ @Override
-+ public void onRegionCreate(final ThreadedRegioniser.ThreadedRegion region) {
++ public void onRegionCreate(final ThreadedRegionizer.ThreadedRegion region) {
+ // nothing for now
+ }
+
+ @Override
-+ public void onRegionDestroy(final ThreadedRegioniser.ThreadedRegion region) {
++ public void onRegionDestroy(final ThreadedRegionizer.ThreadedRegion region) {
+ // nothing for now
+ }
+
+ @Override
-+ public void onRegionActive(final ThreadedRegioniser.ThreadedRegion region) {
++ public void onRegionActive(final ThreadedRegionizer.ThreadedRegion region) {
+ final TickRegionData data = region.getData();
+
+ data.tickHandle.checkInitialSchedule();
@@ -8217,7 +8210,7 @@ index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d
+ }
+
+ @Override
-+ public void onRegionInactive(final ThreadedRegioniser.ThreadedRegion region) {
++ public void onRegionInactive(final ThreadedRegionizer.ThreadedRegion region) {
+ final TickRegionData data = region.getData();
+
+ scheduler.descheduleRegion(data.tickHandle);
@@ -8225,36 +8218,36 @@ index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d
+ data.tickHandle = data.tickHandle.copy();
+ }
+
-+ public static final class TickRegionSectionData implements ThreadedRegioniser.ThreadedRegionSectionData {}
++ public static final class TickRegionSectionData implements ThreadedRegionizer.ThreadedRegionSectionData {}
+
-+ public static final class TickRegionData implements ThreadedRegioniser.ThreadedRegionData {
++ public static final class TickRegionData implements ThreadedRegionizer.ThreadedRegionData {
+
+ private static final AtomicLong ID_GENERATOR = new AtomicLong();
+ /** Never 0L, since 0L is reserved for global region. */
+ public final long id = ID_GENERATOR.incrementAndGet();
+
-+ public final ThreadedRegioniser.ThreadedRegion region;
++ public final ThreadedRegionizer.ThreadedRegion region;
+ public final ServerLevel world;
+
+ // generic regionised data
-+ private final Reference2ReferenceOpenHashMap, Object> regionisedData = new Reference2ReferenceOpenHashMap<>();
++ private final Reference2ReferenceOpenHashMap, Object> regionizedData = new Reference2ReferenceOpenHashMap<>();
+
+ // tick data
+ private ConcreteRegionTickHandle tickHandle = new ConcreteRegionTickHandle(this, SchedulerThreadPool.DEADLINE_NOT_SET);
+
+ // queue data
-+ private final RegionisedTaskQueue.RegionTaskQueueData taskQueueData;
++ private final RegionizedTaskQueue.RegionTaskQueueData taskQueueData;
+
+ // chunk holder manager data
+ private final ChunkHolderManager.HolderManagerRegionData holderManagerRegionData = new ChunkHolderManager.HolderManagerRegionData();
+
-+ private TickRegionData(final ThreadedRegioniser.ThreadedRegion region) {
++ private TickRegionData(final ThreadedRegionizer.ThreadedRegion region) {
+ this.region = region;
+ this.world = region.regioniser.world;
-+ this.taskQueueData = new RegionisedTaskQueue.RegionTaskQueueData(this.world.taskQueueRegionData);
++ this.taskQueueData = new RegionizedTaskQueue.RegionTaskQueueData(this.world.taskQueueRegionData);
+ }
+
-+ public RegionisedTaskQueue.RegionTaskQueueData getTaskQueueData() {
++ public RegionizedTaskQueue.RegionTaskQueueData getTaskQueueData() {
+ return this.taskQueueData;
+ }
+
@@ -8272,74 +8265,74 @@ index 0000000000000000000000000000000000000000..f29f16ee5969dc1dfba512d7e5edb79d
+ return this.holderManagerRegionData;
+ }
+
-+ T getOrCreateRegionisedData(final RegionisedData regionisedData) {
-+ T ret = (T)this.regionisedData.get(regionisedData);
++ T getOrCreateRegionizedData(final RegionizedData regionizedData) {
++ T ret = (T)this.regionizedData.get(regionizedData);
+
+ if (ret != null) {
+ return ret;
+ }
+
-+ ret = regionisedData.createNewValue();
-+ this.regionisedData.put(regionisedData, ret);
++ ret = regionizedData.createNewValue();
++ this.regionizedData.put(regionizedData, ret);
+
+ return ret;
+ }
+
+ @Override
-+ public void split(final ThreadedRegioniser regioniser,
-+ final Long2ReferenceOpenHashMap> into,
-+ final ReferenceOpenHashSet> regions) {
++ public void split(final ThreadedRegionizer regioniser,
++ final Long2ReferenceOpenHashMap> into,
++ final ReferenceOpenHashSet> regions) {
+ final int shift = regioniser.sectionChunkShift;
+
+ // tick data
+ // note: here it is OK force us to access tick handle, as this region is owned (and thus not scheduled),
+ // and the other regions to split into are not scheduled yet.
-+ for (final ThreadedRegioniser.ThreadedRegion region : regions) {
++ for (final ThreadedRegionizer.ThreadedRegion region : regions) {
+ final TickRegionData data = region.getData();
+ data.tickHandle.copyDeadlineAndTickCount(this.tickHandle);
+ }
+
+ // generic regionised data
-+ for (final Iterator, Object>> dataIterator = this.regionisedData.reference2ReferenceEntrySet().fastIterator();
++ for (final Iterator, Object>> dataIterator = this.regionizedData.reference2ReferenceEntrySet().fastIterator();
+ dataIterator.hasNext();) {
-+ final Reference2ReferenceMap.Entry, Object> regionDataEntry = dataIterator.next();
-+ final RegionisedData> data = regionDataEntry.getKey();
++ final Reference2ReferenceMap.Entry, Object> regionDataEntry = dataIterator.next();
++ final RegionizedData> data = regionDataEntry.getKey();
+ final Object from = regionDataEntry.getValue();
+
+ final ReferenceOpenHashSet