diff --git a/.gitignore b/.gitignore index 8d2e783..4af002e 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ run/ gale-server gale-api +paper-api-generator !gradle/wrapper/gradle-wrapper.jar diff --git a/build.gradle.kts b/build.gradle.kts index 8a8252a..f42bfdd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -78,6 +78,13 @@ paperweight { serverPatchDir.set(layout.projectDirectory.dir("patches/server")) serverOutputDir.set(layout.projectDirectory.dir("gale-server")) // Gale - build changes } + + patchTasks.register("generatedApi") { + isBareDirectory = true + upstreamDirPath = "paper-api-generator/generated" + patchDir = layout.projectDirectory.dir("patches/generated-api") + outputDir = layout.projectDirectory.dir("paper-api-generator/generated") + } } } diff --git a/gradle.properties b/gradle.properties index c795ec2..c437660 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=org.galemc.gale version=1.20.4-R0.1-SNAPSHOT mcVersion=1.20.4 -paperRef=07b956e3a30d9cd192111829b59bdf4372f128b1 +paperRef=1c956abfbc3eac650ff9df99cd5918a8afba331b org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/server/0003-Hide-irrelevant-compilation-warnings.patch b/patches/server/0003-Hide-irrelevant-compilation-warnings.patch index 477b269..d5964cd 100644 --- a/patches/server/0003-Hide-irrelevant-compilation-warnings.patch +++ b/patches/server/0003-Hide-irrelevant-compilation-warnings.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/build.gradle.kts b/build.gradle.kts -index 331aae3eb16403874890d539fc5093a00c4d73f0..4ed622fdcd1c87fb81e5671886406b55936835e9 100644 +index 7d00abc41857d008c863f4350d97a0e018241690..3c30e911885dcbe5456614f2073ddbf2dc17040c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -64,6 +64,16 @@ dependencies { +@@ -63,6 +63,16 @@ dependencies { } val craftbukkitPackageVersion = "1_20_R3" // Paper diff --git a/patches/server/0004-Enable-preview-features-for-development-runs.patch b/patches/server/0004-Enable-preview-features-for-development-runs.patch index d2a4d14..2dcb04f 100644 --- a/patches/server/0004-Enable-preview-features-for-development-runs.patch +++ b/patches/server/0004-Enable-preview-features-for-development-runs.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/build.gradle.kts b/build.gradle.kts -index 4ed622fdcd1c87fb81e5671886406b55936835e9..3dff67c980b06fa485ad1bcf9966bf32904be95c 100644 +index 3c30e911885dcbe5456614f2073ddbf2dc17040c..d3f5a4a65adff2731618e38a6a4c94b4338763a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -194,6 +194,7 @@ fun TaskContainer.registerRunTask( +@@ -193,6 +193,7 @@ fun TaskContainer.registerRunTask( val memoryGb = providers.gradleProperty("paper.runMemoryGb").getOrElse("2") minHeapSize = "${memoryGb}G" maxHeapSize = "${memoryGb}G" diff --git a/patches/server/0005-Gale-branding-changes.patch b/patches/server/0005-Gale-branding-changes.patch index 70a12e5..b8b0a8f 100644 --- a/patches/server/0005-Gale-branding-changes.patch +++ b/patches/server/0005-Gale-branding-changes.patch @@ -221,10 +221,10 @@ index 94a9ed024d3859793618152ea559a168bbcbb5e2..e60008693e017bec1b4eb49c84be3898 -. +. diff --git a/build.gradle.kts b/build.gradle.kts -index 3dff67c980b06fa485ad1bcf9966bf32904be95c..7613c2789b3bf67a7da3806cfd04c918cba58344 100644 +index d3f5a4a65adff2731618e38a6a4c94b4338763a5..be2cc4ff2109d6a8c04075bf645fa1fff3374799 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -86,7 +86,7 @@ tasks.jar { +@@ -85,7 +85,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -233,7 +233,7 @@ index 3dff67c980b06fa485ad1bcf9966bf32904be95c..7613c2789b3bf67a7da3806cfd04c918 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -231,3 +231,22 @@ tasks.registerRunTask("runDev") { +@@ -230,3 +230,22 @@ tasks.registerRunTask("runDev") { classpath(runtimeClasspathForRunDev) jvmArgs("-DPaper.isRunDev=true") } @@ -427,7 +427,7 @@ index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..e45e6b44b2a8f2cdae6e0048a812b921 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..90a06994220979be88ce54c487809e1e7c1b5cdd 100644 +index 712708f62fadb6698c4231f38deeb39bed91e529..bad84f8d6a9b4807af580efc3f082a6379962f9c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -954,7 +954,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop public - public static Services create(YggdrasilAuthenticationService authenticationService, File rootDirectory, File userCacheFile, joptsimple.OptionSet optionSet) throws Exception { // Paper + public static Services create(YggdrasilAuthenticationService authenticationService, File rootDirectory, File userCacheFile, joptsimple.OptionSet optionSet) throws Exception { // Paper - add optionset to load paper config files; add userCacheFile parameter @@ -32,7 +38,10 @@ public record Services(MinecraftSessionService sessionService, ServicesKeySet se final java.nio.file.Path legacyConfigPath = ((File) optionSet.valueOf("paper-settings")).toPath(); final java.nio.file.Path configDirPath = ((File) optionSet.valueOf("paper-settings-directory")).toPath(); @@ -284,11 +284,11 @@ index a5450eeeab5a6b0ab273810063806d11107d6b26..79e2eff81b267608253e820817862768 + GaleConfigurations galeConfigurations = GaleConfigurations.setup(configDirPath); + return new Services(minecraftSessionService, authenticationService.getServicesKeySet(), gameProfileRepository, gameProfileCache, paperConfigurations, galeConfigurations); + // Gale end - Gale configuration - // Paper end + // Paper end - load paper config files from cli options } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 58536aabf607015939a1326f80207c0a06eed8ff..0ce390a0ffb021f58dd763e44ebe9dabf62472bc 100644 +index 00c47942a3690df565bd0ea76b8abbf2dc50c4e2..bb6246da25e756348d2dc0152d487f99054b5203 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -1,20 +1,15 @@ @@ -313,19 +313,19 @@ index 58536aabf607015939a1326f80207c0a06eed8ff..0ce390a0ffb021f58dd763e44ebe9dab import java.util.Locale; import java.util.Optional; import java.util.function.BooleanSupplier; -@@ -208,6 +203,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc. - paperConfigurations.initializeGlobalConfiguration(this.registryAccess()); - paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); +@@ -209,6 +204,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess()); + this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); + // Paper end - initialize global and world-defaults configuration + // Gale start - Gale configuration + galeConfigurations.initializeGlobalConfiguration(this.registryAccess()); + galeConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); + // Gale end - Gale configuration - // Paper start - moved up to right after PlayerList creation but before file load/save + // Paper start - convert old users earlier after PlayerList creation but before file load/save if (this.convertOldUsers()) { this.getProfileCache().save(false); // Paper diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7c31f619a6e8e3539c547fc43d821d2cce7df7e7..516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1 100644 +index 9b0b2510edb4984b0714244bbe513e077af7b455..ab0ab5574dc3a19b133262b9c17d62a36df15566 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -134,12 +134,10 @@ import net.minecraft.world.level.chunk.storage.EntityStorage; @@ -341,17 +341,17 @@ index 7c31f619a6e8e3539c547fc43d821d2cce7df7e7..516aaf7a9e77bcbb40124acb3f5ffadf import net.minecraft.world.level.gameevent.DynamicGameEventListener; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.gameevent.GameEventDispatcher; -@@ -698,7 +696,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -697,7 +695,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Holder holder = worlddimension.type(); // CraftBukkit - decompile error // Objects.requireNonNull(minecraftserver); // CraftBukkit - decompile error -- super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - Async-Anti-Xray - Pass executor -+ super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), spigotConfig -> minecraftserver.galeConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration +- super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - create paper world configs; Async-Anti-Xray: Pass executor ++ super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), spigotConfig -> minecraftserver.galeConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - create paper world configs; Async-Anti-Xray: Pass executor // Gale - Gale configuration this.pvpMode = minecraftserver.isPvpAllowed(); this.convertable = convertable_conversionsession; this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile()); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 6403341f2e9d7ac4251336cb0bcc5d79dbb7bb0e..5dc2e7c5087dc29fd2726053f5561409c9e05163 100644 +index dce7be16854faa3e297815e794cae6b0bd42bd4f..6a9ffef1b09b70e460fbd3aa90e34104057c0007 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1,10 +1,7 @@ @@ -404,7 +404,7 @@ index 6403341f2e9d7ac4251336cb0bcc5d79dbb7bb0e..5dc2e7c5087dc29fd2726053f5561409 @@ -177,6 +169,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return this.paperConfig; } - // Paper end + // Paper end - add paper world config + // Gale start - Gale configuration + private final GaleWorldConfiguration galeConfig; + public GaleWorldConfiguration galeConfig() { @@ -418,16 +418,16 @@ index 6403341f2e9d7ac4251336cb0bcc5d79dbb7bb0e..5dc2e7c5087dc29fd2726053f5561409 public abstract ResourceKey getTypeKey(); -- protected Level(WritableLevelData worlddatamutable, ResourceKey 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 -+ protected Level(WritableLevelData worlddatamutable, ResourceKey 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration +- protected Level(WritableLevelData worlddatamutable, ResourceKey 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 - create paper world config; Async-Anti-Xray: Pass executor ++ protected Level(WritableLevelData worlddatamutable, ResourceKey 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper + this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config + this.galeConfig = galeWorldConfigCreator.apply(this.spigotConfig); // Gale - Gale configuration this.generator = gen; 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 b13c8d00dbb07674e46d4142605469661c17a2e1..6c453bbb929007d9bcd041f856eb65d409bac32a 100644 +index 2e6206bc868480cb1866e77421374c0b632e8c1d..8f234dfe047fe8f93f160c1b794b88b3357e1d93 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1037,6 +1037,7 @@ public final class CraftServer implements Server { @@ -438,7 +438,7 @@ index b13c8d00dbb07674e46d4142605469661c17a2e1..6c453bbb929007d9bcd041f856eb65d4 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)) -@@ -3011,6 +3012,14 @@ public final class CraftServer implements Server { +@@ -3010,6 +3011,14 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0010-Gale-commands.patch b/patches/server/0010-Gale-commands.patch index ec2502b..6f9511f 100644 --- a/patches/server/0010-Gale-commands.patch +++ b/patches/server/0010-Gale-commands.patch @@ -13,7 +13,7 @@ As part of: Paper (https://github.com/PaperMC/Paper) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index a250a1a4e68eb5971cc09b6b2cf2d0576cb7ba64..5ae5eba9b42b3a5adbad4896e692be0b7338ebaa 100644 +index bb6246da25e756348d2dc0152d487f99054b5203..6fd999a40643cd3068cfdd80347d2cc117a409db 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -45,6 +45,7 @@ import net.minecraft.world.level.GameRules; @@ -24,14 +24,14 @@ index a250a1a4e68eb5971cc09b6b2cf2d0576cb7ba64..5ae5eba9b42b3a5adbad4896e692be0b import org.slf4j.Logger; // CraftBukkit start -@@ -216,6 +217,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - org.spigotmc.WatchdogThread.doStart(org.spigotmc.SpigotConfig.timeoutTime, org.spigotmc.SpigotConfig.restartOnCrash); - thread.start(); // Paper - start console thread after MinecraftServer.console & PaperConfig are initialized - io.papermc.paper.command.PaperCommands.registerCommands(this); +@@ -217,6 +218,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + org.spigotmc.WatchdogThread.doStart(org.spigotmc.SpigotConfig.timeoutTime, org.spigotmc.SpigotConfig.restartOnCrash); // Paper - start watchdog thread + thread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized + io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command + GaleCommands.registerCommands(this); // Gale - Gale commands - register commands - com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); - com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now - io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider + com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics + com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now + io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider diff --git a/src/main/java/org/galemc/gale/command/GaleCommand.java b/src/main/java/org/galemc/gale/command/GaleCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..87d3aed35341dfa9358af064dd54d7de95078269 diff --git a/patches/server/0011-Include-time-in-startup-logs.patch b/patches/server/0011-Include-time-in-startup-logs.patch index b3bc358..b105d09 100644 --- a/patches/server/0011-Include-time-in-startup-logs.patch +++ b/patches/server/0011-Include-time-in-startup-logs.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index c737c5d62407337d3db2899cfc01713a058a6467..e8f4e3620062a507f00c2b76a934ec48b0d5d89e 100644 +index 16e73128115ef92adefbd7818fef3a4b9bcebad2..f0953c110177a3000d857dea49cc1a4b88db1c2f 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -2,6 +2,7 @@ package org.bukkit.craftbukkit; @@ -20,7 +20,7 @@ index c737c5d62407337d3db2899cfc01713a058a6467..e8f4e3620062a507f00c2b76a934ec48 import java.util.Calendar; @@ -24,6 +25,26 @@ public class Main { } - // Paper end + // Paper end - Reset loggers after shutdown + // Gale start - include time in startup logs + private static final DateFormat startupDateFormat = new SimpleDateFormat("hh:mm:ss"); diff --git a/patches/server/0016-Make-timings-calls-final.patch b/patches/server/0016-Make-timings-calls-final.patch index ec36ce3..8807fce 100644 --- a/patches/server/0016-Make-timings-calls-final.patch +++ b/patches/server/0016-Make-timings-calls-final.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6bcfcc5bf869d63618b8df0d9382a0a37193fff1..fea67d65f4eed87d26086294b198f21bee4491df 100644 +index 7adffbc9e737354a2644a12bc9b067e57bec756a..d57a3967f29f795cc6e1ee137d06c32e7833f31c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1507,7 +1507,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1548,7 +1509,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - this.profiler.push(() -> { @@ -330,7 +330,7 @@ index fea67d65f4eed87d26086294b198f21bee4491df..557bfd1405603d1cd7e5210e406e6328 try { worldserver.timings.doTick.startTiming(); // Spigot worldserver.tick(shouldKeepTicking); -@@ -1742,17 +1691,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), spigotConfig -> minecraftserver.galeConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration -+ super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), spigotConfig -> minecraftserver.galeConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler +- super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), spigotConfig -> minecraftserver.galeConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - create paper world configs; Async-Anti-Xray: Pass executor // Gale - Gale configuration ++ super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), spigotConfig -> minecraftserver.galeConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess())), executor); // Paper - create paper world configs; Async-Anti-Xray: Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler this.pvpMode = minecraftserver.isPvpAllowed(); this.convertable = convertable_conversionsession; this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile()); @@ -788,7 +788,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 this.navigatingMobs = new ObjectOpenHashSet(); this.blockEvents = new ObjectLinkedOpenHashSet(); this.blockEventsToReschedule = new ArrayList(64); -@@ -807,16 +808,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -806,16 +807,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void tick(BooleanSupplier shouldKeepTicking) { @@ -805,7 +805,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 this.advanceWeatherCycle(); } -@@ -848,30 +845,23 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -847,30 +844,23 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickTime(); } @@ -836,7 +836,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 if (flag) { this.timings.doSounds.startTiming(); // Spigot this.runBlockEvents(); -@@ -879,7 +869,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -878,7 +868,6 @@ public class ServerLevel extends Level implements WorldGenLevel { } this.handlingTick = false; @@ -844,7 +844,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 boolean flag1 = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag1) { -@@ -887,12 +876,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -886,12 +875,9 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag1 || this.emptyTime++ < 300) { @@ -857,7 +857,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -902,9 +888,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -901,9 +887,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { @@ -867,7 +867,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -916,22 +900,17 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -915,22 +899,17 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -890,7 +890,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 } @Override -@@ -990,9 +969,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -989,9 +968,6 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -900,7 +900,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder -@@ -1023,8 +999,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1022,8 +998,6 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -909,7 +909,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper for (int l = 0; l < randomTickSpeed; ++l) { if (this.random.nextInt(48) == 0) { -@@ -1036,7 +1010,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1035,7 +1009,6 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper @@ -917,7 +917,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 timings.chunkTicksBlocks.startTiming(); // Paper if (randomTickSpeed > 0) { // Paper start - optimize random block ticking -@@ -1072,7 +1045,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1071,7 +1044,6 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking timings.chunkTicksBlocks.stopTiming(); // Paper @@ -925,7 +925,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 } @VisibleForTesting -@@ -1401,19 +1373,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1400,19 +1372,13 @@ public class ServerLevel extends Level implements WorldGenLevel { try { // Paper end - timings entity.setOldPosAndRot(); @@ -945,7 +945,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 } finally { timer.stopTiming(); } // Paper - timings Iterator iterator = entity.getPassengers().iterator(); -@@ -1442,12 +1408,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1441,12 +1407,6 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -958,7 +958,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1459,7 +1419,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1458,7 +1418,6 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -967,7 +967,7 @@ index 516aaf7a9e77bcbb40124acb3f5ffadfa439d1f1..7dcf7fa990640ef4e7c0260597d54ad1 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index be05a52be037042c6158100e2ce880b8ed415d53..fe1a1947da61170c0920e67b103c5c78f4c5cfcb 100644 +index 6872e223ff4b450af89a838f4caf7cf2ebcb818e..3e8e5fe6a67af911847e7f4c3e2874a340d39016 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1213,7 +1213,6 @@ public class ServerPlayer extends Player { @@ -996,7 +996,7 @@ index be05a52be037042c6158100e2ce880b8ed415d53..fe1a1947da61170c0920e67b103c5c78 this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index d28d0ef6105ddeb562ddf31ae9088739856941fc..9e014a140262f5dfcdcb9b21afd18ca275930bb2 100644 +index 134a84841a1e05b212794c00477f20eb30e53ec5..6ddb0abcc89af93e4cff5b0e461bc8490aacbbc3 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -203,7 +203,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -1096,18 +1096,18 @@ index 7ab57748b2f2aea1003d9b7e70e76c372aa1e432..47e75ec4a01f8a456ec6ebc13031c1f0 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f812af6459 100644 +index 8814ffc0f3ebe352cd72f50d9f68704e4ee0e88c..d1bdfda6f24d6c9a103e20eb36e6ca3ff6466b6c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -819,7 +819,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -821,7 +821,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end public void baseTick() { - this.level().getProfiler().push("entityBaseTick"); - if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking + if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -880,7 +879,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -882,7 +881,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.firstTick = false; @@ -1115,7 +1115,7 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 } public void setSharedFlagOnFire(boolean onFire) { -@@ -1099,7 +1097,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1101,7 +1099,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -1123,7 +1123,7 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1108,7 +1105,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1110,7 +1107,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1131,7 +1131,7 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 return; } // Paper end -@@ -1129,8 +1125,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1131,8 +1127,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1140,7 +1140,7 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1148,9 +1142,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1150,9 +1144,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S BlockState iblockdata = this.level().getBlockState(blockposition); this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); @@ -1151,7 +1151,7 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1286,8 +1278,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1288,8 +1280,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S if (this.isOnFire() && (this.isInPowderSnow || this.isInWaterRainOrBubble())) { this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1166,11 +1166,11 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit - this.level().getProfiler().push("portal"); this.portalTime = i; - // Paper start + // Paper start - Add EntityPortalReadyEvent io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); @@ -3160,7 +3149,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } - } // Paper + } // Paper - Add EntityPortalReadyEvent // CraftBukkit end - this.level().getProfiler().pop(); } @@ -1211,7 +1211,7 @@ index 1be10c57e374ad4018c08d96cfb69397a2f541d3..ea5a63944c09a91f549099fa04f063f8 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d9bca6913 100644 +index 353f8598ae940b15a71e71d7c6b80f9d063decb6..d8c899566533dda4cf5e700769c842f93e5c0b49 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -404,7 +404,6 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1230,7 +1230,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d } public boolean canSpawnSoulSpeedParticle() { -@@ -3074,10 +3072,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3075,10 +3073,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1241,7 +1241,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3089,7 +3084,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3090,7 +3085,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1249,7 +1249,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3384,19 +3378,14 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3385,19 +3379,14 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1269,7 +1269,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3423,8 +3412,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3424,8 +3413,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1278,7 +1278,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3451,8 +3438,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3452,8 +3439,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1287,7 +1287,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3469,15 +3454,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3470,15 +3455,12 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1304,7 +1304,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..c4c7970e3dce12985c401d23d288bd8d if (((ServerLevel) this.level()).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index a7fbd329ea6d36a46c00b4476c74e426dbbfe238..1cdacd42ea421833caef345a05fb53a8d93aec36 100644 +index 0b5334004b9d0489e8465824870662b467ce321b..3bf473e2904b4279b1bc14a0fa75ffe25189d1d2 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -146,8 +146,10 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -1518,7 +1518,7 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..26731a659fe3c40fc20135d473bacf10 } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 387006271c246362b0df1bfcadca7b7096660003..91bde1774cc9e7a323ffd2c943b6656101b232a1 100644 +index b21e180641d17438997a80e5bcb0ec7998d24a2e..207d41b91bc02d94c5b40799619f7314ef84e41d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -277,12 +277,8 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 7dee2d1c4ce038f42334120f5dedb836f4e21723..9d147f34a7aba21a141fff4ccf1a079ed9f4881b 100644 +index f693d4d6a6a3c3d31c2d85ceb5b5b01366c970a1..e6fa217b0b7552dc37cc6879b2d6594b2258bc89 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -147,13 +147,9 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -1587,7 +1587,7 @@ index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..0f3a11203dd0353d74626a273e900313 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 111a244087e24f25ba8524a46a228da10cd9498a..4df3f237e4b3bc27e1be66d1e593d4f619873c7e 100644 +index 5d247ac38fe8a61603b3d934f3000bcda773142b..c6ff7c756aff281e7de094c05749740370988fe5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -193,12 +193,8 @@ public class Goat extends Animal { @@ -1604,7 +1604,7 @@ index 111a244087e24f25ba8524a46a228da10cd9498a..4df3f237e4b3bc27e1be66d1e593d4f6 } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 47a5125e44cea1ece84657cdb874807f13ee824f..52cb7dae46a86e4c9705677a7c602f8ba78390a0 100644 +index 0a5b953bd8c0c7f181da4090b950e9e6524b6d61..817f269d28305ae2d08b3f680d06af74a232e1f1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -490,11 +490,8 @@ public class Sniffer extends Animal { @@ -1649,7 +1649,7 @@ index 1268ce642a79495450845734085f281589415fef..9672afb372e3b376d46864fed5bc8af1 } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 4257f2282152aee09533c9a2e53018d3e49effa4..024e2da8673a837a1185351bb211414e19a7f393 100644 +index 01a2016ac82807d28ffe407b7dbb74bdbcde503e..c97a3c7060b846aa92a730760e3428ba98919879 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -130,9 +130,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1663,7 +1663,7 @@ index 4257f2282152aee09533c9a2e53018d3e49effa4..024e2da8673a837a1185351bb211414e if (this.isConverting()) { ++this.timeInOverworld; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..57d7873290fc361d8c5c094e166416772fe11cbe 100644 +index a9813da7f2b248f98f22e0ad2e7842915025ec12..104f3ed9230f6397bfe306b7fbfb9893b7c8e94d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -302,9 +302,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1691,7 +1691,7 @@ index 5d1a30e09870a5a535c71a2e44b8e6933de0c1e8..5aab051998b67b7ba95cbf568de60e32 PiglinBruteAi.maybePlayActivitySound(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 9f1b7c629644931074293151ed58a523ca6d488c..206701dd16f0e5850bc2384388a0a3a746a1b74e 100644 +index 937f81a859953498abe73bea560c86e6560e1c33..b73bccfcb1b94936f500926a06a28a6a134bbc33 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -277,9 +277,7 @@ public class Warden extends Monster implements VibrationSystem { @@ -1705,7 +1705,7 @@ index 9f1b7c629644931074293151ed58a523ca6d488c..206701dd16f0e5850bc2384388a0a3a7 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 11935e5b16324af572b07c5b173708f5a91f8289..e02560e9d4c3a1503862e357fe501b05103052b9 100644 +index e12f1f11386fa723f62b51ed0cc5715c1812d2bf..3bbba098ebaae7ed0178020ea35a04752d9d4daa 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -253,9 +253,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1719,7 +1719,7 @@ index 11935e5b16324af572b07c5b173708f5a91f8289..e02560e9d4c3a1503862e357fe501b05 this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 9442f58dff89ec843c321533965fbee2727d02f8..3fde433edfd8835bf162cf39dd9999aa6dc5832d 100644 +index 210b6d71207b99e66ba014b176b2c1445053b1d1..ce8e39d4bf4c7474e1e8694312e1985327a88e62 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -659,7 +659,6 @@ public class Explosion { @@ -1739,7 +1739,7 @@ index 9442f58dff89ec843c321533965fbee2727d02f8..3fde433edfd8835bf162cf39dd9999aa if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5dc2e7c5087dc29fd2726053f5561409c9e05163..09c0e0e5a1edba28809aaa2b980d02d68a006fa7 100644 +index 6a9ffef1b09b70e460fbd3aa90e34104057c0007..a759f61d2e56cbb7f526c854b6b26b34736b11cd 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -132,7 +132,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -1754,10 +1754,10 @@ index 5dc2e7c5087dc29fd2726053f5561409c9e05163..09c0e0e5a1edba28809aaa2b980d02d6 public abstract ResourceKey getTypeKey(); -- protected Level(WritableLevelData worlddatamutable, ResourceKey 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration -+ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler +- protected Level(WritableLevelData worlddatamutable, ResourceKey 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration ++ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper + this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.galeConfig = galeWorldConfigCreator.apply(this.spigotConfig); // Gale - Gale configuration @@ -226,7 +225,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } @@ -1816,7 +1816,7 @@ index 5dc2e7c5087dc29fd2726053f5561409c9e05163..09c0e0e5a1edba28809aaa2b980d02d6 @Override diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 3cdddda9c0618e95288b81b975d499c8dd30c05f..d3ea44e41c2e332bf06f7c6e2935adcde5631467 100644 +index 46d743db099e69e10f5534aafdd7aa5eda67dec9..04415b50f527b40265e6b515ee50c9784ec376ee 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -132,7 +132,6 @@ public final class NaturalSpawner { @@ -1834,7 +1834,7 @@ index 3cdddda9c0618e95288b81b975d499c8dd30c05f..d3ea44e41c2e332bf06f7c6e2935adcd - world.getProfiler().pop(); } - // Paper start + // Paper start - Add mobcaps commands diff --git a/src/main/java/net/minecraft/world/level/PathNavigationRegion.java b/src/main/java/net/minecraft/world/level/PathNavigationRegion.java index 0f1025495237aebe30132ace0832aa5718d6f9bb..9c2321ebb1237b4ecd3e7f7053e5039b800d89ff 100644 --- a/src/main/java/net/minecraft/world/level/PathNavigationRegion.java @@ -1857,7 +1857,7 @@ index 0f1025495237aebe30132ace0832aa5718d6f9bb..9c2321ebb1237b4ecd3e7f7053e5039b - } } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index fa170cc1ce7011d201295b89718292d696c7fc24..c5ab3058f66a54dba397aa4b562ec95e4fd25686 100644 +index 27e8ee4507460b1cc72de692b41562b9f4f13929..0daa7dac5e1c64da86d6c26c9399363105b926a5 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -25,7 +25,6 @@ import net.minecraft.network.FriendlyByteBuf; @@ -1882,7 +1882,7 @@ index fa170cc1ce7011d201295b89718292d696c7fc24..c5ab3058f66a54dba397aa4b562ec95e } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1161,9 +1155,6 @@ public class LevelChunk extends ChunkAccess { +@@ -1160,9 +1154,6 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1892,7 +1892,7 @@ index fa170cc1ce7011d201295b89718292d696c7fc24..c5ab3058f66a54dba397aa4b562ec95e this.blockEntity.tickTimer.startTiming(); // Spigot BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1174,8 +1165,6 @@ public class LevelChunk extends ChunkAccess { +@@ -1173,8 +1164,6 @@ public class LevelChunk extends ChunkAccess { this.loggedInvalidBlockState = true; LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata}); } @@ -1934,7 +1934,7 @@ index d23481453717f715124156b5d83f6448f720d049..c4052d1a7c2903564a8a6226c1b019d2 startNode.g = 0.0F; startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -index 3b740b1fcada96a6fac18a22ea77d1d3ad2a9cce..afc77618e1ceaeec35247294e90d86785226315f 100644 +index 3ddf6ab00de2456ebf504985b88994f970e3b5c4..3b2eb7738380c9385c0227e6f04e3c1691093b1f 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java @@ -20,7 +20,6 @@ import net.minecraft.server.packs.resources.PreparableReloadListener; diff --git a/patches/server/0023-Move-random-tick-random.patch b/patches/server/0023-Move-random-tick-random.patch index 72f5b47..d039c89 100644 --- a/patches/server/0023-Move-random-tick-random.patch +++ b/patches/server/0023-Move-random-tick-random.patch @@ -19,10 +19,10 @@ require it to be initialized earlier. By moving it to the superclass, we initialize it earlier, ensuring that it is available sooner. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7dcf7fa990640ef4e7c0260597d54ad10096c171..97a5034ff7faf16f179aca13234f35a515cf808f 100644 +index a692573423348db7a48e5cc79e1bcc469d8e21aa..3f637a3e666c24ed2d293f86824e91c751a3095e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -961,7 +961,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -960,7 +960,6 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -31,7 +31,7 @@ index 7dcf7fa990640ef4e7c0260597d54ad10096c171..97a5034ff7faf16f179aca13234f35a5 public void tickChunk(LevelChunk chunk, int randomTickSpeed) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 09c0e0e5a1edba28809aaa2b980d02d68a006fa7..a6084e0d9bcd12c1445bd5acec6a64cc6e694b9b 100644 +index a759f61d2e56cbb7f526c854b6b26b34736b11cd..39e95e11c3c7c784a007138b65860e4b0c7c43bb 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -184,6 +184,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch b/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch index 000d242..deab353 100644 --- a/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch @@ -64,10 +64,10 @@ index 7bde3392d46fb1be3d04db97a5ec02ecc4a5ca0a..51f86a87c89057351d6984e655674212 this.level.timings.countNaturalMobs.startTiming(); // Paper - timings int k = this.distanceManager.getNaturalSpawnChunkCount(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 97a5034ff7faf16f179aca13234f35a515cf808f..7212d15b58d9045bd4a30d11a3dac5eb395d00df 100644 +index 3f637a3e666c24ed2d293f86824e91c751a3095e..62eac1a915177ffe935f6a19a567932f6c787f75 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -963,6 +963,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -962,6 +962,8 @@ public class ServerLevel extends Level implements WorldGenLevel { private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); // Paper end @@ -76,7 +76,7 @@ index 97a5034ff7faf16f179aca13234f35a515cf808f..7212d15b58d9045bd4a30d11a3dac5eb public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -970,7 +972,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -969,7 +971,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int k = chunkcoordintpair.getMinBlockZ(); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -85,7 +85,7 @@ index 97a5034ff7faf16f179aca13234f35a515cf808f..7212d15b58d9045bd4a30d11a3dac5eb blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { -@@ -998,7 +1000,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -997,7 +999,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -95,7 +95,7 @@ index 97a5034ff7faf16f179aca13234f35a515cf808f..7212d15b58d9045bd4a30d11a3dac5eb if (this.random.nextInt(48) == 0) { // Paper start diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index c5ab3058f66a54dba397aa4b562ec95e4fd25686..cd375184c63453829be96449c4df88372f905d9e 100644 +index 0daa7dac5e1c64da86d6c26c9399363105b926a5..d13a61ad34c00e5ad67adc64e919c4f559621cc9 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -85,6 +85,18 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch b/patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch index e20dea2..70bb4fe 100644 --- a/patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch +++ b/patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch @@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index 8f8b29f80d1573981ccffd207dd6e0941e71a352..aed7e9affaae1e0d1e3324a41e5818435f76fd0f 100644 +index abcc3ef59475ac170fd10b4dd4a4f3371faf17e0..aed7e9affaae1e0d1e3324a41e5818435f76fd0f 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java @@ -13,6 +13,7 @@ import net.minecraft.core.BlockPos; @@ -66,7 +66,7 @@ index 8f8b29f80d1573981ccffd207dd6e0941e71a352..aed7e9affaae1e0d1e3324a41e581843 return false; } else { mutableLong.setValue(time + 20L + (long)world.getRandom().nextInt(20)); -- if (entity.getNavigation().isStuck()) mutableLong.add(200); // Paper - Wait an additional 10s to check again if they're stuck +- if (entity.getNavigation().isStuck()) mutableLong.add(200); // Paper - Perf: Wait an additional 10s to check again if they're stuck + addAdditionalTimeToMutableLongIfEntityIsStuck(mutableLong, world, entity); // Gale - Airplane - reduce acquire POI for stuck entities PoiManager poiManager = world.getPoiManager(); long2ObjectMap.long2ObjectEntrySet().removeIf((entry) -> { diff --git a/patches/server/0031-Cache-on-climbable-check.patch b/patches/server/0031-Cache-on-climbable-check.patch index e20527e..bff6923 100644 --- a/patches/server/0031-Cache-on-climbable-check.patch +++ b/patches/server/0031-Cache-on-climbable-check.patch @@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c4c7970e3dce12985c401d23d288bd8d9bca6913..e4c1afec0d90c8131e210b7676733e355f2b08b9 100644 +index d8c899566533dda4cf5e700769c842f93e5c0b49..8df80c5cfaee022e5796dcced0185ddcd794fa0d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -42,7 +42,7 @@ index c4c7970e3dce12985c401d23d288bd8d9bca6913..e4c1afec0d90c8131e210b7676733e35 public abstract class LivingEntity extends Entity implements Attackable { -@@ -1999,6 +1998,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2000,6 +1999,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -64,7 +64,7 @@ index c4c7970e3dce12985c401d23d288bd8d9bca6913..e4c1afec0d90c8131e210b7676733e35 if (this.isSpectator()) { return false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 2d31752478636bd21bbff5b430e5acb76b5d91c2..ef7a25818781af4ce4e1f1a63ab62abff8013ed4 100644 +index fafc8b84d6b6368c70b8eedfdb4c3a9deace9c26..9153d333f17d8b2864d1572473fdf561881905b0 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -297,7 +297,7 @@ public class ActivationRange diff --git a/patches/server/0033-Improve-container-checking-with-a-bitset.patch b/patches/server/0033-Improve-container-checking-with-a-bitset.patch index 4b31ed7..c4f7269 100644 --- a/patches/server/0033-Improve-container-checking-with-a-bitset.patch +++ b/patches/server/0033-Improve-container-checking-with-a-bitset.patch @@ -390,7 +390,7 @@ index a71414397bd45ee7bcacfeef0041d80dfa25f114..7743f185672e977520218c3ce6b8ddc9 @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..90c354d37a8db3bcad79aa882d52d5d25482c02d 100644 +index a61d7cd2b078fe511ff00344197b6ea11feebfb2..5a199935865979adf2f81ff6459299c4c7b9003b 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -47,7 +47,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @@ -448,8 +448,8 @@ index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..90c354d37a8db3bcad79aa882d52d5d2 flag = HopperBlockEntity.ejectItems(world, pos, state, (Container) blockEntity, blockEntity); // CraftBukkit } -- if (fullState != HOPPER_IS_FULL || flag) { // Paper - optimize hoppers -+ if (!blockEntity.optimizedItems.hasFullStacks() || fullState != HOPPER_IS_FULL || flag) { // Paper - optimize hoppers // Gale - Airplane - improve container checking with a bitset - use bitset first +- if (fullState != HOPPER_IS_FULL || flag) { // Paper - Perf: Optimize Hoppers ++ if (!blockEntity.optimizedItems.hasFullStacks() || fullState != HOPPER_IS_FULL || flag) { // Paper - Perf: Optimize Hoppers // Gale - Airplane - improve container checking with a bitset - use bitset first flag |= booleansupplier.getAsBoolean(); } @@ -466,8 +466,8 @@ index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..90c354d37a8db3bcad79aa882d52d5d2 } private static boolean isEmptyContainer(Container inv, Direction facing) { -- return allMatch(inv, facing, IS_EMPTY_TEST); -+ return inv.isCompletelyEmpty(facing); // Gale - Airplane - improve container checking with a bitset - use bitsets +- return allMatch(inv, facing, IS_EMPTY_TEST); // Paper - Perf: Optimize Hoppers ++ return inv.isCompletelyEmpty(facing); // Paper - Perf: Optimize Hoppers // Gale - Airplane - improve container checking with a bitset - use bitsets } public static boolean suckInItems(Level world, Hopper hopper) { @@ -493,13 +493,13 @@ index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..90c354d37a8db3bcad79aa882d52d5d2 public static void entityInside(Level world, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index 64875525df244db838560f5fefb7b1b07b0f1f51..1de09539877d40b7bdcdc8a10d1d30c81420aa5b 100644 +index a94300a457b25f0e33a8eeabba6dd5720ca9ab1e..f1ea82072cb13e255fa6ca90b0753ed232697275 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -94,12 +94,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc public boolean isEmpty() { this.unpackLootTable((Player)null); - // Paper start + // Paper start - Perf: Optimize Hoppers - for (final ItemStack itemStack : this.getItems()) { - if (!itemStack.isEmpty()) { - return false; @@ -507,6 +507,6 @@ index 64875525df244db838560f5fefb7b1b07b0f1f51..1de09539877d40b7bdcdc8a10d1d30c8 - } - return true; + return this.isCompletelyEmpty(null); // Gale - Airplane - improve container checking with a bitset - use super - // Paper end + // Paper end - Perf: Optimize Hoppers } diff --git a/patches/server/0036-Inline-level-height.patch b/patches/server/0036-Inline-level-height.patch index 4a004fe..340bb6c 100644 --- a/patches/server/0036-Inline-level-height.patch +++ b/patches/server/0036-Inline-level-height.patch @@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index c434d73f69cf39d2139a2e71605575733c8c4752..f6f5d385feb4c801a5fd7f1df81ac77838ef2a6f 100644 +index 39e95e11c3c7c784a007138b65860e4b0c7c43bb..ff484009c8e0f9ecf0381e33670c13d30f47829d 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -212,6 +212,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -47,9 +47,9 @@ index c434d73f69cf39d2139a2e71605575733c8c4752..f6f5d385feb4c801a5fd7f1df81ac778 + @Override public final int getHeight() { return this.height; } + // Gale end - Airplane - inline level height + - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, 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.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper + this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -234,6 +243,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { }); final DimensionType dimensionmanager = (DimensionType) holder.value(); diff --git a/patches/server/0040-Reduce-entity-allocations.patch b/patches/server/0040-Reduce-entity-allocations.patch index d43f49d..45632b5 100644 --- a/patches/server/0040-Reduce-entity-allocations.patch +++ b/patches/server/0040-Reduce-entity-allocations.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f7a8180e1cf5f48515285c4b90656bbb2fd473d4..af4076be9307e0e431feac1b2d841f8e1aa73691 100644 +index d1bdfda6f24d6c9a103e20eb36e6ca3ff6466b6c..66e10dd20961d49742a5f016dab9c2cd1a2b64b6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -438,6 +438,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -440,6 +440,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.originWorld; } // Paper end diff --git a/patches/server/0041-Remove-lambda-from-ticking-guard.patch b/patches/server/0041-Remove-lambda-from-ticking-guard.patch index e4c4de2..c7e39cb 100644 --- a/patches/server/0041-Remove-lambda-from-ticking-guard.patch +++ b/patches/server/0041-Remove-lambda-from-ticking-guard.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7212d15b58d9045bd4a30d11a3dac5eb395d00df..b1e45275dd05d2d7ea163582354575bd0c896f8a 100644 +index 62eac1a915177ffe935f6a19a567932f6c787f75..ec840eb5438eaa9aadfdf62b0c7d4810e83d6402 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -900,7 +900,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -899,7 +899,20 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -57,7 +57,7 @@ index 7212d15b58d9045bd4a30d11a3dac5eb395d00df..b1e45275dd05d2d7ea163582354575bd } } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 554a6c088d10e129cdbb7c2ca1f8c0757c0568fa..6d5a7d4609ec9068c60ac29a8fad2807d0abd48c 100644 +index ff484009c8e0f9ecf0381e33670c13d30f47829d..5ddae106ccd4a81dd0e3f873f7f64c0061814669 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1329,13 +1329,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0043-SIMD-support.patch b/patches/server/0043-SIMD-support.patch index be7f42c..d65ba6f 100644 --- a/patches/server/0043-SIMD-support.patch +++ b/patches/server/0043-SIMD-support.patch @@ -13,10 +13,10 @@ As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/build.gradle.kts b/build.gradle.kts -index 7613c2789b3bf67a7da3806cfd04c918cba58344..dfd92a33497785f28c7ade16da900f7bb851cada 100644 +index be2cc4ff2109d6a8c04075bf645fa1fff3374799..fefe852c5376274f606ededeaf6c741f43ab19f9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -71,6 +71,7 @@ tasks.withType { +@@ -70,6 +70,7 @@ tasks.withType { compilerArgs.add("-Xlint:-module") compilerArgs.add("-Xlint:-removal") compilerArgs.add("-Xlint:-dep-ann") @@ -24,7 +24,7 @@ index 7613c2789b3bf67a7da3806cfd04c918cba58344..dfd92a33497785f28c7ade16da900f7b } // Gale end - hide irrelevant compilation warnings -@@ -195,6 +196,7 @@ fun TaskContainer.registerRunTask( +@@ -194,6 +195,7 @@ fun TaskContainer.registerRunTask( minHeapSize = "${memoryGb}G" maxHeapSize = "${memoryGb}G" jvmArgs("--enable-preview") // Gale - enable preview features for development runs @@ -84,7 +84,7 @@ index 2acad4c3fd58178b0f8b22bdb04eeeeb689d5afa..850ccd53c5007e8b18344ba76c9e7f00 } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 06ae3f1fee154d8f283fad6eeb06582ec647d519..d47e5442de3c6bf731b1b31454493855bc1e61e3 100644 +index 6fd999a40643cd3068cfdd80347d2cc117a409db..4ed9b8d14eac0e202e76371a9726fab5040effb0 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -14,6 +14,8 @@ import java.util.Locale; @@ -105,8 +105,8 @@ index 06ae3f1fee154d8f283fad6eeb06582ec647d519..d47e5442de3c6bf731b1b31454493855 // CraftBukkit start @@ -223,6 +226,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider - // Paper end + com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now + io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider + // Gale start - Pufferfish - SIMD support + // Initialize vectorization diff --git a/patches/server/0044-Make-book-writing-configurable.patch b/patches/server/0044-Make-book-writing-configurable.patch index 36d70d4..b3a1477 100644 --- a/patches/server/0044-Make-book-writing-configurable.patch +++ b/patches/server/0044-Make-book-writing-configurable.patch @@ -22,7 +22,7 @@ you to easily disable books, should you want to preemptively remove this functionality before additional exploits are found. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8b630fc4da8a7fda08c416e70c22463f04c3b6b5..da7f7a6eda29b26bd17c2e23e2752746efd12b08 100644 +index e5d734234ae0543b0772e8a12da3f60b3a97a6cb..054119323bcb5efb6688a68dbe47818fb79e8c71 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -186,6 +186,8 @@ import net.minecraft.world.phys.Vec3; @@ -34,7 +34,7 @@ index 8b630fc4da8a7fda08c416e70c22463f04c3b6b5..da7f7a6eda29b26bd17c2e23e2752746 import org.slf4j.Logger; // CraftBukkit start -@@ -1122,6 +1124,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1124,6 +1126,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { diff --git a/patches/server/0045-Optimize-entity-coordinate-key.patch b/patches/server/0045-Optimize-entity-coordinate-key.patch index 3862711..e43d951 100644 --- a/patches/server/0045-Optimize-entity-coordinate-key.patch +++ b/patches/server/0045-Optimize-entity-coordinate-key.patch @@ -35,10 +35,10 @@ index adfb793ba2ca4552e0b800d37f166ea55562a57a..af49374eea8e85917687da19e8aa7491 public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 97fe21f2512481169cc269462b866bc194ed5fcc..b9b3391726cbd801e1d386f13323aa907d4d51b9 100644 +index b0a18b5b1f3904093439b6993e32734eae3544fa..1939f5037376d5968a649c9d90f74edd592a7d5e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -307,7 +307,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public double yo; public double zo; private Vec3 position; diff --git a/patches/server/0046-Reduce-in-wall-checks.patch b/patches/server/0046-Reduce-in-wall-checks.patch index 6b7205d..6cc725f 100644 --- a/patches/server/0046-Reduce-in-wall-checks.patch +++ b/patches/server/0046-Reduce-in-wall-checks.patch @@ -28,7 +28,7 @@ but is so much cheaper than the suffocation check that it's worth keeping it. diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 93c810fe4c392b20295f73044470aa45f13d857f..ae070ceb7f696af8b43c4d2c2ff6daf221c8a9db 100644 +index 8df80c5cfaee022e5796dcced0185ddcd794fa0d..59071351d60514bf23626dd9d4140be537321e9c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -411,7 +411,10 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -43,7 +43,7 @@ index 93c810fe4c392b20295f73044470aa45f13d857f..ae070ceb7f696af8b43c4d2c2ff6daf2 this.hurt(this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1405,6 +1408,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1406,6 +1409,15 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } diff --git a/patches/server/0047-Make-chat-order-verification-configurable.patch b/patches/server/0047-Make-chat-order-verification-configurable.patch index c2648bf..3230a3d 100644 --- a/patches/server/0047-Make-chat-order-verification-configurable.patch +++ b/patches/server/0047-Make-chat-order-verification-configurable.patch @@ -13,7 +13,7 @@ As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -index 85a8a687b1568a56e3e646b37ef78b562c1b8a82..992617212932a38f5586cd3d0e1fbebb3a8d4f14 100644 +index ba12919c3f9aec34a9e64993b143ae92be5eb172..42970db49c74f645591904ebeac3426e36f0b4ba 100644 --- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java +++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java @@ -9,6 +9,7 @@ import net.minecraft.util.SignatureUpdater; @@ -27,10 +27,10 @@ index 85a8a687b1568a56e3e646b37ef78b562c1b8a82..992617212932a38f5586cd3d0e1fbebb @@ -38,7 +39,7 @@ public class SignedMessageChain { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause) } else if (playerPublicKey.data().hasExpired()) { - throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey", org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY), false); // Paper - kick event causes + throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey"), false, org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY); // Paper - kick event causes - } else if (body.timeStamp().isBefore(this.lastTimeStamp)) { + } else if (body.timeStamp().isBefore(this.lastTimeStamp) && GaleGlobalConfiguration.get().misc.verifyChatOrder) { // Gale - Pufferfish - make chat order verification configurable - throw new SignedMessageChain.DecodeException(Component.translatable("multiplayer.disconnect.out_of_order_chat", org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT), true); // Paper - kick event causes + throw new SignedMessageChain.DecodeException(Component.translatable("multiplayer.disconnect.out_of_order_chat"), true, org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event causes } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java diff --git a/patches/server/0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch b/patches/server/0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch index de2a2f4..3b90f85 100644 --- a/patches/server/0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch +++ b/patches/server/0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch @@ -26,7 +26,7 @@ search to attempt respawning the ender dragon whenever a player places an end crystal. diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..702f9ad3d7a27060bf3328192a32ea2807fbaa3b 100644 +index e1696f6b77df4c8fceaece64701d4db78b0a4c42..a0bc8bb8d88e96457a2be0befe1fd69ef4973e11 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -53,11 +53,13 @@ public class EndCrystalItem extends Item { @@ -37,7 +37,7 @@ index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..702f9ad3d7a27060bf3328192a32ea28 EndDragonFight enderdragonbattle = ((ServerLevel) world).getDragonFight(); if (enderdragonbattle != null) { - enderdragonbattle.tryRespawn(aboveBlockPosition); // Paper - pass placed end crystal position to pre-check proximity to portal + enderdragonbattle.tryRespawn(aboveBlockPosition); // Paper - Perf: Do crystal-portal proximity check before entity lookup } + } // Gale - Pufferfish - make ender dragon respawn attempt after placing end crystals configurable } diff --git a/patches/server/0051-Reduce-hopper-item-checks.patch b/patches/server/0051-Reduce-hopper-item-checks.patch index bfc7f5c..a30b159 100644 --- a/patches/server/0051-Reduce-hopper-item-checks.patch +++ b/patches/server/0051-Reduce-hopper-item-checks.patch @@ -17,7 +17,7 @@ Licensed under: MIT (https://opensource.org/licenses/MIT) Only do an item "suck in" action once per second diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index a39db702063887cf530f272deaf4f334047cc7d4..2abd920e78a4da56654da87034c36c77d2fc6b35 100644 +index 491a521f0e5e272fbad7870fa3adefdea22e179f..3ff5c1b932bb28203aa5b48393ff41724c93618a 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -14,11 +14,13 @@ import net.minecraft.world.entity.Entity; @@ -119,7 +119,7 @@ index a05acf709735b40ca86f978508c63a86065fd405..3752b4ba7fb0d680d4b4a61bf44d54d5 double getLevelY(); diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 90c354d37a8db3bcad79aa882d52d5d25482c02d..375d1dc3a7897007f8d0997153fd77d16ff07388 100644 +index 5a199935865979adf2f81ff6459299c4c7b9003b..5a5347ee033db890872193f22a7b63c1af0e79b7 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -11,6 +11,7 @@ import net.minecraft.core.Direction; @@ -141,7 +141,7 @@ index 90c354d37a8db3bcad79aa882d52d5d25482c02d..375d1dc3a7897007f8d0997153fd77d1 @@ -575,7 +577,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen return false; } - // Paper end + // Paper end - Perf: Optimize Hoppers - } else { + } else if (shouldSuckIn(world, hopper)) { // Gale - EMC - reduce hopper item checks Iterator iterator = HopperBlockEntity.getItemsAtAndAbove(world, hopper).iterator(); @@ -156,7 +156,7 @@ index 90c354d37a8db3bcad79aa882d52d5d25482c02d..375d1dc3a7897007f8d0997153fd77d1 @io.papermc.paper.annotation.DoNotUse // Paper - method unused as logic is inlined above @@ -900,6 +903,31 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen - return first.getCount() < first.getMaxStackSize() && first.is(second.getItem()) && first.getDamageValue() == second.getDamageValue() && ((first.isEmpty() && second.isEmpty()) || java.util.Objects.equals(first.getTag(), second.getTag())); // Paper - used to return true for full itemstacks?! + return first.getCount() < first.getMaxStackSize() && first.is(second.getItem()) && first.getDamageValue() == second.getDamageValue() && ((first.isEmpty() && second.isEmpty()) || java.util.Objects.equals(first.getTag(), second.getTag())); // Paper - Perf: Optimize Hoppers; used to return true for full itemstacks?! } + // Gale start - EMC - reduce hopper item checks diff --git a/patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch b/patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch index cf2d1d1..2e04532 100644 --- a/patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch +++ b/patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch @@ -13,7 +13,7 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fe1a1947da61170c0920e67b103c5c78f4c5cfcb..198c49244eb4245cd284ae9397a90c185cb479fc 100644 +index 3e8e5fe6a67af911847e7f4c3e2874a340d39016..e91f27cde736c3ef49c44180a718e5c8980c2f38 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -275,6 +275,7 @@ public class ServerPlayer extends Player { @@ -25,10 +25,10 @@ index fe1a1947da61170c0920e67b103c5c78f4c5cfcb..198c49244eb4245cd284ae9397a90c18 public boolean isRealPlayer; // Paper public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index da7f7a6eda29b26bd17c2e23e2752746efd12b08..13b54b98d1c1818e644291272a1a622d56fc317d 100644 +index 054119323bcb5efb6688a68dbe47818fb79e8c71..d8ab047a573590afa3b3976393537e4ac06365ec 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2278,6 +2278,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2280,6 +2280,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false)); return Optional.empty(); @@ -40,7 +40,7 @@ index da7f7a6eda29b26bd17c2e23e2752746efd12b08..13b54b98d1c1818e644291272a1a622d this.player.resetLastActionTime(); return optional; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e98a455b6bca9d094d0da323bddd7b3f2c07bb23..75b9b73b7938816337a4ba7a65cb631051498751 100644 +index e6b84e4891927d79f993944ea4d3525c68c6c1b9..caa365842067207e357053e2b3ae054a9de71027 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -347,6 +347,8 @@ public abstract class PlayerList { diff --git a/patches/server/0055-Do-not-log-invalid-statistics.patch b/patches/server/0055-Do-not-log-invalid-statistics.patch index ffcb418..b72dd55 100644 --- a/patches/server/0055-Do-not-log-invalid-statistics.patch +++ b/patches/server/0055-Do-not-log-invalid-statistics.patch @@ -13,7 +13,7 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -index 9bb8d4d7be6a937980aa653db82be084d066a563..33b1845a5cb935382e38268246d7fd729d234eb6 100644 +index f890738d3bb9fb5e70a9d323c6cec97f9948f9cf..8e9f4b1a7f0fe6df4e3d0796cef99db439f25bba 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java @@ -36,6 +36,7 @@ import net.minecraft.server.level.ServerPlayer; @@ -24,7 +24,7 @@ index 9bb8d4d7be6a937980aa653db82be084d066a563..33b1845a5cb935382e38268246d7fd72 import org.slf4j.Logger; public class ServerStatsCounter extends StatsCounter { -@@ -132,15 +133,15 @@ public class ServerStatsCounter extends StatsCounter { +@@ -137,15 +138,15 @@ public class ServerStatsCounter extends StatsCounter { Util.ifElse(this.getStat(statisticwrapper, s2), (statistic) -> { this.stats.put(statistic, nbttagcompound2.getInt(s2)); }, () -> { diff --git a/patches/server/0056-Do-not-log-empty-message-warnings.patch b/patches/server/0056-Do-not-log-empty-message-warnings.patch index cf47a44..2ae285b 100644 --- a/patches/server/0056-Do-not-log-empty-message-warnings.patch +++ b/patches/server/0056-Do-not-log-empty-message-warnings.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 13b54b98d1c1818e644291272a1a622d56fc317d..b2c8ab298d79399b7aa19496bc22356030ae40ce 100644 +index d8ab047a573590afa3b3976393537e4ac06365ec..377398ee22fb53f0a4bef841d1f7e2750787b3a6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -187,6 +187,7 @@ import net.minecraft.world.phys.shapes.BooleanOp; @@ -18,7 +18,7 @@ index 13b54b98d1c1818e644291272a1a622d56fc317d..b2c8ab298d79399b7aa19496bc223560 import org.galemc.gale.configuration.GaleGlobalConfiguration; import org.slf4j.Logger; -@@ -2447,7 +2448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2449,7 +2450,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // CraftBukkit start String s = message.signedContent(); if (s.isEmpty()) { diff --git a/patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch b/patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch index 16dab84..382d2f6 100644 --- a/patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch +++ b/patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 50ed7cfe1ecef6d075ba484804827cec83ba2bf2..4c8f27673219187399cb9ba1d23447d42077f3fe 100644 +index 5ece375eaf6bcc61864997a389bb5e24625e4505..12898276aae034673484cd60cb598a520a47ce21 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java @@ -54,6 +54,7 @@ import net.minecraft.world.phys.AABB; @@ -51,7 +51,7 @@ index 50ed7cfe1ecef6d075ba484804827cec83ba2bf2..4c8f27673219187399cb9ba1d23447d4 @@ -318,6 +319,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { - // Paper start + // Paper start - Buffer OOB setBlock calls + if (GaleGlobalConfiguration.get().logToConsole.setBlockInFarChunk) // Gale - Purpur - do not log setBlock in far chunks if (!hasSetFarWarned) { Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + pos + ", status: " + this.generatingStatus + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); diff --git a/patches/server/0060-Do-not-log-legacy-Material-initialization.patch b/patches/server/0060-Do-not-log-legacy-Material-initialization.patch index bb4e171..9d2f840 100644 --- a/patches/server/0060-Do-not-log-legacy-Material-initialization.patch +++ b/patches/server/0060-Do-not-log-legacy-Material-initialization.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index 2677e21d8239bf0361a3bc5c9a50c328e54d70f6..36b39517ef0aa817c5a10d6d7f4904a87c346b47 100644 +index fde9aadd6c688b9797a6755f9d214918047598a0..0f47ee4193aa834e23b1c5bfc992881cd5872e8a 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java @@ -31,6 +31,7 @@ import org.bukkit.Material; @@ -52,8 +52,8 @@ index 2677e21d8239bf0361a3bc5c9a50c328e54d70f6..36b39517ef0aa817c5a10d6d7f4904a8 } static { -- LOGGER.warn("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Paper - doesn't need to be an error -+ if (GaleGlobalConfiguration.get().logToConsole.legacyMaterialInitialization) LOGGER.warn("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Paper - doesn't need to be an error // Gale - Purpur - do not log legacy Material initialization +- LOGGER.warn("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Paper - Improve logging and errors; doesn't need to be an error ++ if (GaleGlobalConfiguration.get().logToConsole.legacyMaterialInitialization) LOGGER.warn("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Paper - Improve logging and errors; doesn't need to be an error // Gale - Purpur - do not log legacy Material initialization if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { new Exception().printStackTrace(); } diff --git a/patches/server/0066-Do-not-log-offline-mode-warning.patch b/patches/server/0066-Do-not-log-offline-mode-warning.patch index 34137eb..d5364cb 100644 --- a/patches/server/0066-Do-not-log-offline-mode-warning.patch +++ b/patches/server/0066-Do-not-log-offline-mode-warning.patch @@ -41,13 +41,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 64701667486002c60c9d1819e57ac40153306a71..08d82f8592714eac92ead36b98460de6ff607cfe 100644 +index 4e6a787401f6affbbbff739cfc6ad0f49570a7a8..55df8e8108c09fba4aa9754264eae758142b21cb 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -290,7 +290,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord"; String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/"; - // Paper end + // Paper end - Add Velocity IP Forwarding Support - if (!this.usesAuthentication()) { + if (!"false".equalsIgnoreCase(System.getProperty("gale.log.warning.offline.mode")) && !this.usesAuthentication()) { // Gale - KeYi - do not log offline mode warning DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); diff --git a/patches/server/0070-Make-tripwire-duping-fix-configurable.patch b/patches/server/0070-Make-tripwire-duping-fix-configurable.patch index f491d80..1b4872a 100644 --- a/patches/server/0070-Make-tripwire-duping-fix-configurable.patch +++ b/patches/server/0070-Make-tripwire-duping-fix-configurable.patch @@ -7,15 +7,15 @@ License: MIT (https://opensource.org/licenses/MIT) Leaf - https://github.com/Winds-Studio/Leaf diff --git a/src/main/java/net/minecraft/world/level/block/TripWireBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireBlock.java -index 2f947997ca746d18544940ef67ff550a95946edd..cc7096d54a5b9412c3cda4d1a0d99d042739a789 100644 +index 3cb1db27dba902678a5848a1fb5e2c6ec6241e60..c615d528610168c4ad52730079f3525ab211b89e 100644 --- a/src/main/java/net/minecraft/world/level/block/TripWireBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TripWireBlock.java @@ -91,7 +91,7 @@ public class TripWireBlock extends Block { public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating if (!moved && !state.is(newState.getBlock())) { -- this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true), true); // Paper - fix state inconsistency -+ this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true), world.galeConfig().gameplayMechanics.fixes.tripwireDuping); // Paper - fix state inconsistency // Gale - Leaf - make tripwire duping fix configurable +- this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true), true); // Paper - fix tripwire state inconsistency ++ this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true), world.galeConfig().gameplayMechanics.fixes.tripwireDuping); // Paper - fix tripwire state inconsistency // Gale - Leaf - make tripwire duping fix configurable } } diff --git a/patches/server/0071-Fix-MC-238526.patch b/patches/server/0071-Fix-MC-238526.patch index 25c08e6..4191cf7 100644 --- a/patches/server/0071-Fix-MC-238526.patch +++ b/patches/server/0071-Fix-MC-238526.patch @@ -37,13 +37,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 827912174ee08cd19249797d351887149b25c880..15dfa2537da2b98deea09a3515c00fb2839121f5 100644 +index 9b897cf53f4bb5d366e6ac88dbed93c59d8fe541..53e3a40246da0a4d30ad8a7286d1a43dc7db3b0b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java @@ -77,6 +77,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); - // Paper end + // Paper end - Make water animal spawn height configurable - return pos.getY() >= j && pos.getY() <= i && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); + return ((reason == MobSpawnType.SPAWNER && world.getMinecraftWorld().galeConfig().gameplayMechanics.fixes.mc238526) || (pos.getY() >= j && pos.getY() <= i)) && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); // Gale - Purpur - fix MC-238526 } diff --git a/patches/server/0080-Reduce-array-allocations.patch b/patches/server/0080-Reduce-array-allocations.patch index 929896d..6446d7a 100644 --- a/patches/server/0080-Reduce-array-allocations.patch +++ b/patches/server/0080-Reduce-array-allocations.patch @@ -250,7 +250,7 @@ index ff13d67151c50ea11a45117e524c7524e2b1a202..3f6327661e593e52a89c247288f0104c @Override diff --git a/src/main/java/net/minecraft/nbt/ListTag.java b/src/main/java/net/minecraft/nbt/ListTag.java -index c6877c7167dd5b1c61c776b0c7865d9064e69202..43e429053ca92d9ef7e9b5b9d466352b1b0a3fc8 100644 +index 24ad8d22b5180cd7d7f793e3074e438f9192448f..33ea5ee8d79708e11613ce162f97f300242894b7 100644 --- a/src/main/java/net/minecraft/nbt/ListTag.java +++ b/src/main/java/net/minecraft/nbt/ListTag.java @@ -2,6 +2,8 @@ package net.minecraft.nbt; @@ -262,7 +262,7 @@ index c6877c7167dd5b1c61c776b0c7865d9064e69202..43e429053ca92d9ef7e9b5b9d466352b import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -@@ -261,7 +263,7 @@ public class ListTag extends CollectionTag { +@@ -279,7 +281,7 @@ public class ListTag extends CollectionTag { } } @@ -271,7 +271,7 @@ index c6877c7167dd5b1c61c776b0c7865d9064e69202..43e429053ca92d9ef7e9b5b9d466352b } public long[] getLongArray(int index) { -@@ -272,7 +274,7 @@ public class ListTag extends CollectionTag { +@@ -291,7 +293,7 @@ public class ListTag extends CollectionTag { } } @@ -325,7 +325,7 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..43f402d9032e4570a81a80e412215598 protected CipherBase(Cipher cipher) { this.cipher = cipher; diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 2ae08b21c63490bbf8cd870f9585d82ed131f815..79ff5a76b382581c4125b859d9f00ee19d784100 100644 +index 81fb880cdcd433bd692461b3d7b315f30d2747f7..9fc2b83c4e99da8bd9e0fdd6bb1d5ff8520f1e57 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -23,7 +23,6 @@ import io.netty.channel.epoll.EpollSocketChannel; @@ -377,7 +377,7 @@ index d45e39bc009281c298f3dfae113dc87f2b3b1fbd..25f25c3e2882e11a80142d3282a020d2 private static final Codec ARG_CODEC = Codec.either(PRIMITIVE_ARG_CODEC, ComponentSerialization.CODEC).xmap((either) -> { return either.map((object) -> { diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 7573c12a77797146c51ef2dfe4b2a636df45e21a..43ba5c26f40a9b00480198e10141275c07938994 100644 +index 4a565321174d9230823a07cf37fb104f9f92245f..d619d520486f15602916d03dc10abae1db91de69 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java @@ -87,7 +87,7 @@ public class Main { @@ -390,7 +390,7 @@ index 7573c12a77797146c51ef2dfe4b2a636df45e21a..43ba5c26f40a9b00480198e10141275c OptionSpec optionspec10 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]); OptionSpec optionspec11 = optionparser.accepts("serverId").withRequiredArg(); diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index e8bb35322d3204e6a126bc6df0beed3f931dae6d..6bfa866ce2b3dab86dcbaba9fdf52737d7883925 100644 +index 29e06ff52c34fa4cc64d808fe8107435b001ed89..dc2762f3c5eca99e74cfc75d5fcdb15f0378a7b9 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -329,7 +329,7 @@ public class ServerEntity { @@ -403,7 +403,7 @@ index e8bb35322d3204e6a126bc6df0beed3f931dae6d..6bfa866ce2b3dab86dcbaba9fdf52737 for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b1e45275dd05d2d7ea163582354575bd0c896f8a..7d5e7545b995506ef554dbda70ec5eb8ccb24151 100644 +index ec840eb5438eaa9aadfdf62b0c7d4810e83d6402..ceb91d3fc2463e0518f889299e21f612476b016a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -38,6 +38,8 @@ import java.util.stream.Collectors; @@ -415,7 +415,7 @@ index b1e45275dd05d2d7ea163582354575bd0c896f8a..7d5e7545b995506ef554dbda70ec5eb8 import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; import net.minecraft.Util; -@@ -1050,7 +1052,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1049,7 +1051,7 @@ public class ServerLevel extends Level implements WorldGenLevel { BlockPos blockposition2 = blockposition.set(j + randomX, randomY, k + randomZ); BlockState iblockdata = com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(raw); @@ -424,7 +424,7 @@ index b1e45275dd05d2d7ea163582354575bd0c896f8a..7d5e7545b995506ef554dbda70ec5eb8 } // We drop the fluid tick since LAVA is ALREADY TICKED by the above method (See LiquidBlock). // TODO CHECK ON UPDATE (ping the Canadian) -@@ -1356,7 +1358,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1355,7 +1357,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public static List getCurrentlyTickingEntities() { Entity ticking = currentlyTickingEntity.get(); @@ -434,7 +434,7 @@ index b1e45275dd05d2d7ea163582354575bd0c896f8a..7d5e7545b995506ef554dbda70ec5eb8 return ret; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b2c8ab298d79399b7aa19496bc22356030ae40ce..5a2b43ea98478a67ad712980ee8e6dbe98871433 100644 +index 377398ee22fb53f0a4bef841d1f7e2750787b3a6..a4b86d40728341cf9baeacc8c0478cc30c0b4f50 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -28,6 +28,8 @@ import java.util.function.UnaryOperator; @@ -479,7 +479,7 @@ index b2c8ab298d79399b7aa19496bc22356030ae40ce..5a2b43ea98478a67ad712980ee8e6dbe return; } // Paper end -@@ -3219,7 +3218,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3221,7 +3220,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Paper start if (!org.bukkit.Bukkit.isPrimaryThread()) { if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { @@ -489,7 +489,7 @@ index b2c8ab298d79399b7aa19496bc22356030ae40ce..5a2b43ea98478a67ad712980ee8e6dbe } } diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 8d67d9fd8f6d09f86c1f4829dcfb74324f32920e..bf17b7b29fb7ae3283a24d1174c55a31e51a96af 100644 +index 9490d5890f5bdea17c4aef1a5e43998eeee4bcd7..fe75d37ed1f2affef47c2f78bd4af3568180da48 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -13,9 +13,10 @@ import java.security.PrivateKey; @@ -517,7 +517,7 @@ index 8d67d9fd8f6d09f86c1f4829dcfb74324f32920e..bf17b7b29fb7ae3283a24d1174c55a31 this.requestedUsername = packet.name(); GameProfile gameprofile = this.server.getSingleplayerProfile(); -@@ -227,7 +230,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -232,7 +235,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @Override public void handleKey(ServerboundKeyPacket packet) { @@ -526,7 +526,7 @@ index 8d67d9fd8f6d09f86c1f4829dcfb74324f32920e..bf17b7b29fb7ae3283a24d1174c55a31 final String s; -@@ -409,7 +412,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -412,7 +415,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @Override public void handleLoginAcknowledgement(ServerboundLoginAcknowledgedPacket packet) { @@ -536,7 +536,7 @@ index 8d67d9fd8f6d09f86c1f4829dcfb74324f32920e..bf17b7b29fb7ae3283a24d1174c55a31 ServerConfigurationPacketListenerImpl serverconfigurationpacketlistenerimpl = new ServerConfigurationPacketListenerImpl(this.server, this.connection, commonlistenercookie, this.player); // CraftBukkit diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 83eca7453559f182aa7e5fa735316be311e05e73..5eadc4ce30f77794f50b612549557f8b5d81f21a 100644 +index 911faf0dc1398d91f4c0e8de89c3a4380e049263..65cc4cc0051476e761b6b0584f5e7281b7a2fac6 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -25,6 +25,8 @@ import java.util.UUID; @@ -638,10 +638,10 @@ index 2e324276ea4cd9e528c6a3f9a9ba394b378fe075..8e91714e3167ab0ad16df681bc080772 private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) { this.type = type; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bd599625de84f33c7dbff8242dd2ee6d6c137d82..8597b9b5b78bb5375a10caea691cd19ac462d61f 100644 +index 59071351d60514bf23626dd9d4140be537321e9c..171b81067377f6fface9a8cd9922a194334c50b1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3138,7 +3138,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3139,7 +3139,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Nullable private Map collectEquipmentChanges() { Map map = null; @@ -651,7 +651,7 @@ index bd599625de84f33c7dbff8242dd2ee6d6c137d82..8597b9b5b78bb5375a10caea691cd19a for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 1cdacd42ea421833caef345a05fb53a8d93aec36..fe9fb934f9118f52e42109ff32e35f1dc95ffe09 100644 +index 3bf473e2904b4279b1bc14a0fa75ffe25189d1d2..cd5c19380a808719476acc51e8d5c022e627992c 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1056,7 +1056,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -691,7 +691,7 @@ index 1cdacd42ea421833caef345a05fb53a8d93aec36..fe9fb934f9118f52e42109ff32e35f1d for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 94396ad1a3c280787d36c6c18256d10340ace488..9e139c1291f40fd730754ac2427269b102f7cede 100644 +index 7de9d012e7416eaa0189b513a0972c846e93c4b6..9274015f58c71f991903bd28434a4832afd074b2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -237,7 +237,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -704,7 +704,7 @@ index 94396ad1a3c280787d36c6c18256d10340ace488..9e139c1291f40fd730754ac2427269b1 for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 5b8a1f31e0b55da15daa4ab271317e4393a87e96..ca037db7ea68ad01b4189154a38a01bf3351c7b3 100644 +index 46c7c36a07169915f7409f1146e5066e8ac65c21..cc5ee9936dc00fe142abf9cb7750133f50409dbf 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1052,7 +1052,7 @@ public final class ItemStack { @@ -756,7 +756,7 @@ index 6c2e8049c2197ddc912c1a0fc99c87beae81e25b..a13822a22ab524a0fb9fd998c4ada06b private static Enchantment register(String name, Enchantment enchantment) { return Registry.register(BuiltInRegistries.ENCHANTMENT, name, enchantment); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 6d5a7d4609ec9068c60ac29a8fad2807d0abd48c..8b7dbd6bbd848c0cfb30fd91c600432d9dfc0fbf 100644 +index 5ddae106ccd4a81dd0e3f873f7f64c0061814669..a2d388ff4dd85daf0ffed2161e55538842c815cd 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -12,6 +12,8 @@ import java.util.function.Consumer; @@ -778,7 +778,7 @@ index 6d5a7d4609ec9068c60ac29a8fad2807d0abd48c..8b7dbd6bbd848c0cfb30fd91c600432d return slices.getChunkEntities(); } diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -index de8b5cab7925c1c46478952ed2cb2bd40f9a9c48..ce43cb260b36ca170a1d1725a7bf02525e8970d6 100644 +index d78fe4081bc2938326066e0afddb4a6c833a4bf7..f991a3f0ba55aeb99138038618f80bd33a5f10c2 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java @@ -4,6 +4,8 @@ import com.mojang.serialization.MapCodec; @@ -818,7 +818,7 @@ index de8b5cab7925c1c46478952ed2cb2bd40f9a9c48..ce43cb260b36ca170a1d1725a7bf0252 @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index a18aadbf7ae83713e1f2b21553185d8000bc7699..13e100fd2400878c819c7115bb958586face9958 100644 +index b39c6c91e088dbe2187ed7fd598076f41c53bd49..f64682dc7476c25c8a14608ba156a901029e65d8 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -9,6 +9,8 @@ import java.util.Iterator; @@ -830,7 +830,7 @@ index a18aadbf7ae83713e1f2b21553185d8000bc7699..13e100fd2400878c819c7115bb958586 import net.minecraft.SharedConstants; import net.minecraft.Util; import net.minecraft.core.BlockPos; -@@ -65,7 +67,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -66,7 +68,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit protected static final int SLOT_FUEL = 1; protected static final int SLOT_RESULT = 2; public static final int DATA_LIT_TIME = 0; diff --git a/patches/server/0081-Optimize-sun-burn-tick.patch b/patches/server/0081-Optimize-sun-burn-tick.patch index 95df8c4..8650350 100644 --- a/patches/server/0081-Optimize-sun-burn-tick.patch +++ b/patches/server/0081-Optimize-sun-burn-tick.patch @@ -13,10 +13,10 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e43cb3cf81be8dfdbb0cbe74835d676c301e9863..15a03c560dc546eaae54c6ca34fbe298adae77be 100644 +index 1939f5037376d5968a649c9d90f74edd592a7d5e..f97790842558577238949efbbb21fc31de6b5141 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -308,7 +308,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public double xo; public double yo; public double zo; @@ -25,7 +25,7 @@ index e43cb3cf81be8dfdbb0cbe74835d676c301e9863..15a03c560dc546eaae54c6ca34fbe298 public BlockPos blockPosition; // Gale - Pufferfish - optimize entity coordinate key - private -> public private ChunkPos chunkPosition; private Vec3 deltaMovement; -@@ -2004,9 +2004,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2006,9 +2006,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S /** @deprecated */ @Deprecated public float getLightLevelDependentMagicValue() { @@ -45,7 +45,7 @@ index e43cb3cf81be8dfdbb0cbe74835d676c301e9863..15a03c560dc546eaae54c6ca34fbe298 this.absMoveTo(x, y, z); this.setYRot(yaw % 360.0F); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index fe9fb934f9118f52e42109ff32e35f1dc95ffe09..ad6a159f5472059c1550c36dd98d83af01bbe31a 100644 +index cd5c19380a808719476acc51e8d5c022e627992c..465cfffbbc5db5fb2c95e953db09d3169b52060d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1690,13 +1690,29 @@ public abstract class Mob extends LivingEntity implements Targeting { diff --git a/patches/server/0084-Replace-game-rules-map-with-optimized-collection.patch b/patches/server/0084-Replace-game-rules-map-with-optimized-collection.patch index 1a5dcb3..49f246c 100644 --- a/patches/server/0084-Replace-game-rules-map-with-optimized-collection.patch +++ b/patches/server/0084-Replace-game-rules-map-with-optimized-collection.patch @@ -13,7 +13,7 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java -index 4f2fa47d094348bb8f86a86e808019ddba56e187..5c7e6b320566473a295f1979d68b3e3edf138895 100644 +index afe91d02363bf7385d34447dda8960980ec48443..817556fdee3551c44a5a83f174496d7fd9c6387e 100644 --- a/src/main/java/net/minecraft/world/level/GameRules.java +++ b/src/main/java/net/minecraft/world/level/GameRules.java @@ -19,6 +19,8 @@ import java.util.function.BiConsumer; @@ -32,5 +32,5 @@ index 4f2fa47d094348bb8f86a86e808019ddba56e187..5c7e6b320566473a295f1979d68b3e3e - this.rules = rules; + this.rules = new Object2ObjectOpenHashMap<>(rules); // Gale - Lithium - replace game rules map with optimized collection - // Paper start + // Paper start - Perf: Use array for gamerule storage int arraySize = rules.keySet().stream().mapToInt(key -> key.gameRuleIndex).max().orElse(-1) + 1; diff --git a/patches/server/0087-Replace-throttle-tracker-map-with-optimized-collecti.patch b/patches/server/0087-Replace-throttle-tracker-map-with-optimized-collecti.patch index f7db7ba..6cbaea9 100644 --- a/patches/server/0087-Replace-throttle-tracker-map-with-optimized-collecti.patch +++ b/patches/server/0087-Replace-throttle-tracker-map-with-optimized-collecti.patch @@ -33,7 +33,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRA IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -index c6bcf4a5d5c48e6f73b8e5d3662ec0d7c288c6c8..8e7488277bc30f83fa39f7435ca9f1724452e92e 100644 +index 6a3be2fe851e14f2c9f8b38ad8d27fe36b5240d3..94827fd9a779ccd50b8a4d46f7aae6ca8111fb4a 100644 --- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java @@ -1,5 +1,7 @@ @@ -86,4 +86,4 @@ index c6bcf4a5d5c48e6f73b8e5d3662ec0d7c288c6c8..8e7488277bc30f83fa39f7435ca9f172 + throttleTracker.object2LongEntrySet().removeIf(entry -> entry.getLongValue() > connectionThrottle); // Gale - Dionysus - replace throttle tracker map with optimized collection } } - } // Paper - add closing bracket for if check above + } // Paper - Unix domain socket support diff --git a/patches/server/0096-Cache-ominous-banner-item.patch b/patches/server/0096-Cache-ominous-banner-item.patch index b64b726..35f1df3 100644 --- a/patches/server/0096-Cache-ominous-banner-item.patch +++ b/patches/server/0096-Cache-ominous-banner-item.patch @@ -54,7 +54,7 @@ index 5a0a6de4c6f0d554b9efbb8b3dcf4e0c5bee7baf..ea0df00966cf9900a8a0153099bbb04e public Raider getLeader(int wave) { return (Raider) this.groupToLeaderMap.get(wave); diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java -index cdbc925ef61b8b439415f0a89368227890bcecb2..8a467b21867c4c624bbefd0aef5cc14d40391ca2 100644 +index 226fb5c88dd43c8008c5237299ef80db9e847af7..a71e6206c6a89708c5d312a73b1144c38f1271c8 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raider.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java @@ -47,7 +47,7 @@ public abstract class Raider extends PatrollingMonster { @@ -81,7 +81,7 @@ index cdbc925ef61b8b439415f0a89368227890bcecb2..8a467b21867c4c624bbefd0aef5cc14d - if (this.hasActiveRaid() && !flag && ItemStack.matches(itemstack, Raid.getLeaderBannerInstance())) { + if (this.hasActiveRaid() && !flag && ItemStack.matches(itemstack, Raid.LEADER_BANNER)) { // Gale - Lithium - cache ominous banner item - // Paper start + // Paper start - EntityPickupItemEvent fixes if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(this, item, 0, false).isCancelled()) { return; @@ -322,7 +322,7 @@ public abstract class Raider extends PatrollingMonster { diff --git a/patches/server/0101-Skip-entity-move-if-movement-is-zero.patch b/patches/server/0101-Skip-entity-move-if-movement-is-zero.patch index 1fb9a1f..8312693 100644 --- a/patches/server/0101-Skip-entity-move-if-movement-is-zero.patch +++ b/patches/server/0101-Skip-entity-move-if-movement-is-zero.patch @@ -13,10 +13,10 @@ As part of: VMP (https://github.com/RelativityMC/VMP-fabric) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 15a03c560dc546eaae54c6ca34fbe298adae77be..b9e736bff38d275ce41d626910791ad38aabe128 100644 +index f97790842558577238949efbbb21fc31de6b5141..dd8eb98086c4d303c54d0f8bf45fcabd7039686c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -315,6 +315,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -317,6 +317,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public float yRotO; public float xRotO; private AABB bb; @@ -24,7 +24,7 @@ index 15a03c560dc546eaae54c6ca34fbe298adae77be..b9e736bff38d275ce41d626910791ad3 public boolean onGround; public boolean horizontalCollision; public boolean verticalCollision; -@@ -1075,6 +1076,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1077,6 +1078,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper end - detailed watchdog information public void move(MoverType movementType, Vec3 movement) { diff --git a/patches/server/0106-Hide-flames-on-entities-with-fire-resistance.patch b/patches/server/0106-Hide-flames-on-entities-with-fire-resistance.patch index be79787..7b42a6a 100644 --- a/patches/server/0106-Hide-flames-on-entities-with-fire-resistance.patch +++ b/patches/server/0106-Hide-flames-on-entities-with-fire-resistance.patch @@ -13,10 +13,10 @@ As part of: Slice (https://github.com/Cryptite/Slice) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b9e736bff38d275ce41d626910791ad38aabe128..30ce82ac25fb5f93d01b0088822355c78383507e 100644 +index dd8eb98086c4d303c54d0f8bf45fcabd7039686c..f077ecfd1d65ca42e6a5dc12d9bfa09688cfe587 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -877,7 +877,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -879,7 +879,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkBelowWorld(); if (!this.level().isClientSide) { diff --git a/patches/server/0108-Reduce-block-destruction-packet-allocations.patch b/patches/server/0108-Reduce-block-destruction-packet-allocations.patch index dfbc2bd..60624d8 100644 --- a/patches/server/0108-Reduce-block-destruction-packet-allocations.patch +++ b/patches/server/0108-Reduce-block-destruction-packet-allocations.patch @@ -13,10 +13,10 @@ As part of: SportPaper (https://github.com/Electroid/SportPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7d5e7545b995506ef554dbda70ec5eb8ccb24151..56ee1c3061c854d9b3fdd096c4c70eee909f0f74 100644 +index ceb91d3fc2463e0518f889299e21f612476b016a..508d22f505bdc277520900c92fd6d96eb23990e7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1758,7 +1758,17 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1757,7 +1757,17 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void destroyBlockProgress(int entityId, BlockPos pos, int progress) { @@ -35,7 +35,7 @@ index 7d5e7545b995506ef554dbda70ec5eb8ccb24151..56ee1c3061c854d9b3fdd096c4c70eee // CraftBukkit start Player entityhuman = null; -@@ -1781,7 +1791,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1780,7 +1790,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit end if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) { diff --git a/patches/server/0109-Spread-out-sending-all-player-info.patch b/patches/server/0109-Spread-out-sending-all-player-info.patch index 6a0e7c8..ad57ef5 100644 --- a/patches/server/0109-Spread-out-sending-all-player-info.patch +++ b/patches/server/0109-Spread-out-sending-all-player-info.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5eadc4ce30f77794f50b612549557f8b5d81f21a..45ed45e636421cc49d78f05a0e75c9a88f13c112 100644 +index 65cc4cc0051476e761b6b0584f5e7281b7a2fac6..294b612534194180a9af7d9039bf3df5c08c176d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -13,6 +13,8 @@ import java.net.SocketAddress; @@ -79,7 +79,7 @@ index 5eadc4ce30f77794f50b612549557f8b5d81f21a..45ed45e636421cc49d78f05a0e75c9a8 this.server.getCustomBossEvents().onPlayerDisconnect(entityplayer); UUID uuid = entityplayer.getUUID(); @@ -832,6 +837,7 @@ public abstract class PlayerList { - // Paper end + // Paper end - Expand PlayerRespawnEvent entityplayer.stopRiding(); // CraftBukkit this.players.remove(entityplayer); + this.removeFromSendAllPlayerInfoBuckets(entityplayer); // Gale - Purpur - spread out sending all player info @@ -157,7 +157,7 @@ index 5eadc4ce30f77794f50b612549557f8b5d81f21a..45ed45e636421cc49d78f05a0e75c9a8 } diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 544b610f7c42a57099115fb5f76245f6c7a6eca3..d96e4d710ceedb80e1c12c88705181eb12975ca7 100644 +index ad291fa31741af85c86dab66b753705f96a0634a..878c545c6f8e97fdcbf00cc413898919e534aa81 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -39,6 +39,7 @@ import net.minecraft.network.syncher.SynchedEntityData; diff --git a/patches/server/0112-Send-multiple-keep-alive-packets.patch b/patches/server/0112-Send-multiple-keep-alive-packets.patch index 0013805..1891c67 100644 --- a/patches/server/0112-Send-multiple-keep-alive-packets.patch +++ b/patches/server/0112-Send-multiple-keep-alive-packets.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 9e014a140262f5dfcdcb9b21afd18ca275930bb2..e716cbde9bbf3837b614ea1ddd4f881178d938d0 100644 +index 6ddb0abcc89af93e4cff5b0e461bc8490aacbbc3..bd08b6f29177cdfc165416790cac3093499b1871 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -4,6 +4,9 @@ import com.mojang.authlib.GameProfile; @@ -129,7 +129,7 @@ index 9e014a140262f5dfcdcb9b21afd18ca275930bb2..e716cbde9bbf3837b614ea1ddd4f8811 } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5a2b43ea98478a67ad712980ee8e6dbe98871433..9583caa7434a20c1c5d1bbd601aec988d2dfb97b 100644 +index a4b86d40728341cf9baeacc8c0478cc30c0b4f50..d9c6d49aed9d84c1f317748e113acb068d1e488d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -8,6 +8,8 @@ import com.mojang.brigadier.StringReader; @@ -141,7 +141,7 @@ index 5a2b43ea98478a67ad712980ee8e6dbe98871433..9583caa7434a20c1c5d1bbd601aec988 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectIterator; import java.net.SocketAddress; -@@ -3411,6 +3413,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3413,6 +3415,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } @Override diff --git a/patches/server/0114-Make-max-interaction-distance-configurable.patch b/patches/server/0114-Make-max-interaction-distance-configurable.patch index ac255a2..e2bf83c 100644 --- a/patches/server/0114-Make-max-interaction-distance-configurable.patch +++ b/patches/server/0114-Make-max-interaction-distance-configurable.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index a0d69082f5fdeee15bba0d76b940aa48cff36fa9..bda773986fbe422840874e0934f805a5c2ffab21 100644 +index 73823d637d9859797d57507932d132b21ba46d70..cea5bef4e50ffaa4015f9224625aa6216c65f3b1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -174,7 +174,7 @@ public class ServerPlayerGameMode { @@ -20,7 +20,7 @@ index a0d69082f5fdeee15bba0d76b940aa48cff36fa9..bda773986fbe422840874e0934f805a5 this.debugLogging(pos, false, sequence, "too far"); } else if (pos.getY() >= worldHeight) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9583caa7434a20c1c5d1bbd601aec988d2dfb97b..02b80a9ecfffb83f05c9a36c91c9508cada0062d 100644 +index d9c6d49aed9d84c1f317748e113acb068d1e488d..ea8a136e2ca0aebc668391e15becd48f7d0e586f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -251,7 +251,7 @@ import org.bukkit.inventory.SmithingInventory; @@ -46,7 +46,7 @@ index 9583caa7434a20c1c5d1bbd601aec988d2dfb97b..02b80a9ecfffb83f05c9a36c91c9508c @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -1932,7 +1939,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1934,7 +1941,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl BlockPos blockposition = movingobjectpositionblock.getBlockPos(); Vec3 vec3d1 = Vec3.atCenterOf(blockposition); @@ -55,7 +55,7 @@ index 9583caa7434a20c1c5d1bbd601aec988d2dfb97b..02b80a9ecfffb83f05c9a36c91c9508c Vec3 vec3d2 = vec3d.subtract(vec3d1); double d0 = 1.0000001D; -@@ -2720,7 +2727,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2722,7 +2729,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); diff --git a/patches/server/0115-Load-portal-destination-chunk-before-entity-teleport.patch b/patches/server/0115-Load-portal-destination-chunk-before-entity-teleport.patch index 4d4f2c0..f13eb06 100644 --- a/patches/server/0115-Load-portal-destination-chunk-before-entity-teleport.patch +++ b/patches/server/0115-Load-portal-destination-chunk-before-entity-teleport.patch @@ -13,7 +13,7 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 30ce82ac25fb5f93d01b0088822355c78383507e..c5b8b8cf9be9e9088877562a3994be9d7f988cc9 100644 +index f077ecfd1d65ca42e6a5dc12d9bfa09688cfe587..d1563e21e22c92465db57521ee4fc3619c286997 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3696,6 +3696,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -28,8 +28,8 @@ index 30ce82ac25fb5f93d01b0088822355c78383507e..c5b8b8cf9be9e9088877562a3994be9d + } + // Gale end - MultiPaper - load portal destination chunk before entity teleport entity.restoreFrom(this); - entity.moveTo(position.x, position.y, position.z, yaw, pitch); // Paper - use EntityPortalExitEvent values - entity.setDeltaMovement(velocity); // Paper - use EntityPortalExitEvent values + entity.moveTo(position.x, position.y, position.z, yaw, pitch); // Paper - EntityPortalExitEvent + entity.setDeltaMovement(velocity); // Paper - EntityPortalExitEvent diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java index 68373c02373d9452613710915beb0d5951c2b531..04e7ba1e2a80dffacc4063872ce4458577876f9f 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java diff --git a/patches/server/0116-Don-t-load-chunks-to-spawn-phantoms.patch b/patches/server/0116-Don-t-load-chunks-to-spawn-phantoms.patch index 0cfa559..876552a 100644 --- a/patches/server/0116-Don-t-load-chunks-to-spawn-phantoms.patch +++ b/patches/server/0116-Don-t-load-chunks-to-spawn-phantoms.patch @@ -13,12 +13,12 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java -index dfeb3e336e06ef01f5401a362755030db942bb07..518b40a27a8d4d015caa7e67d355839628c965ef 100644 +index 7d7d37334321c844958ce09e77547dd61dcba6c8..0b899372d5e7ebbb490684514e8f764efb46f3d0 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java @@ -71,7 +71,15 @@ public class PhantomSpawner implements CustomSpawner { - if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper + if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper - Ability to control player's insomnia and phantoms BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21)); - BlockState iblockdata = world.getBlockState(blockposition1); + // Gale start - MultiPaper - don't load chunks to spawn phantoms diff --git a/patches/server/0117-Don-t-load-chunks-to-activate-climbing-entities.patch b/patches/server/0117-Don-t-load-chunks-to-activate-climbing-entities.patch index 34d2838..405aaad 100644 --- a/patches/server/0117-Don-t-load-chunks-to-activate-climbing-entities.patch +++ b/patches/server/0117-Don-t-load-chunks-to-activate-climbing-entities.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c5b8b8cf9be9e9088877562a3994be9d7f988cc9..5d39f7b7e9fb7a51245e399f0a828e7810b7b51b 100644 +index d1563e21e22c92465db57521ee4fc3619c286997..d0f7351802cb7ab1130254b102ff059c413c10af 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4613,6 +4613,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -28,10 +28,10 @@ index c5b8b8cf9be9e9088877562a3994be9d7f988cc9..5d39f7b7e9fb7a51245e399f0a828e78 return this.chunkPosition; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a60232d5da874517758a0ed0351ba522526169e8..f23e0cd2795ca2fd5f1b5f4b12b7daacf2ce6897 100644 +index 2935c02fde4b81ac3b8b1c2cc2422f9e01413e7b..2033a14d313db7012733b8de508fc781b3b38327 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2015,19 +2015,43 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2016,19 +2016,43 @@ public abstract class LivingEntity extends Entity implements Attackable { public boolean onClimbableCached() { if (!this.blockPosition().equals(this.lastClimbingPosition)) { diff --git a/patches/server/0125-Specific-interval-TPS-API.patch b/patches/server/0125-Specific-interval-TPS-API.patch index 4cd5089..72e8c5b 100644 --- a/patches/server/0125-Specific-interval-TPS-API.patch +++ b/patches/server/0125-Specific-interval-TPS-API.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4e51fb4555349bc486e80bcd72b58e3ede1bd1f8..c71e2add9e0b3d26fd501de949dafe009510784f 100644 +index cda784d7dc88988ed6c64c13c8cac2bb549ec219..fe076da59b91301db720c0d06cd6596aa201814a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2980,6 +2980,25 @@ public final class CraftServer implements Server { +@@ -2979,6 +2979,25 @@ public final class CraftServer implements Server { }; } diff --git a/patches/server/0126-5-second-TPS-average.patch b/patches/server/0126-5-second-TPS-average.patch index cd8571c..aa51b86 100644 --- a/patches/server/0126-5-second-TPS-average.patch +++ b/patches/server/0126-5-second-TPS-average.patch @@ -59,7 +59,7 @@ index 066b9e4c4f0e7773548eda045cdd1ca8445221d2..6be80b8dfd28a5e25a7f6ae603d8510e setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 557bfd1405603d1cd7e5210e406e63283947179b..69f2d3bb9ec491d3953b84619c7b0067f844e3a1 100644 +index 36fc043b282f64f329e5fcf00c81f5d9f2412ece..8ef27f52b8eda633135f59e68e53b5db271b65f7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1056,6 +1056,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop