From dd425fd8f0c79dd9a16c05d36f3dd47b9e7f1ac4 Mon Sep 17 00:00:00 2001 From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com> Date: Sun, 11 Jun 2023 22:25:25 +0300 Subject: [PATCH] Update patches --- patches/api/0001-Kaiiju-Configuration.patch | 4 +- patches/server/0001-Rebranding.patch | 39 ++++++------ patches/server/0002-Empty-configuration.patch | 20 +++---- .../0003-Region-format-configuration.patch | 6 +- .../0004-Add-Linear-region-format.patch | 60 +++++++++---------- .../0006-Send-null-entity-packets.patch | 8 +-- patches/server/0007-Alternate-Keepalive.patch | 10 ++-- patches/server/0010-Server-mod-name.patch | 4 +- .../server/0011-Crash-on-broken-symlink.patch | 28 ++++----- patches/server/0012-Toggle-void-trading.patch | 4 +- .../0014-Toggle-tick-level-when-empty.patch | 4 +- ...-redstone-on-top-of-trap-doors-early.patch | 14 ++--- ...cing-for-EntityLiving-hasLineOfSight.patch | 16 ++--- patches/server/0018-Add-SIMD-utilities.patch | 10 ++-- ...019-Toggle-shared-random-for-players.patch | 6 +- ...0020-Kick-player-instead-of-crashing.patch | 8 +-- ...ng-throttling-removal-to-prevent-lag.patch | 16 ++--- .../0023-Toggle-safe-teleportation.patch | 4 +- ...025-Vanilla-end-portal-teleportation.patch | 4 +- 19 files changed, 131 insertions(+), 134 deletions(-) diff --git a/patches/api/0001-Kaiiju-Configuration.patch b/patches/api/0001-Kaiiju-Configuration.patch index bd79c26..3ce20f4 100644 --- a/patches/api/0001-Kaiiju-Configuration.patch +++ b/patches/api/0001-Kaiiju-Configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Kaiiju Configuration diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index c230a10aff36f6b484d7e3963cbf8073f8676fb1..6b17fc3c788b745aa458eee82cace12e4728b6b5 100644 +index 5e427d5c5ce58927eb87b4f4f2466a27e70bc7c1..692927381102f57cf6adf3d0970c2e7b39987a42 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1971,6 +1971,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1994,6 +1994,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/server/0001-Rebranding.patch b/patches/server/0001-Rebranding.patch index c7b5ca7..ff7d701 100644 --- a/patches/server/0001-Rebranding.patch +++ b/patches/server/0001-Rebranding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebranding diff --git a/build.gradle.kts b/build.gradle.kts -index dd53b1ffaff8dbaea0cf21c489a90162a496a026..6dd416f65755ca0542e6661b8716672264120d59 100644 +index 59bc7ef3d26d3fb3bc7a0d79861acd68e5062fe6..bd014033272237b927179fe7b0621b513de5917a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { @@ -48,15 +48,14 @@ index 58dc84b7b3b04c2d0b00fc5fac5303d3378b3467..a128b1fabd4aadfe26a8375903c0451d metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 2ce29b6ccb9a3b520b8c1edf53aae2e9769ba252..f675fcae235a8c2722d9bba65d5e1292c5b76deb 100644 +index e2f704c115fd6e00960bb56bb0779f1100c89c17..95bc514df2022dde265b84490d3d0db002685024 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -19,10 +19,11 @@ import java.util.stream.StreamSupport; - +@@ -20,9 +20,11 @@ import java.util.stream.StreamSupport; public class PaperVersionFetcher implements VersionFetcher { private static final java.util.regex.Pattern VER_PATTERN = java.util.regex.Pattern.compile("^([0-9\\.]*)\\-.*R"); // R is an anchor, will always give '-R' at end -- private static final String GITHUB_BRANCH_NAME = "master"; -- private static final String DOWNLOAD_PAGE = "https://papermc.io/downloads"; + private static final String GITHUB_BRANCH_NAME = "master"; +- private static final String DOWNLOAD_PAGE = "https://papermc.io/downloads/paper"; + // Kaiiju start + private static final String DOWNLOAD_PAGE = "https://github.com/KaiijuMC/Kaiiju/releases"; + private static int distance = -2; public int distance() { return distance; } @@ -66,7 +65,7 @@ index 2ce29b6ccb9a3b520b8c1edf53aae2e9769ba252..f675fcae235a8c2722d9bba65d5e1292 @Override public long getCacheTime() { return 720000; -@@ -31,8 +32,8 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -31,8 +33,8 @@ public class PaperVersionFetcher implements VersionFetcher { @Nonnull @Override public Component getVersionMessage(@Nonnull String serverVersion) { @@ -77,7 +76,7 @@ index 2ce29b6ccb9a3b520b8c1edf53aae2e9769ba252..f675fcae235a8c2722d9bba65d5e1292 final Component history = getHistory(); return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; -@@ -45,7 +46,7 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -45,7 +47,7 @@ public class PaperVersionFetcher implements VersionFetcher { String result = matcher.group(); mcVer = result.substring(0, result.length() - 2); // strip 'R' anchor and trailing '-' } else { @@ -86,19 +85,19 @@ index 2ce29b6ccb9a3b520b8c1edf53aae2e9769ba252..f675fcae235a8c2722d9bba65d5e1292 org.bukkit.Bukkit.getLogger().warning("Pattern: " + VER_PATTERN.toString()); org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } -@@ -56,6 +57,8 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -56,6 +58,7 @@ public class PaperVersionFetcher implements VersionFetcher { private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) { int distance; -+ // Kaiiju start - disable jenkins/api checking -+ /* ++ /* // Kaiiju - disable jenkins/api checking try { int jenkinsBuild = Integer.parseInt(versionInfo); distance = fetchDistanceFromSiteApi(jenkinsBuild, getMinecraftVersion()); -@@ -63,6 +66,10 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -63,6 +66,11 @@ public class PaperVersionFetcher implements VersionFetcher { versionInfo = versionInfo.replace("\"", ""); distance = fetchDistanceFromGitHub(repo, branch, versionInfo); } ++ // Kaiiju start - disable jenkins/api checking + */ + versionInfo = versionInfo.replace("\"", ""); + distance = fetchDistanceFromGitHub(repo, branch, versionInfo); @@ -133,10 +132,10 @@ index abe37c7c3c6f5ab73afd738ec78f06d7e4d2ed96..52fc6bb99f6024273c7438d01314b576 stringbuilder.append(CrashReport.DATE_TIME_FORMATTER.format(ZonedDateTime.now())); stringbuilder.append("\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 61bac6fda2d2f4b3db8a3f7e3003f47c84d5c4cd..19d6b811dccdc2b7a22054d3fe72b3981a6aae3a 100644 +index 5b484004488b6b413bd78a1dc6dc1828c89ce046..68359868e6616167cb3ce8df3082d53100bd0ff0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -999,7 +999,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper @@ -451,10 +451,10 @@ index afb3d0fa48b7fd6d273361c6dc32764b5d35c356..a3b4b49ca8612a61bc2e7a1e2d2e942e this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 176f3acec268dad80cc90029edd88e7a0c3e8885..48f946243af24a9d4847f6a7a59449136cf6ee83 100644 +index c77eea06741c2e25b76e0645e315b41e3fcf2d33..696160c920415a5e0d19d7c49b172131c21503cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1067,6 +1067,7 @@ public final class CraftServer implements Server { +@@ -1090,6 +1090,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -462,7 +462,7 @@ index 176f3acec268dad80cc90029edd88e7a0c3e8885..48f946243af24a9d4847f6a7a5944913 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1082,6 +1083,7 @@ public final class CraftServer implements Server { +@@ -1105,6 +1106,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -470,7 +470,7 @@ index 176f3acec268dad80cc90029edd88e7a0c3e8885..48f946243af24a9d4847f6a7a5944913 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1097,6 +1099,7 @@ public final class CraftServer implements Server { +@@ -1120,6 +1122,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -478,7 +478,7 @@ index 176f3acec268dad80cc90029edd88e7a0c3e8885..48f946243af24a9d4847f6a7a5944913 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2857,6 +2860,13 @@ public final class CraftServer implements Server { +@@ -2872,6 +2875,13 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -493,7 +493,7 @@ index 176f3acec268dad80cc90029edd88e7a0c3e8885..48f946243af24a9d4847f6a7a5944913 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 4966a1e3dd35357a8ea6a7d2944c84c9c3e9058e..79a004dda72365afddb80fcd730828e351d7cce1 100644 +index 717e292040ed7779eb4b6c5fa26665d3df9024e7..d8ca697663ace353e88bfabc8997b58230d3d811 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -173,6 +173,14 @@ public class Main { diff --git a/patches/server/0003-Region-format-configuration.patch b/patches/server/0003-Region-format-configuration.patch index bf39b45..4ff70c5 100644 --- a/patches/server/0003-Region-format-configuration.patch +++ b/patches/server/0003-Region-format-configuration.patch @@ -85,10 +85,10 @@ index 0000000000000000000000000000000000000000..7164d9cd03186f0657783f83de3d6435 + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 19d6b811dccdc2b7a22054d3fe72b3981a6aae3a..a2cb5aae38e8666da8c8f3b5095d426c62371a3b 100644 +index 68359868e6616167cb3ce8df3082d53100bd0ff0..7adc0ad7d6212a67b49f503d70ba0de9cdbb2dbc 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -897,7 +897,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { @@ -552,7 +552,7 @@ index c8bc7db4c22f48047aa409f0bcff3ef8c4034781..5ad209fed6aef1992af0472ac0af0911 // Paper - rewrite chunk system this.tickingGenerated = new AtomicInteger(); //this.playerMap = new PlayerMap(); // Folia - region threading -@@ -317,7 +317,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -314,7 +314,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.lightEngine = new ThreadedLevelLightEngine(chunkProvider, this, this.level.dimensionType().hasSkyLight(), null, null); // Paper - rewrite chunk system this.distanceManager = new ChunkMap.ChunkDistanceManager(executor, mainThreadExecutor); this.overworldDataStorage = persistentStateManagerFactory; @@ -561,7 +561,7 @@ index c8bc7db4c22f48047aa409f0bcff3ef8c4034781..5ad209fed6aef1992af0472ac0af0911 this.setViewDistance(viewDistance); // Paper start this.dataRegionManager = new io.papermc.paper.chunk.SingleThreadChunkRegionManager(this.level, 2, (1.0 / 3.0), 1, 6, "Data", DataRegionData::new, DataRegionSectionData::new); -@@ -853,13 +853,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -850,13 +850,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start - chunk status cache "api" public ChunkStatus getChunkStatusOnDiskIfCached(ChunkPos chunkPos) { @@ -577,7 +577,7 @@ index c8bc7db4c22f48047aa409f0bcff3ef8c4034781..5ad209fed6aef1992af0472ac0af0911 if (regionFile == null || !regionFileCache.chunkExists(chunkPos)) { return null; -@@ -877,7 +877,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -874,7 +874,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void updateChunkStatusOnDisk(ChunkPos chunkPos, @Nullable CompoundTag compound) throws IOException { @@ -587,7 +587,7 @@ index c8bc7db4c22f48047aa409f0bcff3ef8c4034781..5ad209fed6aef1992af0472ac0af0911 regionFile.setStatus(chunkPos.x, chunkPos.z, ChunkSerializer.getStatus(compound)); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index acc8af33ad8534d812908b0feb9a1963ee2c64fb..b6b6ce1c1bda836cc7ea37bcc5388e8295bf2a71 100644 +index b126435b07572e7b8f41647a0179164b680e9e64..19fb8ca8a6f699ce596103070db726fcb427865e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -426,8 +426,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -601,7 +601,7 @@ index acc8af33ad8534d812908b0feb9a1963ee2c64fb..b6b6ce1c1bda836cc7ea37bcc5388e82 } protected void write(ChunkPos pos, net.minecraft.nbt.CompoundTag nbt) throws IOException { -@@ -633,7 +633,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -666,7 +666,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit end boolean flag2 = minecraftserver.forceSynchronousWrites(); DataFixer datafixer = minecraftserver.getFixerUpper(); @@ -660,7 +660,7 @@ index e0bfeebeaac1aaea64bc07cdfdf7790e3e43ca7b..ac35e7eb8cb5f19391a18eb9d6b5ba26 try { for (int i1 = 0; i1 < 32; ++i1) { diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -index 9c56304476b4fc841b5d7694232617586ebd8e84..0868e164e4e2516c3f61387798adee914bb84131 100644 +index 5150d447c9dc2f539446749c8bee102050bab4ed..187ff795192c7eb56dffafa1ff6fa3068ac341c3 100644 --- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java +++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java @@ -59,8 +59,8 @@ public class PoiManager extends SectionStorage { @@ -675,7 +675,7 @@ index 9c56304476b4fc841b5d7694232617586ebd8e84..0868e164e4e2516c3f61387798adee91 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java -index 29facbdcbad17ce38bf785f7f3f8346d81cbc32f..617389f3304b3d8f6ad9a80474a29bf22e86a331 100644 +index 8ebecb588058da174b0e0e19e54fcddfeeca1422..1d880f27dd147da683fc30ed6f1bfa43ecdb7d93 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java @@ -37,11 +37,11 @@ public class ChunkStorage implements AutoCloseable { @@ -754,7 +754,7 @@ index dcfe090c269d4cbcc2eb1b6f85392848bb34656c..d42c320179ae055b8675d1ce6ce1788e try (DataInputStream out = new DataInputStream(new java.io.BufferedInputStream(new InflaterInputStream(Files.newInputStream(file))))) { return NbtIo.read((java.io.DataInput) out); diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e788c277a6 100644 +index 81554c321a78258ff78da3801f00d0fb90b9e113..b35a6a7daf768af3bc453fe18deec823f4b63a3a 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java @@ -22,9 +22,13 @@ public class RegionFileStorage implements AutoCloseable { @@ -769,10 +769,10 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 + public final dev.kaiijumc.kaiiju.region.RegionFileFormat format; + public final int linearCompression; + // Kaiiju end - private final boolean isChunkData; // Paper -@@ -57,11 +61,15 @@ public class RegionFileStorage implements AutoCloseable { + // Paper start - cache regionfile does not exist state +@@ -56,11 +60,15 @@ public class RegionFileStorage implements AutoCloseable { } // Paper end - cache regionfile does not exist state @@ -792,18 +792,18 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 // Paper end - add isChunkData param this.folder = directory; @@ -71,7 +79,7 @@ public class RegionFileStorage implements AutoCloseable { - // Paper start - public static @Nullable ChunkPos getRegionFileCoordinates(Path file) { + @Nullable + public static ChunkPos getRegionFileCoordinates(Path file) { String fileName = file.getFileName().toString(); - if (!fileName.startsWith("r.") || !fileName.endsWith(".mca")) { + if (!fileName.startsWith("r.") || !fileName.endsWith(".mca") || !fileName.endsWith(".linear")) { // Kaiiju return null; } -@@ -91,29 +99,29 @@ public class RegionFileStorage implements AutoCloseable { - } - } +@@ -93,29 +101,29 @@ public class RegionFileStorage implements AutoCloseable { + // Paper end + // Paper start - public synchronized RegionFile getRegionFileIfLoaded(ChunkPos chunkcoordintpair) { + public synchronized dev.kaiijumc.kaiiju.region.AbstractRegionFile getRegionFileIfLoaded(ChunkPos chunkcoordintpair) { // Kaiiju return this.regionCache.getAndMoveToFirst(ChunkPos.asLong(chunkcoordintpair.getRegionX(), chunkcoordintpair.getRegionZ())); @@ -836,7 +836,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 } // Paper end return regionfile; -@@ -124,28 +132,49 @@ public class RegionFileStorage implements AutoCloseable { +@@ -126,28 +134,49 @@ public class RegionFileStorage implements AutoCloseable { } // Paper end - cache regionfile does not exist state if (this.regionCache.size() >= io.papermc.paper.configuration.GlobalConfiguration.get().misc.regionFileCacheSize) { // Paper - configurable @@ -893,7 +893,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 } // Paper end return regionfile1; -@@ -173,7 +202,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -175,7 +204,7 @@ public class RegionFileStorage implements AutoCloseable { } @@ -902,7 +902,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 synchronized (regionfile) { try (DataInputStream datainputstream = regionfile.getChunkDataInputStream(chunkCoordinate)) { CompoundTag oversizedData = regionfile.getOversizedData(chunkCoordinate.x, chunkCoordinate.z); -@@ -220,14 +249,14 @@ public class RegionFileStorage implements AutoCloseable { +@@ -222,14 +251,14 @@ public class RegionFileStorage implements AutoCloseable { @Nullable public CompoundTag read(ChunkPos pos) throws IOException { // CraftBukkit start - SPIGOT-5680: There's no good reason to preemptively create files on read, save that for writing @@ -919,7 +919,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 // We add the regionfile parameter to avoid the potential deadlock (on fileLock) if we went back to obtain a regionfile // if we decide to re-read // Paper end -@@ -237,7 +266,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -239,7 +268,7 @@ public class RegionFileStorage implements AutoCloseable { // Paper start if (regionfile.isOversized(pos.x, pos.z)) { @@ -928,7 +928,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 return readOversizedChunk(regionfile, pos); } // Paper end -@@ -251,12 +280,12 @@ public class RegionFileStorage implements AutoCloseable { +@@ -253,12 +282,12 @@ public class RegionFileStorage implements AutoCloseable { if (this.isChunkData) { ChunkPos chunkPos = ChunkSerializer.getChunkCoordinate(nbttagcompound); if (!chunkPos.equals(pos)) { @@ -944,7 +944,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 return null; } } -@@ -290,13 +319,13 @@ public class RegionFileStorage implements AutoCloseable { +@@ -292,13 +321,13 @@ public class RegionFileStorage implements AutoCloseable { return nbttagcompound; } finally { // Paper start @@ -960,7 +960,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 if (regionfile == null) { return; } -@@ -326,7 +355,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -328,7 +357,7 @@ public class RegionFileStorage implements AutoCloseable { } protected void write(ChunkPos pos, @Nullable CompoundTag nbt) throws IOException { @@ -969,7 +969,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 if (nbt == null && regionfile == null) { return; } -@@ -376,7 +405,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -378,7 +407,7 @@ public class RegionFileStorage implements AutoCloseable { } // Paper end } finally { // Paper start @@ -978,7 +978,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 } // Paper end } -@@ -385,7 +414,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -387,7 +416,7 @@ public class RegionFileStorage implements AutoCloseable { ObjectIterator objectiterator = this.regionCache.values().iterator(); while (objectiterator.hasNext()) { @@ -987,7 +987,7 @@ index 9633b01d2d961fd1403e353484d336376ef009eb..150b1cde868c4220aeeb33ae333e96e7 try { regionfile.close(); -@@ -401,7 +430,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -403,7 +432,7 @@ public class RegionFileStorage implements AutoCloseable { ObjectIterator objectiterator = this.regionCache.values().iterator(); while (objectiterator.hasNext()) { @@ -1012,10 +1012,10 @@ index 5561b8499a0503b850974b1dc309edfb80219549..9394d191c56aab78e63fd3f283efedd6 this.factory = factory; this.fixerUpper = dataFixer; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 2ead9af36c4d41c61b68a960ff17e25894efeb2a..cba3411386b7a9f596017d021d08f30c78f0c52b 100644 +index 5e7f8f4cc24bc14e1a2639b60c33a04d8c0ccd85..f0418dc8ca4ec8f1e767cc986f292b6255f2b47f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -554,7 +554,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -562,7 +562,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { return true; } diff --git a/patches/server/0006-Send-null-entity-packets.patch b/patches/server/0006-Send-null-entity-packets.patch index 71ce899..6bd89e1 100644 --- a/patches/server/0006-Send-null-entity-packets.patch +++ b/patches/server/0006-Send-null-entity-packets.patch @@ -21,10 +21,10 @@ index 7c6d43d8a360530344ef296f4477750c8a298607..ab08e11f13921163b8ff1ff51ff9e9b8 } } diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index b7fd8e70413c38923d0719aff803449e392383ac..fc778cf828c42065a7928d2f920fc1442aa4d503 100644 +index 6670e657e08e130f7e0368f418379fd1ece00cdf..5558d87ef182f82be7877455dd027082c6a80632 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -205,6 +205,11 @@ public class ServerEntity { +@@ -201,6 +201,11 @@ public class ServerEntity { flag4 = true; flag5 = true; } @@ -36,8 +36,8 @@ index b7fd8e70413c38923d0719aff803449e392383ac..fc778cf828c42065a7928d2f920fc144 } if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) { -@@ -279,6 +284,20 @@ public class ServerEntity { - })); +@@ -273,6 +278,20 @@ public class ServerEntity { + }); } + // Kaiiju start - Don't send null move entity packets diff --git a/patches/server/0007-Alternate-Keepalive.patch b/patches/server/0007-Alternate-Keepalive.patch index 9eba312..9e2f205 100644 --- a/patches/server/0007-Alternate-Keepalive.patch +++ b/patches/server/0007-Alternate-Keepalive.patch @@ -22,10 +22,10 @@ index ab08e11f13921163b8ff1ff51ff9e9b86d2b47c7..b42a3466f145a92608c8746fd4beb529 } } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4963e87adf11c9df90f0dd4b60d360a137c07bc9..5f73e794a248a4d11b58b169831622ca1f61aac6 100644 +index 6f88fbd45217dbbe67f2469040b7c5f621e185c6..43b7dfd10cb5db59f6b58a04f428863767a209e2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -261,6 +261,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -263,6 +263,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic private long keepAliveTime = Util.getMillis(); private boolean keepAlivePending; private long keepAliveChallenge; @@ -33,7 +33,7 @@ index 4963e87adf11c9df90f0dd4b60d360a137c07bc9..5f73e794a248a4d11b58b169831622ca // CraftBukkit start - multithreaded fields private final AtomicInteger chatSpamTickCount = new AtomicInteger(); private final java.util.concurrent.atomic.AtomicInteger tabSpamLimiter = new java.util.concurrent.atomic.AtomicInteger(); // Paper - configurable tab spam limits -@@ -352,6 +353,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -355,6 +356,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -54,7 +54,7 @@ index 4963e87adf11c9df90f0dd4b60d360a137c07bc9..5f73e794a248a4d11b58b169831622ca if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3534,6 +3549,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3511,6 +3526,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -68,6 +68,6 @@ index 4963e87adf11c9df90f0dd4b60d360a137c07bc9..5f73e794a248a4d11b58b169831622ca + } + } else + // Kaiiju end - //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread + //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); diff --git a/patches/server/0010-Server-mod-name.patch b/patches/server/0010-Server-mod-name.patch index 1da5645..94941fd 100644 --- a/patches/server/0010-Server-mod-name.patch +++ b/patches/server/0010-Server-mod-name.patch @@ -19,10 +19,10 @@ index 6d0e1edfb7d3c020f70f6a194f16e836b462c4de..9fb33b35b4d6842ca8597f77a4116e39 } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a2cb5aae38e8666da8c8f3b5095d426c62371a3b..2ee67890df46c8eb23c387519721c88b762599ce 100644 +index 7adc0ad7d6212a67b49f503d70ba0de9cdbb2dbc..c30026db7300a92a9fcb145ca3741ba7e3528a63 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1815,7 +1815,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { @@ -54,7 +54,7 @@ index 5ad209fed6aef1992af0472ac0af0911d178a260..0ef89e0bc214364fd904c3e5022c660b // Paper - rewrite chunk system this.tickingGenerated = new AtomicInteger(); //this.playerMap = new PlayerMap(); // Folia - region threading -@@ -317,7 +317,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -314,7 +314,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.lightEngine = new ThreadedLevelLightEngine(chunkProvider, this, this.level.dimensionType().hasSkyLight(), null, null); // Paper - rewrite chunk system this.distanceManager = new ChunkMap.ChunkDistanceManager(executor, mainThreadExecutor); this.overworldDataStorage = persistentStateManagerFactory; @@ -64,7 +64,7 @@ index 5ad209fed6aef1992af0472ac0af0911d178a260..0ef89e0bc214364fd904c3e5022c660b // Paper start this.dataRegionManager = new io.papermc.paper.chunk.SingleThreadChunkRegionManager(this.level, 2, (1.0 / 3.0), 1, 6, "Data", DataRegionData::new, DataRegionSectionData::new); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b6b6ce1c1bda836cc7ea37bcc5388e8295bf2a71..c9cfbde14bfde9fa24835ff29b7aa802c2fd1c87 100644 +index 19fb8ca8a6f699ce596103070db726fcb427865e..44c6d7484a87523e635492053b326f819b8f71c5 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -426,8 +426,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -78,7 +78,7 @@ index b6b6ce1c1bda836cc7ea37bcc5388e8295bf2a71..c9cfbde14bfde9fa24835ff29b7aa802 } protected void write(ChunkPos pos, net.minecraft.nbt.CompoundTag nbt) throws IOException { -@@ -633,7 +633,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -666,7 +666,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit end boolean flag2 = minecraftserver.forceSynchronousWrites(); DataFixer datafixer = minecraftserver.getFixerUpper(); @@ -102,7 +102,7 @@ index ac35e7eb8cb5f19391a18eb9d6b5ba26769ce2f6..a9c6ca7c621bb2431bcf0ae879b192f7 } diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -index 0868e164e4e2516c3f61387798adee914bb84131..52381c34920f442333a72df637d021fa2627b0c4 100644 +index 187ff795192c7eb56dffafa1ff6fa3068ac341c3..b9cf3b9f2cdb554d267c6dc3436e011c7e607228 100644 --- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java +++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java @@ -59,8 +59,8 @@ public class PoiManager extends SectionStorage { @@ -117,7 +117,7 @@ index 0868e164e4e2516c3f61387798adee914bb84131..52381c34920f442333a72df637d021fa } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java -index 617389f3304b3d8f6ad9a80474a29bf22e86a331..763b3e1c44f109d2fbbf1314f900c265d3b24e06 100644 +index 1d880f27dd147da683fc30ed6f1bfa43ecdb7d93..41598adf6d49a44bcaadfff3797221460a6d93ba 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java @@ -37,11 +37,11 @@ public class ChunkStorage implements AutoCloseable { @@ -135,7 +135,7 @@ index 617389f3304b3d8f6ad9a80474a29bf22e86a331..763b3e1c44f109d2fbbf1314f900c265 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index 150b1cde868c4220aeeb33ae333e96e788c277a6..e490450419e5739f76093f2ea62f38622490dec2 100644 +index b35a6a7daf768af3bc453fe18deec823f4b63a3a..8409293b3f329715d6dff3d455c6a484d5b133ee 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java @@ -20,6 +20,7 @@ import net.minecraft.world.level.ChunkPos; @@ -152,9 +152,9 @@ index 150b1cde868c4220aeeb33ae333e96e788c277a6..e490450419e5739f76093f2ea62f3862 public final int linearCompression; + public final boolean linearCrashOnBrokenSymlink; // Kaiiju end - private final boolean isChunkData; // Paper -@@ -61,14 +63,15 @@ public class RegionFileStorage implements AutoCloseable { + +@@ -60,14 +62,15 @@ public class RegionFileStorage implements AutoCloseable { } // Paper end - cache regionfile does not exist state @@ -173,7 +173,7 @@ index 150b1cde868c4220aeeb33ae333e96e788c277a6..e490450419e5739f76093f2ea62f3862 // Kaiiju end this.isChunkData = isChunkData; // Paper end - add isChunkData param -@@ -109,6 +112,20 @@ public class RegionFileStorage implements AutoCloseable { +@@ -111,6 +114,20 @@ public class RegionFileStorage implements AutoCloseable { return regionfile != null ? regionfile.hasChunk(pos) : false; } @@ -194,7 +194,7 @@ index 150b1cde868c4220aeeb33ae333e96e788c277a6..e490450419e5739f76093f2ea62f3862 public synchronized dev.kaiijumc.kaiiju.region.AbstractRegionFile getRegionFile(ChunkPos chunkcoordintpair, boolean existingOnly) throws IOException { // CraftBukkit // Kaiiju return this.getRegionFile(chunkcoordintpair, existingOnly, false); } -@@ -144,6 +161,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -146,6 +163,7 @@ public class RegionFileStorage implements AutoCloseable { if (existingOnly) { Path anvil = path.resolve("r." + j + "." + chunkcoordintpair.getRegionZ() + ".mca"); Path linear = path.resolve("r." + j + "." + chunkcoordintpair.getRegionZ() + ".linear"); @@ -202,7 +202,7 @@ index 150b1cde868c4220aeeb33ae333e96e788c277a6..e490450419e5739f76093f2ea62f3862 if (java.nio.file.Files.exists(anvil)) path1 = anvil; else if (java.nio.file.Files.exists(linear)) path1 = linear; else { -@@ -159,6 +177,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -161,6 +179,7 @@ public class RegionFileStorage implements AutoCloseable { }; path1 = path.resolve("r." + j + "." + chunkcoordintpair.getRegionZ() + "." + extension); // Kaiiju end diff --git a/patches/server/0012-Toggle-void-trading.patch b/patches/server/0012-Toggle-void-trading.patch index e799993..30baa91 100644 --- a/patches/server/0012-Toggle-void-trading.patch +++ b/patches/server/0012-Toggle-void-trading.patch @@ -23,10 +23,10 @@ index 6f785078ca5123eb06913f95183475584116ebf5..a2eaa6d58ff7cbb88716d26996d2842c } } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c9cfbde14bfde9fa24835ff29b7aa802c2fd1c87..9ad16476bedc9ac3d44cd3fbecbf9cf326d6f1be 100644 +index 44c6d7484a87523e635492053b326f819b8f71c5..15087f575427ecdeee105060575fb6b6741f4586 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2825,7 +2825,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2838,7 +2838,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start diff --git a/patches/server/0014-Toggle-tick-level-when-empty.patch b/patches/server/0014-Toggle-tick-level-when-empty.patch index bb99363..c91de76 100644 --- a/patches/server/0014-Toggle-tick-level-when-empty.patch +++ b/patches/server/0014-Toggle-tick-level-when-empty.patch @@ -22,10 +22,10 @@ index 01f194cfbd6f0e371f410c94aaecf1595acb22d8..657a56a8cfa134943f8503e413b4eaf5 } } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9ad16476bedc9ac3d44cd3fbecbf9cf326d6f1be..cbb7dce873f0aa1ae7f85a6f0985bbe8d66a54ae 100644 +index 15087f575427ecdeee105060575fb6b6741f4586..a4d9c586f096a885b33840e8c1a7406821afb4df 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -744,7 +744,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -798,7 +798,7 @@ public class ServerLevel extends Level implements WorldGenLevel { timings.doSounds.stopTiming(); // Spigot regionizedWorldData.setHandlingTick(false); // Folia - regionised ticking gameprofilerfiller.pop(); diff --git a/patches/server/0015-Toggle-break-redstone-on-top-of-trap-doors-early.patch b/patches/server/0015-Toggle-break-redstone-on-top-of-trap-doors-early.patch index aa95071..0d17284 100644 --- a/patches/server/0015-Toggle-break-redstone-on-top-of-trap-doors-early.patch +++ b/patches/server/0015-Toggle-break-redstone-on-top-of-trap-doors-early.patch @@ -24,22 +24,22 @@ index 657a56a8cfa134943f8503e413b4eaf592a83854..ab56f61e9f77f743caabbd49d1e028e8 } } diff --git a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java -index 4bddb91e289bbfbc75d532e63f935d585e41fc43..f8dba24931bcfa28bde9cdec0201b591f29f9e09 100644 +index b9e3c9cd709d42bced85436720ccc7b9c7e49552..5e6d64408a5da3f337d32bb8ac5ac2532b04490c 100644 --- a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java -@@ -126,6 +126,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW +@@ -125,6 +125,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW } // CraftBukkit end - boolean open = (Boolean) state.getValue(TrapDoorBlock.OPEN) != flag1; // Folia - break redstone on trapdoors early + boolean open = (Boolean) state.getValue(TrapDoorBlock.OPEN) != flag1; // Paper - break redstone on trapdoors early + if (world.kaiijuConfig.breakRedstoneOnTopOfTrapDoorsEarly) { // Kaiiju - trigger break redstone on trapdoors early - // Folia start - break redstone on trapdoors early + // Paper start - break redstone on trapdoors early // note: this must run before any state for this block/its neighborus are written to the world // we allow the redstone event to fire so that plugins can block -@@ -144,6 +145,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW +@@ -143,6 +144,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW } } - // Folia end - break redstone on trapdoors early + // Paper end - break redstone on trapdoors early + } // Kaiiju - trigger break redstone on trapdoors early - if (open) { // Folia - break redstone on trapdoors early + if (open) { // Paper - break redstone on trapdoors early state = (BlockState) state.setValue(TrapDoorBlock.OPEN, flag1); this.playSound((Player) null, world, pos, flag1); diff --git a/patches/server/0016-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0016-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index 57da356..04b3804 100644 --- a/patches/server/0016-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/server/0016-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -7,23 +7,23 @@ This has been benchmarked on a huge gold farm. Resulting in significative performance improvements. diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 49716190b784339b80c8a3ac8e5b13bc450284ee..440735caab3be903546638a3d01903720225c553 100644 +index 5b5473ff1a87b5f82d9179e54ae448120eb763a3..51df621afb364dd5d0c471436d697296755e996f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3612,7 +3612,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3660,7 +3660,7 @@ public abstract class LivingEntity extends Entity implements Attackable { Vec3 vec3d1 = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); // Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists -- return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level.clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; // Paper - use distanceToSqr -+ return !(vec3d1.distanceToSqr(vec3d) > 128D * 128D) && this.level.rayTraceDirect(vec3d, vec3d1, net.minecraft.world.phys.shapes.CollisionContext.of(this)) == net.minecraft.world.phys.BlockHitResult.Type.MISS; // Paper - use distanceToSqr // Kaiiju - Pufferfish - Strip raytracing +- return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; ++ return !(vec3d1.distanceToSqr(vec3d) > 128D * 128D) && this.level().rayTraceDirect(vec3d, vec3d1, net.minecraft.world.phys.shapes.CollisionContext.of(this)) == net.minecraft.world.phys.BlockHitResult.Type.MISS; // Paper - use distanceToSqr // Kaiiju - Pufferfish - Strip raytracing } } diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index 2ee9e8e3c1a28c1823de8e1fe421cc1f3e72f384..d99d77536e4d49b53575ae30614c0ab5fdbd3f73 100644 +index 0e8746759752b692668886370181aa5db1fd0bb0..5e2f5e9c21009a71f671955df7a4135ce5cf5b08 100644 --- a/src/main/java/net/minecraft/world/level/BlockGetter.java +++ b/src/main/java/net/minecraft/world/level/BlockGetter.java -@@ -73,6 +73,17 @@ public interface BlockGetter extends LevelHeightAccessor { +@@ -68,6 +68,17 @@ public interface BlockGetter extends LevelHeightAccessor { }); } @@ -42,10 +42,10 @@ index 2ee9e8e3c1a28c1823de8e1fe421cc1f3e72f384..d99d77536e4d49b53575ae30614c0ab5 default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) { // Paper start - Prevent raytrace from loading chunks diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a3b4b49ca8612a61bc2e7a1e2d2e942e7ebe1883..933373aaa7b1fa07862e2146e079abe91d126263 100644 +index fb71843793e699b2ccfaa3b7e4c2bb7d4826a706..42727a50ae11cd4d4aa65eb57638bfb164f1e4ac 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -433,6 +433,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -432,6 +432,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } diff --git a/patches/server/0018-Add-SIMD-utilities.patch b/patches/server/0018-Add-SIMD-utilities.patch index e9d2fb1..a79dc19 100644 --- a/patches/server/0018-Add-SIMD-utilities.patch +++ b/patches/server/0018-Add-SIMD-utilities.patch @@ -6,21 +6,19 @@ Subject: [PATCH] Add SIMD utilities Patch from Pufferfish diff --git a/build.gradle.kts b/build.gradle.kts -index 4686019a152114e63e997ee103fc8424b24b4581..0851203a4bed670242afc5ac86562075f32693ab 100644 +index cfbacf7dd8e1b7b5c5899affde6890f53c8aaf15..e611fb1c25b8287b334c078f93d0fa2f32f5cb39 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -58,6 +58,14 @@ dependencies { +@@ -58,6 +58,12 @@ dependencies { } - val craftbukkitPackageVersion = "1_19_R3" // Paper -+ + val craftbukkitPackageVersion = "1_20_R1" // Paper +// Kaiiju start - Pufferfish - SIMD utilities +tasks.withType { + val compilerArgs = options.compilerArgs + compilerArgs.add("--add-modules=jdk.incubator.vector") +} +// Kaiiju end -+ tasks.jar { archiveClassifier.set("dev") @@ -130,7 +128,7 @@ index 0000000000000000000000000000000000000000..758fa97304a32bf17935c86dc03cbf50 +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 426777730f77664c69bd0a084a9323d767ebc0ad..5272164b18c2ca999c4744aede32f4a4c72525ed 100644 +index ee75d828174ac1c84931bc087472fefd76073bdb..991e4c19763a34a6fead88363e007c2d11aad836 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -225,6 +225,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0019-Toggle-shared-random-for-players.patch b/patches/server/0019-Toggle-shared-random-for-players.patch index bc5fdd2..bf1f6c5 100644 --- a/patches/server/0019-Toggle-shared-random-for-players.patch +++ b/patches/server/0019-Toggle-shared-random-for-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle shared random for players diff --git a/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java b/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java -index f1fe094c4b4c5932ba656165bb1671020c1277a5..d3f6e5c873255d00160cf792898204a82a0ec5e8 100644 +index 9fb33b35b4d6842ca8597f77a4116e3983ebfbcb..51a49fc98147eef7bb50e7a2c71e0e8ed75e3dd6 100644 --- a/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java +++ b/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java @@ -208,8 +208,10 @@ public class KaiijuConfig { @@ -20,10 +20,10 @@ index f1fe094c4b4c5932ba656165bb1671020c1277a5..d3f6e5c873255d00160cf792898204a8 } } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 08e61a8940c142c68ed93359084ea46c7fd52310..f22b4ad629845462656834abb3e28d2c2588ace6 100644 +index e8c2d4f647b01dfaebccd5a2fa330594bbbcb74f..532cb2aab7617319ffa0606b75b62f2414eabdb3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -560,6 +560,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -566,6 +566,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; diff --git a/patches/server/0020-Kick-player-instead-of-crashing.patch b/patches/server/0020-Kick-player-instead-of-crashing.patch index 97f8f46..71f0e41 100644 --- a/patches/server/0020-Kick-player-instead-of-crashing.patch +++ b/patches/server/0020-Kick-player-instead-of-crashing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Kick player instead of crashing 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 d52a522fe6d5c4375862691fa32450bc458ca38b..648aff395887d2f13846b1bbe59f4115206ad7cf 100644 +index 5788fc92976c7704bb48dde91b5c9d403abc5cf0..9e7a93c862c8c237a706258b3a3b3d00ddec47e8 100644 --- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java +++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java -@@ -486,7 +486,12 @@ public class RegionizedPlayerChunkLoader { +@@ -485,7 +485,12 @@ public class RegionizedPlayerChunkLoader { new ChunkPos(chunkX, chunkZ), new MutableObject<>(), false, true); // unloaded, loaded return; } @@ -23,10 +23,10 @@ index d52a522fe6d5c4375862691fa32450bc458ca38b..648aff395887d2f13846b1bbe59f4115 private void sendUnloadChunk(final int chunkX, final int chunkZ) { diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 5ccfc95f51a899b1cd3f34af5e5bb05d902016b8..9c20bd199454b6032a6a90676d12526168b8dd0b 100644 +index 18f438eec03cabc1614ab807081cff6b18fb09a8..df3869d7aee9c1c880319251b40879c8802c72b4 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java -@@ -133,7 +133,12 @@ public class ChunkHolder { +@@ -129,7 +129,12 @@ public class ChunkHolder { public void addPlayer(ServerPlayer player) { if (!this.playersSentChunkTo.add(player)) { diff --git a/patches/server/0022-Entity-ticking-throttling-removal-to-prevent-lag.patch b/patches/server/0022-Entity-ticking-throttling-removal-to-prevent-lag.patch index 5f155ae..a2f1c70 100644 --- a/patches/server/0022-Entity-ticking-throttling-removal-to-prevent-lag.patch +++ b/patches/server/0022-Entity-ticking-throttling-removal-to-prevent-lag.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity ticking throttling & removal to prevent lag. diff --git a/build.gradle.kts b/build.gradle.kts -index 0851203a4bed670242afc5ac86562075f32693ab..e9b07e51aa5cd8a88b2cb3a2942247f06882d117 100644 +index e611fb1c25b8287b334c078f93d0fa2f32f5cb39..8340143a97c93c651c1ae424d3969729694ae981 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { @@ -291,7 +291,7 @@ index 6fac162e0ec057af9f3336314d5663554cef0490..efecc7e132c67577577c99bfcf98e2b4 level.kaiijuConfig.reload(); } diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java -index 5f609782fceda0fdc856123ca8d40d3f8b13b10b..cd4be18da781787fd7955b64668aa43136df9f34 100644 +index 65c4e158d81ac5c5788cf4dcb379061aebd23dcd..223bf699d76e53b131b47256df288db60141fd9e 100644 --- a/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java @@ -296,6 +296,7 @@ public final class RegionizedWorldData { @@ -303,7 +303,7 @@ index 5f609782fceda0fdc856123ca8d40d3f8b13b10b..cd4be18da781787fd7955b64668aa431 // block ticking private final ObjectLinkedOpenHashSet blockEvents = new ObjectLinkedOpenHashSet<>(); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 5272164b18c2ca999c4744aede32f4a4c72525ed..4cf41c7a27527e9a3c2fb8b530209f960b3529b1 100644 +index 991e4c19763a34a6fead88363e007c2d11aad836..24a2d3f496727790f63cb66a2534d4423555fa3c 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -225,6 +225,12 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -320,10 +320,10 @@ index 5272164b18c2ca999c4744aede32f4a4c72525ed..4cf41c7a27527e9a3c2fb8b530209f96 dev.kaiijumc.kaiiju.KaiijuConfig.registerCommands(); // Kaiiju end diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cbb7dce873f0aa1ae7f85a6f0985bbe8d66a54ae..ee6db05a09a6fc6662a30f80791948f48ccefb66 100644 +index a4d9c586f096a885b33840e8c1a7406821afb4df..240cb8ebc611cae345f6f4a9d22ab8796f28d591 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -768,6 +768,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -822,6 +822,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Folia end - region threading } @@ -331,7 +331,7 @@ index cbb7dce873f0aa1ae7f85a6f0985bbe8d66a54ae..ee6db05a09a6fc6662a30f80791948f4 org.spigotmc.ActivationRange.activateEntities(this); // Spigot timings.entityTick.startTiming(); // Spigot regionizedWorldData.forEachTickingEntity((entity) -> { // Folia - regionised ticking -@@ -790,6 +791,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -844,6 +845,13 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -345,7 +345,7 @@ index cbb7dce873f0aa1ae7f85a6f0985bbe8d66a54ae..ee6db05a09a6fc6662a30f80791948f4 gameprofilerfiller.push("tick"); this.guardEntityTick(this::tickNonPassenger, entity); gameprofilerfiller.pop(); -@@ -797,6 +805,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -851,6 +859,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -354,7 +354,7 @@ index cbb7dce873f0aa1ae7f85a6f0985bbe8d66a54ae..ee6db05a09a6fc6662a30f80791948f4 timings.tickEntities.stopTiming(); // Spigot gameprofilerfiller.pop(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 79a004dda72365afddb80fcd730828e351d7cce1..919e6856a966240c7dd4849dd947fb7c1136e643 100644 +index d8ca697663ace353e88bfabc8997b58230d3d811..c3bb81238afeafa3d59147f21c60022052142977 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -179,6 +179,11 @@ public class Main { diff --git a/patches/server/0023-Toggle-safe-teleportation.patch b/patches/server/0023-Toggle-safe-teleportation.patch index d6a63b6..bee94a9 100644 --- a/patches/server/0023-Toggle-safe-teleportation.patch +++ b/patches/server/0023-Toggle-safe-teleportation.patch @@ -24,10 +24,10 @@ index 2cc57d5a759ac3edcd2c3724f7f7b022b3e42f0f..915ac0ab2fc4ee2cdeeaac821a28ed86 } } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f22b4ad629845462656834abb3e28d2c2588ace6..7af60ebb91fb39374355c64396b6adc48b2a5f89 100644 +index 532cb2aab7617319ffa0606b75b62f2414eabdb3..02a4dbaa8e316a7966cd02c54ea7eda049a78460 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3826,6 +3826,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3952,6 +3952,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { protected boolean tryEndPortal() { io.papermc.paper.util.TickThread.ensureTickThread(this, "Cannot portal entity async"); diff --git a/patches/server/0025-Vanilla-end-portal-teleportation.patch b/patches/server/0025-Vanilla-end-portal-teleportation.patch index 99100a3..7d3599f 100644 --- a/patches/server/0025-Vanilla-end-portal-teleportation.patch +++ b/patches/server/0025-Vanilla-end-portal-teleportation.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Vanilla end portal teleportation diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7af60ebb91fb39374355c64396b6adc48b2a5f89..4e442c605c281900dda18088cade2a719bf6e4ee 100644 +index 02a4dbaa8e316a7966cd02c54ea7eda049a78460..8863a9a75d703f4eb1f5c7d1a2779a8ea9951d14 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3914,10 +3914,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4040,10 +4040,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { (chunks) -> { ServerLevel.makeObsidianPlatform(destination, null, targetPos);