diff --git a/build.gradle.kts b/build.gradle.kts index 20bc3e2..7ecacc3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,7 @@ import io.papermc.paperweight.util.constants.PAPERCLIP_CONFIG plugins { java - id("io.papermc.paperweight.patcher") version "1.6.3" + id("io.papermc.paperweight.patcher") version "1.7.1" } repositories { @@ -22,12 +22,12 @@ subprojects { apply(plugin = "java") java { - toolchain { languageVersion.set(JavaLanguageVersion.of(21)) } + toolchain { languageVersion = JavaLanguageVersion.of(21) } } tasks.withType().configureEach { options.encoding = "UTF-8" - options.release.set(21) + options.release = 21 } repositories { @@ -39,23 +39,22 @@ subprojects { maven("https://repo.md-5.net/content/repositories/releases/") maven("https://hub.spigotmc.org/nexus/content/groups/public/") maven("https://jitpack.io") - maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") // TODO - Adventure snapshot } } paperweight { - serverProject.set(project(":sakura-server")) + serverProject = project(":sakura-server") - remapRepo.set("https://maven.fabricmc.net/") - decompileRepo.set("https://files.minecraftforge.net/maven/") + remapRepo = "https://maven.fabricmc.net/" + decompileRepo = "https://files.minecraftforge.net/maven/" usePaperUpstream(providers.gradleProperty("paperRef")) { withPaperPatcher { - apiPatchDir.set(layout.projectDirectory.dir("patches/api")) - apiOutputDir.set(layout.projectDirectory.dir("sakura-api")) + apiPatchDir = layout.projectDirectory.dir("patches/api") + apiOutputDir = layout.projectDirectory.dir("sakura-api") - serverPatchDir.set(layout.projectDirectory.dir("patches/server")) - serverOutputDir.set(layout.projectDirectory.dir("sakura-server")) + serverPatchDir = layout.projectDirectory.dir("patches/server") + serverOutputDir = layout.projectDirectory.dir("sakura-server") } patchTasks.register("generatedApi") { isBareDirectory = true diff --git a/gradle.properties b/gradle.properties index b5954fe..bad17d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=me.samsuik.sakura version=1.20.6-R0.1-SNAPSHOT mcVersion=1.20.6 -paperRef=ac3a5471c8dcdc1d0431025781da1d524895c47a +paperRef=9d6f2cced75c1a433c508ab531a61872bce73854 org.gradle.jvmargs=-Xmx2G diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e09..b82aa23 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/patches/api/0001-Customise-Version-Command.patch b/patches/api/0001-Customise-Version-Command.patch index 24ffb62..a7a5f90 100644 --- a/patches/api/0001-Customise-Version-Command.patch +++ b/patches/api/0001-Customise-Version-Command.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Customise Version Command diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 5d1b55fdbcbe63f6b42b694d05211a3cc691a09d..7b014bcdc0a4b02f3e0852c46a9965c592913883 100644 +index 9a219b255b63f10005fc68faacb771dd32f61ac2..63f8ca44f6066294cb1f996bfb89b0ce8b1e0afb 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -131,6 +131,20 @@ public final class Bukkit { +@@ -124,6 +124,20 @@ public final class Bukkit { // Paper end } + // Sakura start - expose git info + @NotNull + public static String getGitInformation() { -+ final var manifest = JarManifests.manifest(Bukkit.getServer().getClass()); -+ final String gitBranch = manifest == null ? null : manifest.getMainAttributes().getValue("Git-Branch"); -+ final String gitCommit = manifest == null ? null : manifest.getMainAttributes().getValue("Git-Commit"); ++ final io.papermc.paper.ServerBuildInfo version = io.papermc.paper.ServerBuildInfo.buildInfo(); ++ final String gitBranch = version.gitBranch().orElse("Dev"); ++ final String gitCommit = version.gitCommit().orElse(""); + String branchMsg = " on " + gitBranch; + if ("master".equals(gitBranch) || "main".equals(gitBranch)) { + branchMsg = ""; // Don't show branch on main/master diff --git a/patches/server/0001-Branding-changes.patch b/patches/server/0001-Branding-changes.patch index 75bbb2d..95a2a1c 100644 --- a/patches/server/0001-Branding-changes.patch +++ b/patches/server/0001-Branding-changes.patch @@ -6,59 +6,50 @@ Subject: [PATCH] Branding changes From ForkPaper. diff --git a/build.gradle.kts b/build.gradle.kts -index 5d448d8a7cf6626a11791f30ad52baf41a099272..8096e25f2928ab1765dab3b393dd9dda01f1aad5 100644 +index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..6d51c23912fe14bfda7539d4bb9b3457c5591e8b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -12,8 +12,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { +@@ -13,7 +13,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { val alsoShade: Configuration by configurations.creating dependencies { - implementation(project(":paper-api")) -- implementation(project(":paper-mojangapi")) -+ // Sakura start -+ implementation(project(":sakura-api")) -+ implementation("io.papermc.paper:paper-mojangapi:1.20.6-R0.1-SNAPSHOT") { -+ exclude("io.papermc.paper", "paper-api") -+ } -+ // Sakura end ++ implementation(project(":sakura-api")) // Sakura // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -79,7 +83,7 @@ tasks.jar { +@@ -80,14 +80,14 @@ tasks.jar { + val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "CraftBukkit", -- "Implementation-Version" to "git-Paper-$implementationVersion", -+ "Implementation-Version" to "git-Sakura-$implementationVersion", // Sakura +- "Implementation-Title" to "Paper", ++ "Implementation-Title" to "Sakura", // Sakura + "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, // Paper - "Specification-Title" to "Bukkit", +- "Specification-Title" to "Paper", ++ "Specification-Title" to "Sakura", // Sakura "Specification-Version" to project.version, -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..db709ec011e2ad002c7b08cb7dd8ed8b84aeee37 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1924,7 +1924,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -13,7 +13,7 @@ index 96142deb42700f888ea08689ab62c27ef2b881fd..87f4320a29506417d29e83b06245a3d4 } - static CheckedFunction reloader(Class type, T instance) { -+ public static CheckedFunction reloader(Class type, T instance) { // Sakura - public ++ public static CheckedFunction reloader(Class type, T instance) { // Sakura - package-protected -> public return node -> { ObjectMapper.Factory factory = (ObjectMapper.Factory) Objects.requireNonNull(node.options().serializers().get(type)); ObjectMapper.Mutable mutable = (ObjectMapper.Mutable) factory.get(type); @@ -27,7 +27,7 @@ index 96142deb42700f888ea08689ab62c27ef2b881fd..87f4320a29506417d29e83b06245a3d4 } else { this.verifyWorldConfigVersion(contextMap, worldNode); diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -index 83a726bcf8b7dce73a361b0d79dbd63a0afc7a12..d43267fe2718b6016fe44c3bbf8196f8efc49ef1 100644 +index 83a726bcf8b7dce73a361b0d79dbd63a0afc7a12..6efe0ed8600e3703bd83d46545bba88791d3bcd6 100644 --- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java @@ -457,7 +457,7 @@ public class PaperConfigurations extends Configurations public if (!Files.isDirectory(path)) { Files.createDirectories(path); } -diff --git a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceFactory.java b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceFactory.java -index cec678ae24a7d99a46fa672be907f4c28fe4da96..9906ef363c72ade71c16d8141a0d6d79d72d4eff 100644 ---- a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceFactory.java -+++ b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceFactory.java -@@ -11,13 +11,13 @@ import org.spongepowered.configurate.serialize.SerializationException; - - import static io.leangen.geantyref.GenericTypeReflector.erase; - --final class InnerClassInstanceFactory implements FieldDiscoverer.MutableInstanceFactory> { -+public final class InnerClassInstanceFactory implements FieldDiscoverer.MutableInstanceFactory> { // Sakura - - private final InnerClassInstanceSupplier instanceSupplier; - private final FieldDiscoverer.MutableInstanceFactory> fallback; - private final AnnotatedType targetType; - -- InnerClassInstanceFactory(final InnerClassInstanceSupplier instanceSupplier, final FieldDiscoverer.MutableInstanceFactory> fallback, final AnnotatedType targetType) { -+ public InnerClassInstanceFactory(final InnerClassInstanceSupplier instanceSupplier, final FieldDiscoverer.MutableInstanceFactory> fallback, final AnnotatedType targetType) { // Sakura - this.instanceSupplier = instanceSupplier; - this.fallback = fallback; - this.targetType = targetType; -diff --git a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceSupplier.java b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceSupplier.java -index 8d8bc050441c02cf65dfcb6400978363d6b8ef10..5872095a811452037cc0772ba2a31bf9a795cc82 100644 ---- a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceSupplier.java -+++ b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassInstanceSupplier.java -@@ -19,7 +19,7 @@ import static io.leangen.geantyref.GenericTypeReflector.erase; - * {@link ConfigurationPart}. Only 1 instance of each {@link ConfigurationPart} should be present for each instance - * of the field discoverer this is used in. - */ --final class InnerClassInstanceSupplier implements CheckedFunction, SerializationException> { -+public final class InnerClassInstanceSupplier implements CheckedFunction, SerializationException> { // Sakua - :< - - private final Map, Object> instanceMap = new HashMap<>(); - private final Map, Object> initialOverrides; -@@ -27,7 +27,7 @@ final class InnerClassInstanceSupplier implements CheckedFunction, Object> initialOverrides) { -+ public InnerClassInstanceSupplier(final Map, Object> initialOverrides) { // Sakura - this.initialOverrides = initialOverrides; - } - diff --git a/src/main/java/me/samsuik/sakura/command/BaseSubCommand.java b/src/main/java/me/samsuik/sakura/command/BaseSubCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98d6999c7f @@ -1033,10 +991,10 @@ index 0000000000000000000000000000000000000000..4024f9738e039ffffd560a07a2210f75 +public record DurableMaterial(int durability, float resistance) { +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index db709ec011e2ad002c7b08cb7dd8ed8b84aeee37..91d3224cb30f62008a116fa4f913b06928d43c0a 100644 +index 0ed42fa899721f83b598db05be1b5f321af3614a..48648f73925c79282df19158ef52678d10608f44 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -313,6 +313,7 @@ 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(), iworlddataserver.getGameRules())), 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(), iworlddataserver.getGameRules())), () -> minecraftserver.sakuraConfigurations.createWorldConfig(me.samsuik.sakura.configuration.SakuraConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), minecraftserver.registryAccess())), executor); // Sakura // 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(), iworlddataserver.getGameRules())), () -> minecraftserver.sakuraConfigurations.createWorldConfig(me.samsuik.sakura.configuration.SakuraConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), minecraftserver.registryAccess())), executor); // Sakura - sakura configuration files // Paper - create paper world configs; Async-Anti-Xray: Pass executor 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 b4ef3ad2c17168085372f1fe46809f02d9dfe74a..3a30562a4ec500eade01b646aacbdfbba39f547b 100644 +index 14281a4e72f49dc4eb2ca3da8479c1f81a3a175d..f2cd3046fdd280b03586e645216ccef15fc4b116 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -168,6 +168,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -169,6 +169,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return this.paperConfig; } // Paper end - add paper world config -+ // Sakura start ++ // Sakura start - sakura configuration files + private final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig; + public final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig() { + return this.sakuraConfig; + } -+ // Sakura end ++ // Sakura end - sakura configuration files public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray public final co.aikar.timings.WorldTimingsHandler timings; // Paper -@@ -213,9 +219,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -205,9 +211,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable { 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 - 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config -+ this.sakuraConfig = sakuraWorldConfigCreator.get(); // Sakura ++ this.sakuraConfig = sakuraWorldConfigCreator.get(); // Sakura - sakura configuration files 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 6d01828434b8dce0359fe2a37b450e0aae916e3b..ec7c15ceb51388a7a349b2e852693f09757c6cc5 100644 +index 94a31c8f903eb61eb6d203e8e6fe8fb0beca28b1..33dbc9b263578525c9a7f7a7fd85214a96623032 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1054,6 +1054,7 @@ public final class CraftServer implements Server { +@@ -1033,6 +1033,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); -+ this.console.sakuraConfigurations.reloadConfigs(this.console); // Sakura - missing comment above ++ this.console.sakuraConfigurations.reloadConfigs(this.console); // Sakura - missing comment above :< 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)) -@@ -1084,6 +1085,7 @@ public final class CraftServer implements Server { +@@ -1064,6 +1065,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -1134,20 +1092,20 @@ index 6d01828434b8dce0359fe2a37b450e0aae916e3b..ec7c15ceb51388a7a349b2e852693f09 this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index c988afa496d25314451435eedd64079a0d87cef0..2453abb371c6a7ba407ff2d906391d6a13ed5d6b 100644 +index e02102280ed1dc300191d19bbca8f00e17701753..a4637ca09b4054fde4fbef25d502d5e98cbfe4b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -175,6 +175,14 @@ public class Main { +@@ -176,6 +176,14 @@ public class Main { .describedAs("Jar file"); // Paper end -+ // Sakura start ++ // Sakura start - sakura configuration files + acceptsAll(asList("sakura-dir", "sakura-settings-directory"), "Directory for Sakura settings") + .withRequiredArg() + .ofType(File.class) + .defaultsTo(new File(me.samsuik.sakura.configuration.SakuraConfigurations.CONFIG_DIR)) + .describedAs("Config directory"); -+ // Sakura end ++ // Sakura end - sakura configuration files + // Paper start acceptsAll(asList("server-name"), "Name of the server") diff --git a/patches/server/0004-Local-Config-and-Value-Storage-API.patch b/patches/server/0004-Local-Config-and-Value-Storage-API.patch index 4669cb9..64cd35a 100644 --- a/patches/server/0004-Local-Config-and-Value-Storage-API.patch +++ b/patches/server/0004-Local-Config-and-Value-Storage-API.patch @@ -228,48 +228,48 @@ index 0000000000000000000000000000000000000000..dd61d4e8811ffb1e8a842df1db6ac6ce + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 91d3224cb30f62008a116fa4f913b06928d43c0a..6aacf5ff736bcbbb8582b6ae11e7dfc6ff265c08 100644 +index 48648f73925c79282df19158ef52678d10608f44..9677324fc698789e9cd880705985d6112c6bd9bb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1802,6 +1802,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getTypeKey(); + public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api + - 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5f896948d158651cd9837364759dbfbcce6b7d21..73068dfe3c721b38e7f00767f3c94dc1d2589a13 100644 +index 7e6116963d835d4606ef3d93b69d3e44b61288e1..c0109fd2db0724418d55e68a27c363c8c24ff8c1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -543,6 +543,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0007-Reduce-deltaMovement-Allocations.patch b/patches/server/0007-Reduce-deltaMovement-Allocations.patch index 208a0d9..1ce8b10 100644 --- a/patches/server/0007-Reduce-deltaMovement-Allocations.patch +++ b/patches/server/0007-Reduce-deltaMovement-Allocations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Reduce deltaMovement Allocations diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417062f76d0 100644 +index ceccde57cb346810e0837157624c0ab6d4322252..a2104fae2b288f4cbd9e810d73bf986be0b7b969 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1295,7 +1295,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1294,7 +1294,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.tryCheckInsideBlocks(); float f = this.getBlockSpeedFactor(); @@ -17,7 +17,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417 // Paper start - remove expensive streams from here boolean noneMatch = true; AABB fireSearchBox = this.getBoundingBox().deflate(1.0E-6D); -@@ -1832,7 +1832,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1831,7 +1831,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess double d0 = this.getGravity(); if (d0 != 0.0D) { @@ -26,7 +26,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417 } } -@@ -2124,6 +2124,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2123,6 +2123,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void moveTo(double x, double y, double z, float yaw, float pitch) { // Paper start - Fix Entity Teleportation and cancel velocity if teleported if (!preserveMotion) { @@ -34,7 +34,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417 this.deltaMovement = Vec3.ZERO; } else { this.preserveMotion = false; -@@ -3520,29 +3521,33 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3525,29 +3526,33 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public void onAboveBubbleCol(boolean drag) { @@ -76,7 +76,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417 this.resetFallDistance(); } -@@ -4541,16 +4546,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4546,16 +4551,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess vec3d = vec3d.normalize(); } @@ -99,7 +99,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417 } this.fluidHeight.put(tag, d1); -@@ -4621,11 +4629,53 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4626,11 +4634,53 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.chunkPosition; } @@ -153,7 +153,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417 synchronized (this.posLock) { // Paper this.deltaMovement = velocity; } // Paper -@@ -4636,7 +4686,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4641,7 +4691,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public void setDeltaMovement(double x, double y, double z) { @@ -205,7 +205,7 @@ index dace8dc0c051ce9355d878154466ee3a548a3832..fda88328472130df8317a84fc726a73c int i = this.getFuse() - 1; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 9ea24dc18f70e8e3c8998f6c2b5eb3ac885df54f..482609cb5395e626f7fc5890a6db3570c6a07166 100644 +index b9f98803bc05f6adf2c026ae91f2bd5e86734052..4a96a506a90d171f374c4ba7fb15054b23f3acb8 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -618,10 +618,11 @@ public class Explosion { diff --git a/patches/server/0009-Load-Chunks-on-Movement.patch b/patches/server/0009-Load-Chunks-on-Movement.patch index ef9e8e0..d3991ba 100644 --- a/patches/server/0009-Load-Chunks-on-Movement.patch +++ b/patches/server/0009-Load-Chunks-on-Movement.patch @@ -51,10 +51,10 @@ index 658e63ebde81dc14c8ab5850fb246dc0aab25dea..f1ff1a67fee37ee7b241ceaa164fa4ee public static TicketType create(String name, Comparator argumentComparator) { return new TicketType<>(name, argumentComparator, 0L); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9aebb8f4c98eec7ece2eed012971d417062f76d0..495d8b5606457e9bfbe63199855dcd2140cd43f5 100644 +index a2104fae2b288f4cbd9e810d73bf986be0b7b969..88d01e59869f8e6c528fb3ae1485cd86a23cb383 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -573,6 +573,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -572,6 +572,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean isPrimedTNT; public boolean isFallingBlock; // Sakura end - visibility api and command @@ -74,7 +74,7 @@ index 9aebb8f4c98eec7ece2eed012971d417062f76d0..495d8b5606457e9bfbe63199855dcd21 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -1556,7 +1569,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1555,7 +1568,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess io.papermc.paper.util.CollisionUtil.getCollisions( world, this, collisionBox, potentialCollisionsVoxel, potentialCollisionsBB, @@ -83,7 +83,7 @@ index 9aebb8f4c98eec7ece2eed012971d417062f76d0..495d8b5606457e9bfbe63199855dcd21 null, null ); -@@ -4952,12 +4965,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4957,12 +4970,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @Override public boolean shouldBeSaved() { @@ -123,7 +123,7 @@ index bbf6b4f705b3e9b289a7fdf82a78ef02f777297d..09f09a8fbf0eee62295001ce5b7ed532 public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) { 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 2a8609e33716949ff1877b6d10f64a9d7a7c81e9..f0233059d84c59a88572ae4d95e25c790640410a 100644 +index 14ee7b5b9b804bebd4e2a846b238547a28a36035..684ca1da2ca1d51f56461c60a900a5fc67e21ff3 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -220,6 +220,17 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0010-TPS-Graph-Command.patch b/patches/server/0010-TPS-Graph-Command.patch index 555b2c7..67f501f 100644 --- a/patches/server/0010-TPS-Graph-Command.patch +++ b/patches/server/0010-TPS-Graph-Command.patch @@ -418,10 +418,10 @@ index 0000000000000000000000000000000000000000..6903863ad293a335a8ed1aeaa06fccb4 + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6e6ca00b20072e65370a47d38dded747fc0eb7c9..783367f380ad2a21418d102fbb6bc49a71148ee8 100644 +index 606ae62f597761296412e14750758fa185fc3c48..b72c796d30d4892e30d726c3b2a6b097b941979d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1134,6 +1134,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return false; } : this::haveTime); @@ -462,7 +462,7 @@ index b99f50604bafecbc68835974c9ed0caa91911a40..c912615ded011741f81c72739639e631 public boolean isChunkLoaded(int chunkX, int chunkZ) { ChunkHolder chunk = this.chunkMap.getUpdatingChunkIfPresent(ChunkPos.asLong(chunkX, chunkZ)); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index bb1b891d917ed41ce5da6c2c9f470c5f49eff34a..b97217662434b67a62f7247c2b5187749f207880 100644 +index 747ebfb09dcd4c619ee0543c8aa79c05416687a4..4a3690c71eda93d2542e8c039442a51882f10475 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -197,7 +197,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0012-Slice-Packet-obfuscation-and-reduction.patch b/patches/server/0012-Slice-Packet-obfuscation-and-reduction.patch index b47d6b2..0005726 100644 --- a/patches/server/0012-Slice-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0012-Slice-Packet-obfuscation-and-reduction.patch @@ -155,19 +155,19 @@ index 0f99733660f91280e4c6262cf75b3c9cae86f65a..ba9f8fe6fafc54bbdfb104de28af4b39 return SynchedEntityData.DataValue.create(this.accessor, this.value); } diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 4f103f731623a8570238a6867fda1c5f83fca4e4..842fe9b40efff7e36c97347b9d35f428044edb46 100644 +index a2279262c93408c11f5d2290b48fd794975e8cfe..09975c9be245207281b616f77c768aa048b0c140 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -141,7 +141,7 @@ public class ServerEntity { +@@ -148,7 +148,7 @@ public class ServerEntity { } } -- if (this.tickCount % this.updateInterval == 0 || this.entity.hasImpulse || this.entity.getEntityData().isDirty()) { -+ if (this.tickCount % this.updateInterval == 0 || this.entity.hasImpulse || this.entity.getEntityData().isForeignDirty()) { // Slice +- if (this.forceStateResync || this.tickCount % this.updateInterval == 0 || this.entity.hasImpulse || this.entity.getEntityData().isDirty()) { // Paper - fix desync when a player is added to the tracker ++ if (this.forceStateResync || this.tickCount % this.updateInterval == 0 || this.entity.hasImpulse || this.entity.getEntityData().isForeignDirty()) { // Slice// Paper - fix desync when a player is added to the tracker int i; int j; -@@ -382,7 +382,15 @@ public class ServerEntity { +@@ -390,7 +390,15 @@ public class ServerEntity { if (list != null) { this.trackedDataValues = datawatcher.getNonDefaultValues(); @@ -185,10 +185,10 @@ index 4f103f731623a8570238a6867fda1c5f83fca4e4..842fe9b40efff7e36c97347b9d35f428 if (this.entity instanceof LivingEntity) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 495d8b5606457e9bfbe63199855dcd2140cd43f5..1b980864f8b10f172843b6ffce2673ffe899adbe 100644 +index 88d01e59869f8e6c528fb3ae1485cd86a23cb383..6f330f99a80f291bce638b0769e5ed00c283ac78 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3465,7 +3465,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3470,7 +3470,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID); return; } @@ -198,7 +198,7 @@ index 495d8b5606457e9bfbe63199855dcd2140cd43f5..1b980864f8b10f172843b6ffce2673ff } diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index d9668a752b06b560730973ebc82251d2cb8b7123..3e80788374f03269067137582f6b6816821f7cac 100644 +index b6a4753252b748c06a62b7faa6b05c1fb904d62e..86e12495ce807ba06210535350caa7db5e15d139 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -111,7 +111,7 @@ public class FallingBlockEntity extends Entity { @@ -211,7 +211,7 @@ index d9668a752b06b560730973ebc82251d2cb8b7123..3e80788374f03269067137582f6b6816 public BlockPos getStartPos() { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index 431b02599b7e3f2730841c8136460177aca37f3b..a2e8a95ba53953192db1889c686c507321666b03 100644 +index 09f09a8fbf0eee62295001ce5b7ed5329445d2b0..16340c2f8a948136c9fe0b2314c9ec7cbee74937 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -182,7 +182,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { @@ -224,7 +224,7 @@ index 431b02599b7e3f2730841c8136460177aca37f3b..a2e8a95ba53953192db1889c686c5073 public int getFuse() { 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 093d1388ff90ad59110a37536b6639f939549068..4d81892f890e144a69dfda7a118cbcb18004a3e0 100644 +index 686374e89e41b0917791264f3281f7384835bca8..74130ccef989757b81507f084cc30a0e593ecaf3 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -645,7 +645,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0017-Store-Entity-Data-State.patch b/patches/server/0017-Store-Entity-Data-State.patch index 41a7d19..5de0941 100644 --- a/patches/server/0017-Store-Entity-Data-State.patch +++ b/patches/server/0017-Store-Entity-Data-State.patch @@ -52,10 +52,10 @@ index 0000000000000000000000000000000000000000..c9f2c5ae57878283e8c8bc3847fe63b9 + +} diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1b980864f8b10f172843b6ffce2673ffe899adbe..b87a07a5ac1da6803c7b61ef248a3dbecaedc3de 100644 +index 6f330f99a80f291bce638b0769e5ed00c283ac78..ce16878d3c9c52e8edd4b073916bb3f7fd595649 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -586,6 +586,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -585,6 +585,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return flags; } // Sakura end - load chunks on cannon entity movement @@ -82,10 +82,10 @@ index 1b980864f8b10f172843b6ffce2673ffe899adbe..b87a07a5ac1da6803c7b61ef248a3dbe public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 52c203dcc1e0ba6b0b236412dadfb1fed2a8ea31..a2a2747dbddb819cfd7d29a552824d9d88fca744 100644 +index 5a43957309019bec27b9624e5268d6a8c50c165d..829a21a6da2de36f38cae9e1a3920fcc732eac0e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1321,6 +1321,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1313,6 +1313,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public void guardEntityTick(Consumer tickConsumer, T entity) { try { diff --git a/patches/server/0018-Merge-Cannon-Entities.patch b/patches/server/0018-Merge-Cannon-Entities.patch index 464356a..ba81ca4 100644 --- a/patches/server/0018-Merge-Cannon-Entities.patch +++ b/patches/server/0018-Merge-Cannon-Entities.patch @@ -169,19 +169,19 @@ index 0000000000000000000000000000000000000000..e63935c17e213bf60571d120ad9ce311 + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 783367f380ad2a21418d102fbb6bc49a71148ee8..2db7dee8589425c805b148ef46827ce88ec38c4e 100644 +index b72c796d30d4892e30d726c3b2a6b097b941979d..054783956aa6179f9f0813393b7a9afa41a6d54a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1807,6 +1807,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -654,6 +764,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -653,6 +763,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.entityData = datawatcher_a.build(); this.setPos(0.0D, 0.0D, 0.0D); this.eyeHeight = this.dimensions.eyeHeight(); @@ -337,7 +337,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae } public boolean isColliding(BlockPos pos, BlockState state) { -@@ -2592,6 +2703,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2591,6 +2702,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -349,7 +349,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2739,6 +2855,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2738,6 +2854,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -361,7 +361,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -4944,6 +5065,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4949,6 +5070,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper end - rewrite chunk system CraftEventFactory.callEntityRemoveEvent(this, cause); // CraftBukkit end @@ -374,7 +374,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae if (this.removalReason == null) { this.removalReason = entity_removalreason; diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 3e80788374f03269067137582f6b6816821f7cac..f3c0e3efdcdda4f9772499a7fdc78f0046e89a16 100644 +index 86e12495ce807ba06210535350caa7db5e15d139..a148befad883e5d524dcf643690f80a0bfd079e5 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -133,6 +133,59 @@ public class FallingBlockEntity extends Entity { @@ -446,7 +446,7 @@ index 3e80788374f03269067137582f6b6816821f7cac..f3c0e3efdcdda4f9772499a7fdc78f00 ((ServerLevel) this.level()).getChunkSource().chunkMap.broadcast(this, new ClientboundBlockUpdatePacket(blockposition, this.level().getBlockState(blockposition))); this.discard(EntityRemoveEvent.Cause.DESPAWN); diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index a2e8a95ba53953192db1889c686c507321666b03..1860ffd3e11601983abbb85962dd9ef56992c9f5 100644 +index 16340c2f8a948136c9fe0b2314c9ec7cbee74937..dc9d72bc033735dd83d7b0f3fe79d0a51b9661ab 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -70,6 +70,44 @@ public class PrimedTnt extends Entity implements TraceableEntity { @@ -503,16 +503,16 @@ index a2e8a95ba53953192db1889c686c507321666b03..1860ffd3e11601983abbb85962dd9ef5 this.explode(); } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a2a2747dbddb819cfd7d29a552824d9d88fca744..1b14de4b22bd6f7103be55af20df6f5d7a149e0b 100644 +index 829a21a6da2de36f38cae9e1a3920fcc732eac0e..557472039d6451d5a8471ff56609ce49620d30df 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -226,6 +226,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -218,6 +218,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api + public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging - 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java index 1359d25a32b4a5d5e8e68ce737bd19f7b5afaf69..0afa2cfb04b5097788927076669e85fe24041df9 100644 diff --git a/patches/server/0019-Replace-explosion-density-cache.patch b/patches/server/0019-Replace-explosion-density-cache.patch index 4effc6a..abf554c 100644 --- a/patches/server/0019-Replace-explosion-density-cache.patch +++ b/patches/server/0019-Replace-explosion-density-cache.patch @@ -129,11 +129,11 @@ index 0000000000000000000000000000000000000000..d7e24638f07f243502004970ab4ce646 + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2db7dee8589425c805b148ef46827ce88ec38c4e..69b972a5b1ad62f1cfa759fd2e0d371a8745539b 100644 +index 054783956aa6179f9f0813393b7a9afa41a6d54a..6cf33610cb6740ad3192d0180cccf17be761730f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1808,6 +1808,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot diff --git a/src/main/java/net/minecraft/world/level/block/BasePressurePlateBlock.java b/src/main/java/net/minecraft/world/level/block/BasePressurePlateBlock.java index 8b33e35c843e5c0b8988a2ef2a38a2673035292f..5ec557652558bb44e9be7d32fc214091d29aac78 100644 diff --git a/patches/server/0021-Specialised-Explosions.patch b/patches/server/0021-Specialised-Explosions.patch index cd0641b..c5f0e81 100644 --- a/patches/server/0021-Specialised-Explosions.patch +++ b/patches/server/0021-Specialised-Explosions.patch @@ -421,7 +421,7 @@ index 0000000000000000000000000000000000000000..13d87b08b1e12f7b5a6f59f545a4620c + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a9cfdbd7d138763584ee3d2825fe6979241422db..3ca19140d8c7b28f73e80dcdbfd60536d74886ff 100644 +index ada18c755cee73620e6c0020674dd0a5a1d8f79d..00259cc930a0b1db38c3abbb5fcf7430d5f50079 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1964,6 +1964,12 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -447,7 +447,7 @@ index a9cfdbd7d138763584ee3d2825fe6979241422db..3ca19140d8c7b28f73e80dcdbfd60536 @Override diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index 1860ffd3e11601983abbb85962dd9ef56992c9f5..f8e19ca5af5b313e887ce8b428e32a84a26a8927 100644 +index dc9d72bc033735dd83d7b0f3fe79d0a51b9661ab..6cfa54da058939003576025cb0512e0bcc3e715b 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -84,28 +84,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { @@ -481,7 +481,7 @@ index 1860ffd3e11601983abbb85962dd9ef56992c9f5..f8e19ca5af5b313e887ce8b428e32a84 @Override diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index d7e8dd148098de080c5bc0f76b36207501e1089f..7de806ca3b923e657187b185b492f8e64a850b24 100644 +index d74a44ce3705d72cd7168ed4e9630ed580d5a967..ba2588188e15806052d52dca62547c8a6d3a2152 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -56,9 +56,11 @@ public class Explosion { @@ -574,10 +574,10 @@ index d7e8dd148098de080c5bc0f76b36207501e1089f..7de806ca3b923e657187b185b492f8e6 float blockDensity = this.level.densityCache.getDensity(vec3d, entity); if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e53f3b508eba942a6d61c1ad678ff0f5793c3f73..4553c252d3dd0a9413319a7a5dd5cce201b0fa72 100644 +index d41086a80ea03855fde694947fa61f2d48eaa114..507d676c58daf2297eb729543a7f86c896a984d6 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1415,7 +1415,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1407,7 +1407,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } Explosion.BlockInteraction explosion_effect1 = explosion_effect; diff --git a/patches/server/0022-Optimise-Fast-Movement.patch b/patches/server/0022-Optimise-Fast-Movement.patch index 558e0c5..810dcda 100644 --- a/patches/server/0022-Optimise-Fast-Movement.patch +++ b/patches/server/0022-Optimise-Fast-Movement.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise Fast Movement diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f08a3969c85f4ca1470c6fe9bcc3b4ae0e6920a3..b1e7a7ae0dd262172407e8986e5f4e4d144669c8 100644 +index 88964adf81cd03b26556b50b764caaddd49b59be..e689173f44a06ad320740dab2eceda5ff0e68fe2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1277,6 +1277,95 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1276,6 +1276,95 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Paper end - detailed watchdog information @@ -104,7 +104,7 @@ index f08a3969c85f4ca1470c6fe9bcc3b4ae0e6920a3..b1e7a7ae0dd262172407e8986e5f4e4d public void move(MoverType movementType, Vec3 movement) { final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity // Paper start - detailed watchdog information -@@ -1655,6 +1744,95 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1654,6 +1743,95 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return offsetFactor; } @@ -201,7 +201,7 @@ index f08a3969c85f4ca1470c6fe9bcc3b4ae0e6920a3..b1e7a7ae0dd262172407e8986e5f4e4d // Paper start - optimise collisions final boolean xZero = movement.x == 0.0; diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index f3c0e3efdcdda4f9772499a7fdc78f0046e89a16..ee38d2a82f9f0056ebb6579868df8c4709cd7b41 100644 +index a148befad883e5d524dcf643690f80a0bfd079e5..eec86ec7088079f31a5348089f47f29e7a1adaa8 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -200,7 +200,7 @@ public class FallingBlockEntity extends Entity { @@ -214,7 +214,7 @@ index f3c0e3efdcdda4f9772499a7fdc78f0046e89a16..ee38d2a82f9f0056ebb6579868df8c47 if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) { if (this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index f8e19ca5af5b313e887ce8b428e32a84a26a8927..85b2cfd067c71eed3a5a8007ed6e933e9609f94d 100644 +index 6cfa54da058939003576025cb0512e0bcc3e715b..d3073a058e4d200b0146d7b72ef3cd56a6a1d8d8 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -96,7 +96,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { diff --git a/patches/server/0023-Limited-Get-Entities.patch b/patches/server/0023-Limited-Get-Entities.patch index eb20f5f..d13fb46 100644 --- a/patches/server/0023-Limited-Get-Entities.patch +++ b/patches/server/0023-Limited-Get-Entities.patch @@ -329,46 +329,46 @@ index 8fcaa00e461c7f4413bf655ddd8165a2b908f900..404b99def4562942e036089085a66797 if (this.count == 0) { return; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 4553c252d3dd0a9413319a7a5dd5cce201b0fa72..1a150fc2e875860ed25dcda99394c8809d87bb04 100644 +index 507d676c58daf2297eb729543a7f86c896a984d6..d041ad1e52c78c553da4d92745d2b07fc3eab522 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -229,6 +229,39 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -221,6 +221,39 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache + // Sakura start - add entity retrival methods with search limits -+ public void getLimitedEntities(Entity except, AABB box, Predicate predicate, List into, int limit, int search) { ++ public final void getLimitedEntities(Entity except, AABB box, Predicate predicate, List into, int limit, int search) { + ((ServerLevel)this).getEntityLookup().getLimitedEntities(except, box, into, predicate, limit, search); + } + -+ public List getLimitedEntities(net.minecraft.world.entity.EntityType filter, AABB box, Predicate predicate, int limit, int search) { ++ public final List getLimitedEntities(net.minecraft.world.entity.EntityType filter, AABB box, Predicate predicate, int limit, int search) { + List ret = new java.util.ArrayList<>(); + ((ServerLevel)this).getEntityLookup().getLimitedEntities(filter, box, ret, predicate, limit, search); + return ret; + } + -+ public void getLimitedEntitiesByClass(Class clazz, Entity except, final AABB box, List into, ++ public final void getLimitedEntitiesByClass(Class clazz, Entity except, final AABB box, List into, + Predicate predicate, int limit, int search) { + ((ServerLevel)this).getEntityLookup().getLimitedEntities((Class)clazz, except, box, (List)into, (Predicate)predicate, limit, search); + } + -+ public List getLimitedEntitiesOfClass(Class entityClass, AABB box, Predicate predicate, int limit, int search) { ++ public final List getLimitedEntitiesOfClass(Class entityClass, AABB box, Predicate predicate, int limit, int search) { + List ret = new java.util.ArrayList<>(); + ((ServerLevel)this).getEntityLookup().getLimitedEntities(entityClass, null, box, ret, predicate, limit, search); + return ret; + } + -+ public List getLimitedEntities(@Nullable Entity except, AABB box, Predicate predicate, int limit, int search) { ++ public final List getLimitedEntities(@Nullable Entity except, AABB box, Predicate predicate, int limit, int search) { + List list = Lists.newArrayList(); + getLimitedEntities(except, box, predicate, list, limit, search); + return list; + } + -+ public List getLimitedEntities(@Nullable Entity except, AABB box, int limit, int search) { ++ public final List getLimitedEntities(@Nullable Entity except, AABB box, int limit, int search) { + return this.getLimitedEntities(except, box, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS, limit, search); + } + // Sakura end - add entity retrival methods with search limits + - 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config diff --git a/patches/server/0024-isPushedByFluid-API.patch b/patches/server/0024-isPushedByFluid-API.patch index cf185ee..290201e 100644 --- a/patches/server/0024-isPushedByFluid-API.patch +++ b/patches/server/0024-isPushedByFluid-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] isPushedByFluid API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b1e7a7ae0dd262172407e8986e5f4e4d144669c8..8f58e0989b536e670766d82a873d1fb0581a3492 100644 +index e689173f44a06ad320740dab2eceda5ff0e68fe2..cef9b3f34e13fb1b6b80179e12dfb1e03d66e39a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -715,6 +715,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -714,6 +714,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } // Sakura end - cannon entity merging @@ -16,7 +16,7 @@ index b1e7a7ae0dd262172407e8986e5f4e4d144669c8..8f58e0989b536e670766d82a873d1fb0 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -4300,7 +4301,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4305,7 +4306,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean isPushedByFluid() { diff --git a/patches/server/0027-Optimise-TNT-fluid-state-and-pushing.patch b/patches/server/0027-Optimise-TNT-fluid-state-and-pushing.patch index 84948a6..2c0e9d2 100644 --- a/patches/server/0027-Optimise-TNT-fluid-state-and-pushing.patch +++ b/patches/server/0027-Optimise-TNT-fluid-state-and-pushing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise TNT fluid state and pushing diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8f58e0989b536e670766d82a873d1fb0581a3492..b9d91310268088b43c432e7fb4d669cc9ddae527 100644 +index cef9b3f34e13fb1b6b80179e12dfb1e03d66e39a..e8b850b0608e8d876f0f3415880e4f90ca3b9d85 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2257,7 +2257,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2256,7 +2256,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -18,7 +18,7 @@ index 8f58e0989b536e670766d82a873d1fb0581a3492..b9d91310268088b43c432e7fb4d669cc if (entity instanceof Boat entityboat) { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index 469bc508416ae44546c655a23d9bc2572078ccb5..bfe1b2debf94c54f923daf81ad51a7e9ca92d3d1 100644 +index 8760cfe061e33ac257c5fcf9c0833ba5b470d95b..9d0d73ef60a739d37e2678f9e80398f9f33f6207 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -92,6 +92,19 @@ public class PrimedTnt extends Entity implements TraceableEntity { diff --git a/patches/server/0031-Explosion-Durable-Blocks.patch b/patches/server/0031-Explosion-Durable-Blocks.patch index b3b19df..5cc936a 100644 --- a/patches/server/0031-Explosion-Durable-Blocks.patch +++ b/patches/server/0031-Explosion-Durable-Blocks.patch @@ -74,10 +74,10 @@ index 0000000000000000000000000000000000000000..c58e52f7cc012babf4235e405e5fb501 + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 69b972a5b1ad62f1cfa759fd2e0d371a8745539b..48f13cd41f68570b3b70e013ced3374bea251601 100644 +index 6cf33610cb6740ad3192d0180cccf17be761730f..786a08850dcb31dc1d08b16391e40914bb4c6235 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1809,6 +1809,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop predicate, List into, int limit, int search) { + public final void getLimitedEntities(Entity except, AABB box, Predicate predicate, List into, int limit, int search) { diff --git a/patches/server/0033-Cache-Vanillia-and-Eigen-Redstone.patch b/patches/server/0033-Cache-Vanillia-and-Eigen-Redstone.patch index a0d809e..c577320 100644 --- a/patches/server/0033-Cache-Vanillia-and-Eigen-Redstone.patch +++ b/patches/server/0033-Cache-Vanillia-and-Eigen-Redstone.patch @@ -341,10 +341,10 @@ index 0000000000000000000000000000000000000000..c4150b062ee1a15f1938fea2da926699 + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 48f13cd41f68570b3b70e013ced3374bea251601..303d01e2861b960fd7e592c196944e3cd759f4f4 100644 +index 786a08850dcb31dc1d08b16391e40914bb4c6235..1a6466d655f981b19bbcaa3ff1724a8d99044289 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1810,6 +1810,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop predicate, List into, int limit, int search) { -@@ -1002,6 +1003,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + public final void getLimitedEntities(Entity except, AABB box, Predicate predicate, List into, int limit, int search) { +@@ -994,6 +995,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } else { BlockState iblockdata2 = this.getBlockState(pos); diff --git a/patches/server/0041-Configure-cannon-physics-by-version.patch b/patches/server/0041-Configure-cannon-physics-by-version.patch index 33050bc..dccbaa5 100644 --- a/patches/server/0041-Configure-cannon-physics-by-version.patch +++ b/patches/server/0041-Configure-cannon-physics-by-version.patch @@ -107,10 +107,10 @@ index 13d87b08b1e12f7b5a6f59f545a4620cacae22ba..4ad106f15b73ce0657a34a17a3341bf3 protected void startExplosion() { for (int i = this.calculateExplosionPotential() - 1; i >= 0; --i) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959b02ef10a 100644 +index e8b850b0608e8d876f0f3415880e4f90ca3b9d85..8c508df03a80d7f8fbb1bc50067f84090457511f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -382,7 +382,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -381,7 +381,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private final double[] pistonDeltas; private long pistonDeltasGameTime; private EntityDimensions dimensions; @@ -119,7 +119,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 public boolean isInPowderSnow; public boolean wasInPowderSnow; public boolean wasOnFire; -@@ -716,6 +716,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -715,6 +715,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Sakura end - cannon entity merging public boolean pushedByFluid = true; // Sakura - entity pushed by fluid api @@ -133,7 +133,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -1223,7 +1230,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1222,7 +1229,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } protected void checkSupportingBlock(boolean onGround, @Nullable Vec3 movement) { @@ -142,7 +142,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 AABB axisalignedbb = this.getBoundingBox(); AABB axisalignedbb1 = new AABB(axisalignedbb.minX, axisalignedbb.minY - 1.0E-6D, axisalignedbb.minZ, axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); Optional optional = this.level.findSupportingBlock(this, axisalignedbb1); -@@ -1285,7 +1292,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1284,7 +1291,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.noPhysics) { this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); } else { @@ -151,7 +151,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 movement = this.limitPistonMovement(movement); if (movement.equals(Vec3.ZERO)) { return; -@@ -1303,10 +1310,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1302,10 +1309,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Vec3 vec3d1 = this.collideScan(movement); double d0 = vec3d1.lengthSqr(); @@ -164,7 +164,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 BlockHitResult movingobjectpositionblock = this.level().clip(new ClipContext(this.position(), this.position().add(vec3d1), ClipContext.Block.FALLDAMAGE_RESETTING, ClipContext.Fluid.WATER, this)); if (movingobjectpositionblock.getType() != HitResult.Type.MISS) { -@@ -1342,6 +1349,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1341,6 +1348,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); @@ -177,7 +177,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 this.setDeltaMovement(flag ? 0.0D : vec3d2.x, vec3d2.y, flag1 ? 0.0D : vec3d2.z); } -@@ -1383,7 +1396,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1382,7 +1395,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); } else { this.wasOnFire = this.isOnFire(); @@ -186,7 +186,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 this.activatedTick = Math.max(this.activatedTick, MinecraftServer.currentTick + 20); // Paper this.activatedImmunityTick = Math.max(this.activatedImmunityTick, MinecraftServer.currentTick + 20); // Paper movement = this.limitPistonMovement(movement); -@@ -1410,8 +1423,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1409,8 +1422,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Vec3 vec3d1 = this.collide(movement); double d0 = vec3d1.lengthSqr(); @@ -197,7 +197,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 BlockHitResult movingobjectpositionblock = this.level().clip(new ClipContext(this.position(), this.position().add(vec3d1), ClipContext.Block.FALLDAMAGE_RESETTING, ClipContext.Fluid.WATER, this)); if (movingobjectpositionblock.getType() != HitResult.Type.MISS) { -@@ -1447,6 +1460,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1446,6 +1459,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); @@ -210,7 +210,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 this.setDeltaMovement(flag ? 0.0D : vec3d2.x, vec3d2.y, flag1 ? 0.0D : vec3d2.z); } -@@ -1761,7 +1780,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1760,7 +1779,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } else { final AABB bb = currBoundingBox.expandTowards(movement.x, movement.y, movement.z); collectCollisions(bb, potentialCollisionsVoxel, potentialCollisionsBB); @@ -219,7 +219,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 } } -@@ -1770,7 +1789,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1769,7 +1788,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess double y = movement.y; double z = movement.z; @@ -231,7 +231,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 if (y != 0.0) { y = scanY(currBoundingBox, y, voxelList, bbList); -@@ -1886,7 +1908,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1885,7 +1907,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return movement; } @@ -240,7 +240,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959 if (stepHeight > 0.0 && (onGround || (limitedMoveVector.y != movement.y && movement.y < 0.0)) -@@ -2002,8 +2024,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2001,8 +2023,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess protected void checkInsideBlocks() { AABB axisalignedbb = this.getBoundingBox(); @@ -481,7 +481,7 @@ index df2a37e57012333a618937e61cb5a99c3ef4a0f9..62d40333c42f673479db5e6312343161 // Paper end - Option to prevent TNT from moving in water } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index f7e01cb367b5b75f1f267d727b539066845d6e14..c5db31bd92a441eccd0f4c5ea1b8c7f17a00de65 100644 +index a0b818a52a54fca9eb433d361149e3ab1ce5835b..a636dd7776c378b450ed0fab91e748f423671a9b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -76,6 +76,7 @@ public class Explosion { @@ -574,10 +574,10 @@ index f7e01cb367b5b75f1f267d727b539066845d6e14..c5db31bd92a441eccd0f4c5ea1b8c7f1 private final Level world; private final double posX, posY, posZ; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9060ce8bcbb82eea6bfa84180a887c04f0137ef5..3f94145e27b7f4a385da77c72821cd5fa5561aa9 100644 +index ef37c34036bc79505786ee38ab5472a45effa4a3..6f7aa220d13a1135dde24012544bf3b978af7e50 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -263,6 +263,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -255,6 +255,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return this.getLimitedEntities(except, box, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS, limit, search); } // Sakura end - add entity retrival methods with search limits @@ -781,7 +781,7 @@ index 9060ce8bcbb82eea6bfa84180a887c04f0137ef5..3f94145e27b7f4a385da77c72821cd5f + } + // Sakura end - physics version api - 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // 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, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura - sakura configuration files // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot diff --git a/src/main/java/net/minecraft/world/level/block/FallingBlock.java b/src/main/java/net/minecraft/world/level/block/FallingBlock.java index 1ea1232a5ba3e48eef3a139d6487c9a190155ebd..71364fe94cfeefa07fac3ee6359f7abd9bb58106 100644 diff --git a/patches/server/0047-Treat-all-collidable-blocks-as-full-while-moving-fas.patch b/patches/server/0047-Treat-all-collidable-blocks-as-full-while-moving-fas.patch index cc22209..00d98fd 100644 --- a/patches/server/0047-Treat-all-collidable-blocks-as-full-while-moving-fas.patch +++ b/patches/server/0047-Treat-all-collidable-blocks-as-full-while-moving-fas.patch @@ -59,10 +59,10 @@ index 8014ebfb391825c31d9d1b39f5304a7e76b1ee44..d58d1fb1148db13c5d24422a1553e0b8 AABB singleAABB = blockCollision.getSingleAABBRepresentation(); if (singleAABB != null) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4f4f7b18edeb67e339f268dc97b225dd9f9a82b3..0401e0df0ba5566db783bce4df873c63808ae68c 100644 +index 8c508df03a80d7f8fbb1bc50067f84090457511f..b4977a8b97f5417883cf3ffab5f89d98a6a6079b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -583,6 +583,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -582,6 +582,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess flags |= io.papermc.paper.util.CollisionUtil.COLLISION_FLAG_LOAD_CHUNKS | io.papermc.paper.util.CollisionUtil.COLLISION_FLAG_ADD_TICKET; } diff --git a/patches/server/0058-Optimise-check-inside-blocks-and-fluids.patch b/patches/server/0058-Optimise-check-inside-blocks-and-fluids.patch index 25f035e..8a5726a 100644 --- a/patches/server/0058-Optimise-check-inside-blocks-and-fluids.patch +++ b/patches/server/0058-Optimise-check-inside-blocks-and-fluids.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise check inside blocks and fluids diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9f62d36ab4dc2400e59d4043688d38e4f27b68cd..f82104948e7799c9a09dbde6f14c45418ebe98de 100644 +index b4977a8b97f5417883cf3ffab5f89d98a6a6079b..894604b23d7f3749cbaa767705f63b21beea4fde 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2038,18 +2038,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2037,18 +2037,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess BlockPos blockposition1 = BlockPos.containing(axisalignedbb.maxX - offset, axisalignedbb.maxY - offset, axisalignedbb.maxZ - offset); // Sakura end @@ -50,7 +50,7 @@ index 9f62d36ab4dc2400e59d4043688d38e4f27b68cd..f82104948e7799c9a09dbde6f14c4541 try { iblockdata.entityInside(this.level(), blockposition_mutableblockposition, this); -@@ -4852,7 +4871,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4857,7 +4876,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -59,7 +59,7 @@ index 9f62d36ab4dc2400e59d4043688d38e4f27b68cd..f82104948e7799c9a09dbde6f14c4541 return false; } else { AABB axisalignedbb = this.getBoundingBox().deflate(0.001D); -@@ -4869,11 +4888,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4874,11 +4893,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); diff --git a/patches/server/0059-Fix-paper-findSupportingBlock-not-updating-last-chun.patch b/patches/server/0059-Fix-paper-findSupportingBlock-not-updating-last-chun.patch index 929aac6..48a960b 100644 --- a/patches/server/0059-Fix-paper-findSupportingBlock-not-updating-last-chun.patch +++ b/patches/server/0059-Fix-paper-findSupportingBlock-not-updating-last-chun.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix paper findSupportingBlock not updating last chunk diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 3f94145e27b7f4a385da77c72821cd5fa5561aa9..e22488d017263b1105d4361fd9f744ca642b21e7 100644 +index 6f7aa220d13a1135dde24012544bf3b978af7e50..5eda4a84b51bb0fd9ca3ba4ca1666792b6e23a05 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -889,6 +889,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -881,6 +881,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (chunkDiff != 0) { lastChunk = chunkProvider.getChunkAtIfLoadedImmediately(newChunkX, newChunkZ); diff --git a/patches/server/0063-Add-entity-travel-distance-limits.patch b/patches/server/0063-Add-entity-travel-distance-limits.patch index 08f54e0..4402a30 100644 --- a/patches/server/0063-Add-entity-travel-distance-limits.patch +++ b/patches/server/0063-Add-entity-travel-distance-limits.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add entity travel distance limits diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3ca19140d8c7b28f73e80dcdbfd60536d74886ff..91f3850d68fc678ed8764cad35569ed87d423af7 100644 +index 00259cc930a0b1db38c3abbb5fcf7430d5f50079..8eafe75e69f5b448feea8354edacdb9f02981118 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1423,6 +1423,11 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -21,10 +21,10 @@ index 3ca19140d8c7b28f73e80dcdbfd60536d74886ff..91f3850d68fc678ed8764cad35569ed8 } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f82104948e7799c9a09dbde6f14c45418ebe98de..8faff2c1e20d4b62f9e60dd01832caf853b28191 100644 +index 894604b23d7f3749cbaa767705f63b21beea4fde..24f86d6adbaf295a42a7740ac17b59de95a22431 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -731,6 +731,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -730,6 +730,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.physics; } // Sakura end - physics version api @@ -44,7 +44,7 @@ index f82104948e7799c9a09dbde6f14c45418ebe98de..8faff2c1e20d4b62f9e60dd01832caf8 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -781,6 +794,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -780,6 +793,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(0.0D, 0.0D, 0.0D); this.eyeHeight = this.dimensions.eyeHeight(); this.mergeLevel = level.sakuraConfig().cannons.mergeLevel; // Sakura diff --git a/patches/server/0068-Fix-block-placement-causing-physics-when-cancelled.patch b/patches/server/0068-Fix-block-placement-causing-physics-when-cancelled.patch deleted file mode 100644 index 72f2d6f..0000000 --- a/patches/server/0068-Fix-block-placement-causing-physics-when-cancelled.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samsuik -Date: Tue, 14 May 2024 19:26:58 +0100 -Subject: [PATCH] Fix block placement causing physics when cancelled - - -diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 893efb2c4a07c33d41e934279dd914a9dbd4ef79..4c10a4213a5aa2b1e6884eee98568599f97f37dc 100644 ---- a/src/main/java/net/minecraft/world/item/ItemStack.java -+++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -473,9 +473,16 @@ public final class ItemStack implements DataComponentHolder { - world.capturedTileEntities.clear(); // Paper - Allow chests to be placed with NBT data; clear out block entities as chests and such will pop loot - // revert back all captured blocks - world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 -+ // Sakura start - fix placement causing physics when event is cancelled -+ world.preventNeighborUpdates = true; -+ try { - for (BlockState blockstate : blocks) { - blockstate.update(true, false); - } -+ } finally { -+ world.preventNeighborUpdates = false; -+ } -+ // Sakura end - fix placement causing physics when event is cancelled - world.preventPoiUpdated = false; - - // Brute force all possible updates -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e22488d017263b1105d4361fd9f744ca642b21e7..4d7955e5624b065d1e15ab561d1c3de0ac5bcb92 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -147,6 +147,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - public boolean pvpMode; - public org.bukkit.generator.ChunkGenerator generator; - -+ public boolean preventNeighborUpdates = false; // Sakura - fix placement causing physics when event is cancelled - public boolean preventPoiUpdated = false; // CraftBukkit - SPIGOT-5710 - public boolean captureBlockStates = false; - public boolean captureTreeGeneration = false; -diff --git a/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java b/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java -index 337d2c020acf0565401d21bce3ba701c0da0ad99..c28545c4109f3da861eabe8f20c2d313143f4f12 100644 ---- a/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java -@@ -498,7 +498,7 @@ public class RedStoneWireBlock extends Block { - - @Override - protected void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { -- if (!moved && !state.is(newState.getBlock())) { -+ if (!moved && !state.is(newState.getBlock()) && !world.preventNeighborUpdates) { // Sakura - fix placement causing physics when event is cancelled - super.onRemove(state, world, pos, newState, moved); - if (!world.isClientSide) { - Direction[] aenumdirection = Direction.values(); -diff --git a/src/main/java/net/minecraft/world/level/redstone/NeighborUpdater.java b/src/main/java/net/minecraft/world/level/redstone/NeighborUpdater.java -index e679b40b9628b0eb7152978ef641f9c918c4c8b2..f095b51b5805d72373644ebe04332321e28b5468 100644 ---- a/src/main/java/net/minecraft/world/level/redstone/NeighborUpdater.java -+++ b/src/main/java/net/minecraft/world/level/redstone/NeighborUpdater.java -@@ -52,6 +52,7 @@ public interface NeighborUpdater { - - static void executeUpdate(Level world, BlockState state, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { - try { -+ if (world.preventNeighborUpdates) { return; } // Sakura - fix placement causing physics when event is cancelled - // CraftBukkit start - CraftWorld cworld = ((ServerLevel) world).getWorld(); - if (cworld != null) { diff --git a/patches/server/0069-Use-random-chance-for-crop-growth-instead-of-age.patch b/patches/server/0068-Use-random-chance-for-crop-growth-instead-of-age.patch similarity index 100% rename from patches/server/0069-Use-random-chance-for-crop-growth-instead-of-age.patch rename to patches/server/0068-Use-random-chance-for-crop-growth-instead-of-age.patch diff --git a/patches/server/0070-Protect-block-shapes-against-plugins.patch b/patches/server/0069-Protect-block-shapes-against-plugins.patch similarity index 100% rename from patches/server/0070-Protect-block-shapes-against-plugins.patch rename to patches/server/0069-Protect-block-shapes-against-plugins.patch