9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-22 08:19:26 +00:00

Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@9e51f94 Fix ping event always receiving protocol version 0 (#10671)
PaperMC/Paper@89ad61f Fix hopper pull event being skipped after the first call (#10667)
PaperMC/Paper@eee55d0 Correctly compare holders in BeaconMenu (#10673)
PaperMC/Paper@5729b29 Update Adventure to 4.17.0 Release
PaperMC/Paper@ab2a85a [ci skip] Clarify var entry in contributing file
PaperMC/Paper@f2512b1 Print data component type on encoding error
PaperMC/Paper@1b67e02 Fix entity tracker desync when new players are added to the tracker
PaperMC/Paper@cc29d2b Invalidate PathTypeCache when pathfinding updates are disabled
PaperMC/Paper@b56e92f Fix chunk data version check not running in chunk system
PaperMC/Paper@2df1dac Fix DataConverter ConverterParticleToNBT.parseProperties
PaperMC/Paper@8748ae1 Use MCDataConverter instead of raw convert call for cmd converter
PaperMC/Paper@7f1a154 Add validation to player profile and properties (#10680)
PaperMC/Paper@4fd58a1 Add conversion for summon command
PaperMC/Paper@39532a1 Fix stacks losing empty attr modifiers
PaperMC/Paper@cdb6ba8 Fix keepalive time interval (#10690)
PaperMC/Paper@a61d58d adjust ItemMeta to distinguish null and empty modifiers
PaperMC/Paper@6c02dbc handle recent ItemMeta changes in serialization logic
PaperMC/Paper@447f9a1 [ci skip] Fix paperclip PR label
PaperMC/Paper@b98d20a Brigadier Command Support (#8235)
PaperMC/Paper@ac554ad Updated Upstream (Bukkit/CraftBukkit) (#10691)
PaperMC/Paper@711f82e Fix signed book page serialization (#10696)
PaperMC/Paper@7e48f66 Properly pass requirement on namespaced redirects (#10701)
PaperMC/Paper@f041f48 Prevent infinite recursion on cyclic brig redirect (#10705)
PaperMC/Paper@11c3963 Improve Recipe validation (#10707)
PaperMC/Paper@0688f21 Better way to keep paper datapack enabled
PaperMC/Paper@218d33c fix creating complex recipes that have air results
PaperMC/Paper@fa8a407 Remove Adventure snapshot repo from dev bundle (#10716)
PaperMC/Paper@bebcc9c Make exception during command conversion non-fatal
PaperMC/Paper@2faa3b2 Correctly copy alias requirements in command upgrader
PaperMC/Paper@3fc9358 Show stacktrace when modifyItemStack fails
PaperMC/Paper@f175193 Expose server build information (#10729)
PaperMC/Paper@d8d59e0 Fix NPE sending resource pack without prompt
PaperMC/Paper@5a9afbe Fixes issues in the suppress dismount cancellation patch (#10735)
PaperMC/Paper@0ad09de Make PaperSimplePluginClassLoader show class which is not found
PaperMC/Paper@b3b3406 fix CompassMeta not being correct (#10737)
PaperMC/Paper@591521e Check for more correct profile validation (#10730)
PaperMC/Paper@7d2e5c3 Add an 'empty' RecipeChoice for certain ingredient slots (#10710)
PaperMC/Paper@9bf4855 Add a better warning message than "Server performance will be affected" for CommandRegisteredEvent use (#10754)
PaperMC/Paper@66cb880 Remove ThreadedWorldUpgrader patch
PaperMC/Paper@980cff9 Fix compile
PaperMC/Paper@d3ffa62 fix default item attributes
PaperMC/Paper@b149584 Always show command exception stack traces in logs (#10766)
PaperMC/Paper@a9201d4 [ci skip] Move logic in our patches to ItemType/BlockType (#10772)
PaperMC/Paper@3de408e Fix equipment slot and group API (#10767)
PaperMC/Paper@d408381 Print CommandRegisteredEvent deprecation warnings again (#10756)
PaperMC/Paper@6de7a1f Improve default item attributes API (#10765)
PaperMC/Paper@2a90732 Remove incorrect logic for Fireball#setVelocity (#10764)
PaperMC/Paper@5e7b65a Allow using PluginLoader classpath API from Bukkit plugins (#10758)
PaperMC/Paper@3004717 Do not re-wrap vanilla goals (#10751)
PaperMC/Paper@377733d Use getter/setter on Mob for equipment drop chances (#10780)
PaperMC/Paper@dff591d Allow to define new map cursor types (#10782)
PaperMC/Paper@4fd3ac0 [ci skip] Update Player#getListeningPluginChannels Jdoc (#10778)
PaperMC/Paper@535dca5 Fix a few issues with ItemMeta (#10740)
PaperMC/Paper@26e90b9 Fix CraftMetaBlockState for data components (#10731)
PaperMC/Paper@f0bd0cc Expose anvil cost in the API (#10682)
PaperMC/Paper@41bee55 Fix NPE for color-related metas
PaperMC/Paper@4e10fad reset meta block state on BlockStateMeta#setBlockState
PaperMC/Paper@a7ae966 readd itemstack data sanitization (#10454)
PaperMC/Paper@ca50b87 Clear firework item properly (#10793)
PaperMC/Paper@9774a52 fix and cleanup loot table patches (#10100)
PaperMC/Paper@ac4ee06 Fix integer overflow for lag compensating eating check (#10797)
PaperMC/Paper@6649a17 Fix BlockStateMeta equals (#10795)
PaperMC/Paper@1b8cdc6 Extend Player Interact cancellation to cover Jigsaw blocks (#10719)
PaperMC/Paper@841ab41 Fix more item desync when an event is cancelled (#10654)
PaperMC/Paper@b0e3ca4 Prevent NPE if hooked entity was cleared (#10712)
PaperMC/Paper@347bbe3 Fix Cancelling BlockPlaceEvent calling onRemove (#10773)
PaperMC/Paper@23fe116 Fix missing debug trace
PaperMC/Paper@b0c9b9c Only remove worldgen block entity on changed block (#10794)
PaperMC/Paper@9c917fe [ci skip] Clean up paperclip build-pr workflow (#10802)
PaperMC/Paper@9d6f2cc [ci skip] Rebuild patches (#10803)
This commit is contained in:
Samsuik
2024-05-28 20:28:26 +01:00
parent e3451dc38d
commit aed777ab2f
30 changed files with 225 additions and 341 deletions

View File

@@ -2,7 +2,7 @@ import io.papermc.paperweight.util.constants.PAPERCLIP_CONFIG
plugins { plugins {
java java
id("io.papermc.paperweight.patcher") version "1.6.3" id("io.papermc.paperweight.patcher") version "1.7.1"
} }
repositories { repositories {
@@ -22,12 +22,12 @@ subprojects {
apply(plugin = "java") apply(plugin = "java")
java { java {
toolchain { languageVersion.set(JavaLanguageVersion.of(21)) } toolchain { languageVersion = JavaLanguageVersion.of(21) }
} }
tasks.withType<JavaCompile>().configureEach { tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8" options.encoding = "UTF-8"
options.release.set(21) options.release = 21
} }
repositories { repositories {
@@ -39,23 +39,22 @@ subprojects {
maven("https://repo.md-5.net/content/repositories/releases/") maven("https://repo.md-5.net/content/repositories/releases/")
maven("https://hub.spigotmc.org/nexus/content/groups/public/") maven("https://hub.spigotmc.org/nexus/content/groups/public/")
maven("https://jitpack.io") maven("https://jitpack.io")
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") // TODO - Adventure snapshot
} }
} }
paperweight { paperweight {
serverProject.set(project(":sakura-server")) serverProject = project(":sakura-server")
remapRepo.set("https://maven.fabricmc.net/") remapRepo = "https://maven.fabricmc.net/"
decompileRepo.set("https://files.minecraftforge.net/maven/") decompileRepo = "https://files.minecraftforge.net/maven/"
usePaperUpstream(providers.gradleProperty("paperRef")) { usePaperUpstream(providers.gradleProperty("paperRef")) {
withPaperPatcher { withPaperPatcher {
apiPatchDir.set(layout.projectDirectory.dir("patches/api")) apiPatchDir = layout.projectDirectory.dir("patches/api")
apiOutputDir.set(layout.projectDirectory.dir("sakura-api")) apiOutputDir = layout.projectDirectory.dir("sakura-api")
serverPatchDir.set(layout.projectDirectory.dir("patches/server")) serverPatchDir = layout.projectDirectory.dir("patches/server")
serverOutputDir.set(layout.projectDirectory.dir("sakura-server")) serverOutputDir = layout.projectDirectory.dir("sakura-server")
} }
patchTasks.register("generatedApi") { patchTasks.register("generatedApi") {
isBareDirectory = true isBareDirectory = true

View File

@@ -2,7 +2,7 @@ group=me.samsuik.sakura
version=1.20.6-R0.1-SNAPSHOT version=1.20.6-R0.1-SNAPSHOT
mcVersion=1.20.6 mcVersion=1.20.6
paperRef=ac3a5471c8dcdc1d0431025781da1d524895c47a paperRef=9d6f2cced75c1a433c508ab531a61872bce73854
org.gradle.jvmargs=-Xmx2G org.gradle.jvmargs=-Xmx2G

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@@ -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 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 --- a/src/main/java/org/bukkit/Bukkit.java
+++ b/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 // Paper end
} }
+ // Sakura start - expose git info + // Sakura start - expose git info
+ @NotNull + @NotNull
+ public static String getGitInformation() { + public static String getGitInformation() {
+ final var manifest = JarManifests.manifest(Bukkit.getServer().getClass()); + final io.papermc.paper.ServerBuildInfo version = io.papermc.paper.ServerBuildInfo.buildInfo();
+ final String gitBranch = manifest == null ? null : manifest.getMainAttributes().getValue("Git-Branch"); + final String gitBranch = version.gitBranch().orElse("Dev");
+ final String gitCommit = manifest == null ? null : manifest.getMainAttributes().getValue("Git-Commit"); + final String gitCommit = version.gitCommit().orElse("");
+ String branchMsg = " on " + gitBranch; + String branchMsg = " on " + gitBranch;
+ if ("master".equals(gitBranch) || "main".equals(gitBranch)) { + if ("master".equals(gitBranch) || "main".equals(gitBranch)) {
+ branchMsg = ""; // Don't show branch on main/master + branchMsg = ""; // Don't show branch on main/master

View File

@@ -6,59 +6,50 @@ Subject: [PATCH] Branding changes
From ForkPaper. From ForkPaper.
diff --git a/build.gradle.kts b/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts
index 5d448d8a7cf6626a11791f30ad52baf41a099272..8096e25f2928ab1765dab3b393dd9dda01f1aad5 100644 index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..6d51c23912fe14bfda7539d4bb9b3457c5591e8b 100644
--- a/build.gradle.kts --- a/build.gradle.kts
+++ b/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 val alsoShade: Configuration by configurations.creating
dependencies { dependencies {
- implementation(project(":paper-api")) - implementation(project(":paper-api"))
- implementation(project(":paper-mojangapi")) + implementation(project(":sakura-api")) // Sakura
+ // 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
// Paper start // Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.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( attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main", "Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit", - "Implementation-Title" to "Paper",
- "Implementation-Version" to "git-Paper-$implementationVersion", + "Implementation-Title" to "Sakura", // Sakura
+ "Implementation-Version" to "git-Sakura-$implementationVersion", // Sakura "Implementation-Version" to implementationVersion,
"Implementation-Vendor" to date, // Paper "Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit", - "Specification-Title" to "Paper",
+ "Specification-Title" to "Sakura", // Sakura
"Specification-Version" to project.version, "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 "Specification-Vendor" to "Paper Team",
index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..db709ec011e2ad002c7b08cb7dd8ed8b84aeee37 100644 - "Brand-Id" to "papermc:paper",
--- a/src/main/java/net/minecraft/server/MinecraftServer.java - "Brand-Name" to "Paper",
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java + "Brand-Id" to "samsuik:sakura", // Sakura
@@ -1924,7 +1924,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa + "Brand-Name" to "Sakura", // Sakura
"Build-Number" to (build ?: ""),
"Build-Time" to Instant.now().toString(),
"Git-Branch" to gitBranch, // Paper
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
index 790bad0494454ca12ee152e3de6da3da634d9b20..57f9545e7d94365a1db175ef463fd71dcf508bfd 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
@@ -61,7 +61,7 @@ public record ServerBuildInfoImpl(
@DontObfuscate @Override
public String getServerModName() { public boolean isBrandCompatible(final @NotNull Key brandId) {
- return "Paper"; // Paper - return brandId.equals(this.brandId);
+ return "Sakura"; // Sakura // Paper + return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID); // Sakura
} }
public SystemReport fillSystemReport(SystemReport details) { @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 57db399bc1d3b6b015740b059987bc8d9bcc3101..6d01828434b8dce0359fe2a37b450e0aae916e3b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -268,7 +268,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
- private final String serverName = "Paper"; // Paper
+ private final String serverName = "Sakura"; // Sakura // Paper
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 774556a62eb240da42e84db4502e2ed43495be17..1941fd2dbdc7a10ddf17e2543a038dbd7fe8c88c 100644 index 774556a62eb240da42e84db4502e2ed43495be17..1941fd2dbdc7a10ddf17e2543a038dbd7fe8c88c 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Sakura Configuration Files
diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java
index 96142deb42700f888ea08689ab62c27ef2b881fd..87f4320a29506417d29e83b06245a3d4edcbb383 100644 index 96142deb42700f888ea08689ab62c27ef2b881fd..92bbebf2d09225ac67685bec1a724f1d3ae25fe9 100644
--- a/src/main/java/io/papermc/paper/configuration/Configurations.java --- a/src/main/java/io/papermc/paper/configuration/Configurations.java
+++ b/src/main/java/io/papermc/paper/configuration/Configurations.java +++ b/src/main/java/io/papermc/paper/configuration/Configurations.java
@@ -96,7 +96,7 @@ public abstract class Configurations<G, W> { @@ -96,7 +96,7 @@ public abstract class Configurations<G, W> {
@@ -13,7 +13,7 @@ index 96142deb42700f888ea08689ab62c27ef2b881fd..87f4320a29506417d29e83b06245a3d4
} }
- static <T> CheckedFunction<ConfigurationNode, T, SerializationException> reloader(Class<T> type, T instance) { - static <T> CheckedFunction<ConfigurationNode, T, SerializationException> reloader(Class<T> type, T instance) {
+ public static <T> CheckedFunction<ConfigurationNode, T, SerializationException> reloader(Class<T> type, T instance) { // Sakura - public + public static <T> CheckedFunction<ConfigurationNode, T, SerializationException> reloader(Class<T> type, T instance) { // Sakura - package-protected -> public
return node -> { return node -> {
ObjectMapper.Factory factory = (ObjectMapper.Factory) Objects.requireNonNull(node.options().serializers().get(type)); ObjectMapper.Factory factory = (ObjectMapper.Factory) Objects.requireNonNull(node.options().serializers().get(type));
ObjectMapper.Mutable<T> mutable = (ObjectMapper.Mutable<T>) factory.get(type); ObjectMapper.Mutable<T> mutable = (ObjectMapper.Mutable<T>) factory.get(type);
@@ -27,7 +27,7 @@ index 96142deb42700f888ea08689ab62c27ef2b881fd..87f4320a29506417d29e83b06245a3d4
} else { } else {
this.verifyWorldConfigVersion(contextMap, worldNode); 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 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 --- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
+++ b/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<GlobalConfiguration, Wor @@ -457,7 +457,7 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
@@ -35,52 +35,10 @@ index 83a726bcf8b7dce73a361b0d79dbd63a0afc7a12..d43267fe2718b6016fe44c3bbf8196f8
// Symlinks are not correctly checked in createDirectories // Symlinks are not correctly checked in createDirectories
- static void createDirectoriesSymlinkAware(Path path) throws IOException { - static void createDirectoriesSymlinkAware(Path path) throws IOException {
+ public static void createDirectoriesSymlinkAware(Path path) throws IOException { // Sakura - make public + public static void createDirectoriesSymlinkAware(Path path) throws IOException { // Sakura - package-protected -> public
if (!Files.isDirectory(path)) { if (!Files.isDirectory(path)) {
Files.createDirectories(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<Map<Field, Object>> {
+public final class InnerClassInstanceFactory implements FieldDiscoverer.MutableInstanceFactory<Map<Field, Object>> { // Sakura
private final InnerClassInstanceSupplier instanceSupplier;
private final FieldDiscoverer.MutableInstanceFactory<Map<Field, Object>> fallback;
private final AnnotatedType targetType;
- InnerClassInstanceFactory(final InnerClassInstanceSupplier instanceSupplier, final FieldDiscoverer.MutableInstanceFactory<Map<Field, Object>> fallback, final AnnotatedType targetType) {
+ public InnerClassInstanceFactory(final InnerClassInstanceSupplier instanceSupplier, final FieldDiscoverer.MutableInstanceFactory<Map<Field, Object>> 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<AnnotatedType, @Nullable Supplier<Object>, SerializationException> {
+public final class InnerClassInstanceSupplier implements CheckedFunction<AnnotatedType, @Nullable Supplier<Object>, SerializationException> { // Sakua - :<
private final Map<Class<?>, Object> instanceMap = new HashMap<>();
private final Map<Class<?>, Object> initialOverrides;
@@ -27,7 +27,7 @@ final class InnerClassInstanceSupplier implements CheckedFunction<AnnotatedType,
/**
* @param initialOverrides map of types to objects to preload the config objects with.
*/
- InnerClassInstanceSupplier(final Map<Class<?>, Object> initialOverrides) {
+ public InnerClassInstanceSupplier(final Map<Class<?>, 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 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 new file mode 100644
index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98d6999c7f index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98d6999c7f
@@ -1033,10 +991,10 @@ index 0000000000000000000000000000000000000000..4024f9738e039ffffd560a07a2210f75
+public record DurableMaterial(int durability, float resistance) { +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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public final double[] recentTps = new double[ 3 ]; public final double[] recentTps = new double[ 3 ];
// Spigot end // Spigot end
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files
@@ -1044,7 +1002,7 @@ index db709ec011e2ad002c7b08cb7dd8ed8b84aeee37..91d3224cb30f62008a116fa4f913b069
public static long currentTickLong = 0L; // Paper - track current tick as a long public static long currentTickLong = 0L; // Paper - track current tick as a long
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
@@ -422,6 +423,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -418,6 +419,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
Runtime.getRuntime().addShutdownHook(new org.bukkit.craftbukkit.util.ServerShutdownThread(this)); Runtime.getRuntime().addShutdownHook(new org.bukkit.craftbukkit.util.ServerShutdownThread(this));
// CraftBukkit end // CraftBukkit end
this.paperConfigurations = services.paperConfigurations(); // Paper - add paper configuration files this.paperConfigurations = services.paperConfigurations(); // Paper - add paper configuration files
@@ -1056,23 +1014,23 @@ index db709ec011e2ad002c7b08cb7dd8ed8b84aeee37..91d3224cb30f62008a116fa4f913b069
private void readScoreboard(DimensionDataStorage persistentStateManager) { private void readScoreboard(DimensionDataStorage persistentStateManager) {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..4af33141f6c9169a016978cf74dc2d33ebd011e8 100644 index 2eb9c584cc77237f1c82d880a51a3f8b51008d73..fbbd168198459d9d4d84c2554558453c63b2c2f4 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -234,6 +234,11 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -233,6 +233,11 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider + // Sakura start - sakura configuration files
+ // Sakura start
+ sakuraConfigurations.initializeGlobalConfiguration(this.registryAccess()); + sakuraConfigurations.initializeGlobalConfiguration(this.registryAccess());
+ sakuraConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); + sakuraConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
+ me.samsuik.sakura.command.SakuraCommands.registerCommands(this); + me.samsuik.sakura.command.SakuraCommands.registerCommands(this);
+ // Sakura end + // Sakura end - sakura configuration files
this.setPvpAllowed(dedicatedserverproperties.pvp); this.setPvpAllowed(dedicatedserverproperties.pvp);
this.setFlightAllowed(dedicatedserverproperties.allowFlight); this.setFlightAllowed(dedicatedserverproperties.allowFlight);
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 0981d440d0dbfe4df668d1f3f1b5706a93bc4434..cffdb530be035d177ccfd13a9e560c544f3acaac 100644 index ca56a0b596976448da6bb2a0e82b3d5cd4133e12..b5a66132f7ec10feb4682db38c80e5064e78f9f3 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -697,7 +697,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -697,7 +697,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1080,52 +1038,52 @@ index 0981d440d0dbfe4df668d1f3f1b5706a93bc4434..cffdb530be035d177ccfd13a9e560c54
// Objects.requireNonNull(minecraftserver); // 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(), 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())), 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.pvpMode = minecraftserver.isPvpAllowed();
this.convertable = convertable_conversionsession; this.convertable = convertable_conversionsession;
this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile()); 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 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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; return this.paperConfig;
} }
// Paper end - add paper world config // Paper end - add paper world config
+ // Sakura start + // Sakura start - sakura configuration files
+ private final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig; + private final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig;
+ public final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig() { + public final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig() {
+ return this.sakuraConfig; + return this.sakuraConfig;
+ } + }
+ // Sakura end + // Sakura end - sakura configuration files
public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
public final co.aikar.timings.WorldTimingsHandler timings; // Paper 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<LevelStem> getTypeKey(); public abstract ResourceKey<LevelStem> getTypeKey();
- protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor - protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor
+ protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor + protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> 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.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.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.generator = gen;
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); 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 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 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/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 org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console); 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()) { for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty // 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)) 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(); this.reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
@@ -1134,20 +1092,20 @@ index 6d01828434b8dce0359fe2a37b450e0aae916e3b..ec7c15ceb51388a7a349b2e852693f09
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); 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 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 --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/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"); .describedAs("Jar file");
// Paper end // Paper end
+ // Sakura start + // Sakura start - sakura configuration files
+ acceptsAll(asList("sakura-dir", "sakura-settings-directory"), "Directory for Sakura settings") + acceptsAll(asList("sakura-dir", "sakura-settings-directory"), "Directory for Sakura settings")
+ .withRequiredArg() + .withRequiredArg()
+ .ofType(File.class) + .ofType(File.class)
+ .defaultsTo(new File(me.samsuik.sakura.configuration.SakuraConfigurations.CONFIG_DIR)) + .defaultsTo(new File(me.samsuik.sakura.configuration.SakuraConfigurations.CONFIG_DIR))
+ .describedAs("Config directory"); + .describedAs("Config directory");
+ // Sakura end + // Sakura end - sakura configuration files
+ +
// Paper start // Paper start
acceptsAll(asList("server-name"), "Name of the server") acceptsAll(asList("server-name"), "Name of the server")

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -1798,6 +1798,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.pop(); this.profiler.pop();
this.profiler.pop(); this.profiler.pop();
worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions
+ worldserver.localConfig().expire(currentTickLong); // Sakura + worldserver.localConfig().expire(currentTickLong); // Sakura - add local config
} }
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 3a30562a4ec500eade01b646aacbdfbba39f547b..62d39dd63e33c2781c39d3241130b32c18093fcf 100644 index f2cd3046fdd280b03586e645216ccef15fc4b116..1059530bb6f817352c8304f6a1544aeb5ac14b30 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -174,6 +174,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -175,6 +175,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
return this.sakuraConfig; return this.sakuraConfig;
} }
// Sakura end // Sakura end - sakura configuration files
+ // Sakura start + // Sakura start - add local config
+ private final me.samsuik.sakura.local.config.LocalConfigManager localConfig = new me.samsuik.sakura.local.config.LocalConfigManager(this); + private final me.samsuik.sakura.local.config.LocalConfigManager localConfig = new me.samsuik.sakura.local.config.LocalConfigManager(this);
+ public final me.samsuik.sakura.local.config.LocalConfigManager localConfig() { + public final me.samsuik.sakura.local.config.LocalConfigManager localConfig() {
+ return this.localConfig; + return this.localConfig;
+ } + }
+ // Sakura end + // Sakura end - add local config
public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
public final co.aikar.timings.WorldTimingsHandler timings; // Paper public final co.aikar.timings.WorldTimingsHandler timings; // Paper
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index f2b20ed5063a293f0b464548f590d652170cd1d8..b9c1fb2d1a185dc460bb6ba8b3d833fec40865e5 100644 index f2b20ed5063a293f0b464548f590d652170cd1d8..91ad056cd98d799caf811defde57dbdcecc07700 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -252,6 +252,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -252,6 +252,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
} }
// Paper end // Paper end
+ // Sakura start + // Sakura start - add local config
+ @Override + @Override
+ public me.samsuik.sakura.local.storage.LocalStorageHandler getStorageHandler() { + public final me.samsuik.sakura.local.storage.LocalStorageHandler getStorageHandler() {
+ return this.getHandle().localConfig(); + return this.getHandle().localConfig();
+ } + }
+ // Sakura end + // Sakura end - add local config
+ +
private static final Random rand = new Random(); private static final Random rand = new Random();

View File

@@ -255,19 +255,19 @@ index 1a37654aff9a9c86c9f7af10a1cf721371f0c5ec..82644b34a77dc5e5af38260b7b07b3ec
public ClientboundSectionBlocksUpdatePacket(SectionPos sectionPos, ShortSet positions, LevelChunkSection section) { public ClientboundSectionBlocksUpdatePacket(SectionPos sectionPos, ShortSet positions, LevelChunkSection section) {
this.sectionPos = sectionPos; this.sectionPos = sectionPos;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 6aacf5ff736bcbbb8582b6ae11e7dfc6ff265c08..6e6ca00b20072e65370a47d38dded747fc0eb7c9 100644 index 9677324fc698789e9cd880705985d6112c6bd9bb..606ae62f597761296412e14750758fa185fc3c48 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1803,6 +1803,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1799,6 +1799,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.pop(); this.profiler.pop();
worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions
worldserver.localConfig().expire(currentTickLong); // Sakura worldserver.localConfig().expire(currentTickLong); // Sakura - add local config
+ worldserver.minimalTNT.clear(); // Sakura - visibility api + worldserver.minimalTNT.clear(); // Sakura - visibility api
} }
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index dbe9df1e1973db133f7c8516256697ef7c968137..0bfd2005dc82b0262badfe6867835e80a6e6a1dc 100644 index 7fb9ba3dadb1eca4a1000ea8cf4d13fed2b7db1e..7fb48e8924e7f6acfcaaecf284f9bf1925612a16 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java --- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1438,6 +1438,22 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -1438,6 +1438,22 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -294,7 +294,7 @@ index dbe9df1e1973db133f7c8516256697ef7c968137..0bfd2005dc82b0262badfe6867835e80
if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits
flag = false; flag = false;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index cffdb530be035d177ccfd13a9e560c544f3acaac..bb1b891d917ed41ce5da6c2c9f470c5f49eff34a 100644 index b5a66132f7ec10feb4682db38c80e5064e78f9f3..747ebfb09dcd4c619ee0543c8aa79c05416687a4 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1959,7 +1959,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1959,7 +1959,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -307,7 +307,7 @@ index cffdb530be035d177ccfd13a9e560c544f3acaac..bb1b891d917ed41ce5da6c2c9f470c5f
} }
} }
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 8437316888c6056060a2780652147590b6fe7443..826fca7c9e1b49b8fbedbc4d99d55b85b4faa807 100644 index 6a4637eef14cbd84bbe26ef16f004b8f93367a3d..bed136477493365d62d1b82e8f7802513a394991 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -277,6 +277,7 @@ public class ServerPlayer extends Player { @@ -277,6 +277,7 @@ public class ServerPlayer extends Player {
@@ -318,7 +318,7 @@ index 8437316888c6056060a2780652147590b6fe7443..826fca7c9e1b49b8fbedbc4d99d55b85
// CraftBukkit start // CraftBukkit start
public CraftPlayer.TransferCookieConnection transferCookieConnection; public CraftPlayer.TransferCookieConnection transferCookieConnection;
@@ -595,6 +596,15 @@ public class ServerPlayer extends Player { @@ -596,6 +597,15 @@ public class ServerPlayer extends Player {
this.respawnDimension = (ResourceKey) dataresult1.resultOrPartial(logger1::error).orElse(Level.OVERWORLD); this.respawnDimension = (ResourceKey) dataresult1.resultOrPartial(logger1::error).orElse(Level.OVERWORLD);
} }
} }
@@ -334,7 +334,7 @@ index 8437316888c6056060a2780652147590b6fe7443..826fca7c9e1b49b8fbedbc4d99d55b85
this.spawnExtraParticlesOnFall = nbt.getBoolean("spawn_extra_particles_on_fall"); this.spawnExtraParticlesOnFall = nbt.getBoolean("spawn_extra_particles_on_fall");
Tag nbtbase = nbt.get("raid_omen_position"); Tag nbtbase = nbt.get("raid_omen_position");
@@ -673,6 +683,13 @@ public class ServerPlayer extends Player { @@ -674,6 +684,13 @@ public class ServerPlayer extends Player {
}); });
} }
this.getBukkitEntity().setExtraData(nbt); // CraftBukkit this.getBukkitEntity().setExtraData(nbt); // CraftBukkit
@@ -349,7 +349,7 @@ index 8437316888c6056060a2780652147590b6fe7443..826fca7c9e1b49b8fbedbc4d99d55b85
nbt.putBoolean("spawn_extra_particles_on_fall", this.spawnExtraParticlesOnFall); nbt.putBoolean("spawn_extra_particles_on_fall", this.spawnExtraParticlesOnFall);
if (this.raidOmenPosition != null) { if (this.raidOmenPosition != null) {
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..9a5e0e244068d9ef424bcf2c466a2bf21f1fcaf8 100644 index 308aef9c4933b2bcdd622a34b68efab4a220fe4d..2aee1167e7c4f47f3fe82d135904beac0374bdfd 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -42,6 +42,23 @@ import org.bukkit.craftbukkit.util.CraftLocation; @@ -42,6 +42,23 @@ import org.bukkit.craftbukkit.util.CraftLocation;
@@ -469,10 +469,10 @@ index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..9a5e0e244068d9ef424bcf2c466a2bf2
throw new ReportedException(crashreport); throw new ReportedException(crashreport);
} }
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 5e9202bc7fc649764568b55d66ba0d684118c00c..9dd069659a7ec93b9f0c65edd233952548881870 100644 index c450447585af4c8cdc87abe871c229ff895c3e53..c9c08726e5c899f4cce696b9b5a58e43abccc729 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3198,6 +3198,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -3181,6 +3181,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
event.setCancelled(cancelled); event.setCancelled(cancelled);
AbstractContainerMenu oldContainer = this.player.containerMenu; // SPIGOT-1224 AbstractContainerMenu oldContainer = this.player.containerMenu; // SPIGOT-1224
@@ -481,10 +481,10 @@ index 5e9202bc7fc649764568b55d66ba0d684118c00c..9dd069659a7ec93b9f0c65edd2339525
if (this.player.containerMenu != oldContainer) { if (this.player.containerMenu != oldContainer) {
return; return;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 2bc85351e6e52f90da5fdb29d8d042a06132d742..6872b9624be78e252df54858d8b9cb5aae93ceda 100644 index 4ee843dfd826772c9157ca421d8fe1f36f814b51..ceccde57cb346810e0837157624c0ab6d4322252 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -569,6 +569,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -568,6 +568,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public boolean updatingSectionStatus = false; public boolean updatingSectionStatus = false;
// Paper end // Paper end
@@ -520,20 +520,20 @@ index f1f352ec0e51f5db59254841a06c176c5a876fc9..dace8dc0c051ce9355d878154466ee3a
public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) { public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 62d39dd63e33c2781c39d3241130b32c18093fcf..52c203dcc1e0ba6b0b236412dadfb1fed2a8ea31 100644 index 1059530bb6f817352c8304f6a1544aeb5ac14b30..5a43957309019bec27b9624e5268d6a8c50c165d 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -225,6 +225,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -217,6 +217,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public abstract ResourceKey<LevelStem> getTypeKey(); public abstract ResourceKey<LevelStem> getTypeKey();
+ public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api + public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api
+ +
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> 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.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.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 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 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/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 { @@ -543,6 +543,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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(); this.tryCheckInsideBlocks();
float f = this.getBlockSpeedFactor(); float f = this.getBlockSpeedFactor();
@@ -17,7 +17,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417
// Paper start - remove expensive streams from here // Paper start - remove expensive streams from here
boolean noneMatch = true; boolean noneMatch = true;
AABB fireSearchBox = this.getBoundingBox().deflate(1.0E-6D); 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(); double d0 = this.getGravity();
if (d0 != 0.0D) { 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) { public void moveTo(double x, double y, double z, float yaw, float pitch) {
// Paper start - Fix Entity Teleportation and cancel velocity if teleported // Paper start - Fix Entity Teleportation and cancel velocity if teleported
if (!preserveMotion) { if (!preserveMotion) {
@@ -34,7 +34,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417
this.deltaMovement = Vec3.ZERO; this.deltaMovement = Vec3.ZERO;
} else { } else {
this.preserveMotion = false; 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) { public void onAboveBubbleCol(boolean drag) {
@@ -76,7 +76,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417
this.resetFallDistance(); 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(); vec3d = vec3d.normalize();
} }
@@ -99,7 +99,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417
} }
this.fluidHeight.put(tag, d1); 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; return this.chunkPosition;
} }
@@ -153,7 +153,7 @@ index 6872b9624be78e252df54858d8b9cb5aae93ceda..9aebb8f4c98eec7ece2eed012971d417
synchronized (this.posLock) { // Paper synchronized (this.posLock) { // Paper
this.deltaMovement = velocity; this.deltaMovement = velocity;
} // Paper } // 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) { public void setDeltaMovement(double x, double y, double z) {
@@ -205,7 +205,7 @@ index dace8dc0c051ce9355d878154466ee3a548a3832..fda88328472130df8317a84fc726a73c
int i = this.getFuse() - 1; 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 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 --- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/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 { @@ -618,10 +618,11 @@ public class Explosion {

View File

@@ -51,10 +51,10 @@ index 658e63ebde81dc14c8ab5850fb246dc0aab25dea..f1ff1a67fee37ee7b241ceaa164fa4ee
public static <T> TicketType<T> create(String name, Comparator<T> argumentComparator) { public static <T> TicketType<T> create(String name, Comparator<T> argumentComparator) {
return new TicketType<>(name, argumentComparator, 0L); 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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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 isPrimedTNT;
public boolean isFallingBlock; public boolean isFallingBlock;
// Sakura end - visibility api and command // Sakura end - visibility api and command
@@ -74,7 +74,7 @@ index 9aebb8f4c98eec7ece2eed012971d417062f76d0..495d8b5606457e9bfbe63199855dcd21
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); 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( io.papermc.paper.util.CollisionUtil.getCollisions(
world, this, collisionBox, potentialCollisionsVoxel, potentialCollisionsBB, world, this, collisionBox, potentialCollisionsVoxel, potentialCollisionsBB,
@@ -83,7 +83,7 @@ index 9aebb8f4c98eec7ece2eed012971d417062f76d0..495d8b5606457e9bfbe63199855dcd21
null, null 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 @Override
public boolean shouldBeSaved() { public boolean shouldBeSaved() {
@@ -123,7 +123,7 @@ index bbf6b4f705b3e9b289a7fdf82a78ef02f777297d..09f09a8fbf0eee62295001ce5b7ed532
public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) { 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 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 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/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 { @@ -220,6 +220,17 @@ public class LevelChunk extends ChunkAccess {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -1130,6 +1130,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
} }
private static final java.math.BigDecimal TPS_BASE = new java.math.BigDecimal(1E9).multiply(new java.math.BigDecimal(SAMPLE_INTERVAL)); private static final java.math.BigDecimal TPS_BASE = new java.math.BigDecimal(1E9).multiply(new java.math.BigDecimal(SAMPLE_INTERVAL));
@@ -429,7 +429,7 @@ index 6e6ca00b20072e65370a47d38dded747fc0eb7c9..783367f380ad2a21418d102fbb6bc49a
// Paper end // Paper end
// Spigot End // Spigot End
@@ -1212,6 +1213,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1208,6 +1209,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
final long diff = currentTime - tickSection; final long diff = currentTime - tickSection;
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
@@ -437,7 +437,7 @@ index 6e6ca00b20072e65370a47d38dded747fc0eb7c9..783367f380ad2a21418d102fbb6bc49a
tps1.add(currentTps, diff); tps1.add(currentTps, diff);
tps5.add(currentTps, diff); tps5.add(currentTps, diff);
tps15.add(currentTps, diff); tps15.add(currentTps, diff);
@@ -1240,6 +1242,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1236,6 +1238,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickServer(flag ? () -> { this.tickServer(flag ? () -> {
return false; return false;
} : this::haveTime); } : this::haveTime);
@@ -462,7 +462,7 @@ index b99f50604bafecbc68835974c9ed0caa91911a40..c912615ded011741f81c72739639e631
public boolean isChunkLoaded(int chunkX, int chunkZ) { public boolean isChunkLoaded(int chunkX, int chunkZ) {
ChunkHolder chunk = this.chunkMap.getUpdatingChunkIfPresent(ChunkPos.asLong(chunkX, 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 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 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/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 { @@ -197,7 +197,7 @@ public class ServerLevel extends Level implements WorldGenLevel {

View File

@@ -155,19 +155,19 @@ index 0f99733660f91280e4c6262cf75b3c9cae86f65a..ba9f8fe6fafc54bbdfb104de28af4b39
return SynchedEntityData.DataValue.create(this.accessor, this.value); 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 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 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/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.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.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().isForeignDirty()) { // Slice// Paper - fix desync when a player is added to the tracker
int i; int i;
int j; int j;
@@ -382,7 +382,15 @@ public class ServerEntity { @@ -390,7 +390,15 @@ public class ServerEntity {
if (list != null) { if (list != null) {
this.trackedDataValues = datawatcher.getNonDefaultValues(); this.trackedDataValues = datawatcher.getNonDefaultValues();
@@ -185,10 +185,10 @@ index 4f103f731623a8570238a6867fda1c5f83fca4e4..842fe9b40efff7e36c97347b9d35f428
if (this.entity instanceof LivingEntity) { 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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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); this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID);
return; 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 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 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/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 { @@ -111,7 +111,7 @@ public class FallingBlockEntity extends Entity {
@@ -211,7 +211,7 @@ index d9668a752b06b560730973ebc82251d2cb8b7123..3e80788374f03269067137582f6b6816
public BlockPos getStartPos() { 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 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 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/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 { @@ -182,7 +182,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -224,7 +224,7 @@ index 431b02599b7e3f2730841c8136460177aca37f3b..a2e8a95ba53953192db1889c686c5073
public int getFuse() { 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 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 --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/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 { @@ -645,7 +645,7 @@ public abstract class Player extends LivingEntity {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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; return flags;
} }
// Sakura end - load chunks on cannon entity movement // Sakura end - load chunks on cannon entity movement
@@ -82,10 +82,10 @@ index 1b980864f8b10f172843b6ffce2673ffe899adbe..b87a07a5ac1da6803c7b61ef248a3dbe
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); 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 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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 <T extends Entity> void guardEntityTick(Consumer<T> tickConsumer, T entity) { public <T extends Entity> void guardEntityTick(Consumer<T> tickConsumer, T entity) {
try { try {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -1803,6 +1803,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions
worldserver.localConfig().expire(currentTickLong); // Sakura worldserver.localConfig().expire(currentTickLong); // Sakura - add local config
worldserver.minimalTNT.clear(); // Sakura - visibility api worldserver.minimalTNT.clear(); // Sakura - visibility api
+ worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities + worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities
} }
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index b97217662434b67a62f7247c2b5187749f207880..a9cfdbd7d138763584ee3d2825fe6979241422db 100644 index 4a3690c71eda93d2542e8c039442a51882f10475..ada18c755cee73620e6c0020674dd0a5a1d8f79d 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -899,6 +899,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -899,6 +899,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -209,10 +209,10 @@ index b97217662434b67a62f7247c2b5187749f207880..a9cfdbd7d138763584ee3d2825fe6979
this.guardEntityTick(this::tickNonPassenger, entity); this.guardEntityTick(this::tickNonPassenger, entity);
gameprofilerfiller.pop(); gameprofilerfiller.pop();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae0e6920a3 100644 index ce16878d3c9c52e8edd4b073916bb3f7fd595649..88964adf81cd03b26556b50b764caaddd49b59be 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -605,6 +605,116 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -604,6 +604,116 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return to.entityState() != null && to.entityState().isCurrentState(this); return to.entityState() != null && to.entityState().isCurrentState(this);
} }
// Sakura end - store entity data/state // Sakura end - store entity data/state
@@ -329,7 +329,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); 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.entityData = datawatcher_a.build();
this.setPos(0.0D, 0.0D, 0.0D); this.setPos(0.0D, 0.0D, 0.0D);
this.eyeHeight = this.dimensions.eyeHeight(); this.eyeHeight = this.dimensions.eyeHeight();
@@ -337,7 +337,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae
} }
public boolean isColliding(BlockPos pos, BlockState state) { 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); nbttagcompound.putBoolean("Paper.FreezeLock", true);
} }
// Paper end // Paper end
@@ -349,7 +349,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae
return nbttagcompound; return nbttagcompound;
} catch (Throwable throwable) { } catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); 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"); freezeLocked = nbt.getBoolean("Paper.FreezeLock");
} }
// Paper end // Paper end
@@ -361,7 +361,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae
} catch (Throwable throwable) { } catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); 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 // Paper end - rewrite chunk system
CraftEventFactory.callEntityRemoveEvent(this, cause); CraftEventFactory.callEntityRemoveEvent(this, cause);
// CraftBukkit end // CraftBukkit end
@@ -374,7 +374,7 @@ index b87a07a5ac1da6803c7b61ef248a3dbecaedc3de..f08a3969c85f4ca1470c6fe9bcc3b4ae
if (this.removalReason == null) { if (this.removalReason == null) {
this.removalReason = entity_removalreason; 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 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 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/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 { @@ -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))); ((ServerLevel) this.level()).getChunkSource().chunkMap.broadcast(this, new ClientboundBlockUpdatePacket(blockposition, this.level().getBlockState(blockposition)));
this.discard(EntityRemoveEvent.Cause.DESPAWN); 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 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 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/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 { @@ -70,6 +70,44 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -503,16 +503,16 @@ index a2e8a95ba53953192db1889c686c507321666b03..1860ffd3e11601983abbb85962dd9ef5
this.explode(); this.explode();
} }
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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<LevelStem> getTypeKey(); public abstract ResourceKey<LevelStem> getTypeKey();
public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api 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 + 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<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> 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.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 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 index 1359d25a32b4a5d5e8e68ce737bd19f7b5afaf69..0afa2cfb04b5097788927076669e85fe24041df9 100644

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -1804,6 +1804,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.localConfig().expire(currentTickLong); // Sakura worldserver.localConfig().expire(currentTickLong); // Sakura - add local config
worldserver.minimalTNT.clear(); // Sakura - visibility api worldserver.minimalTNT.clear(); // Sakura - visibility api
worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities
+ worldserver.densityCache.clear(currentTickLong); // Sakura - explosion density cache + worldserver.densityCache.clear(currentTickLong); // Sakura - explosion density cache
@@ -141,7 +141,7 @@ index 2db7dee8589425c805b148ef46827ce88ec38c4e..69b972a5b1ad62f1cfa759fd2e0d371a
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 0a9683c2005ab85708bfb6bbb051f68bed133918..ead8ddd7fd9941d4349b9b94ad313bf9d46bdc0b 100644 index bdf946277fc07523d31ef8388181e278fd3a786c..627a319faf6d5272fea40cea27f02c09c937f868 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java --- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -401,7 +401,12 @@ public class Explosion { @@ -401,7 +401,12 @@ public class Explosion {
@@ -209,16 +209,16 @@ index 0a9683c2005ab85708bfb6bbb051f68bed133918..ead8ddd7fd9941d4349b9b94ad313bf9
return blockDensity; return blockDensity;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 1b14de4b22bd6f7103be55af20df6f5d7a149e0b..e53f3b508eba942a6d61c1ad678ff0f5793c3f73 100644 index 557472039d6451d5a8471ff56609ce49620d30df..d41086a80ea03855fde694947fa61f2d48eaa114 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -227,6 +227,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -219,6 +219,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api 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 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 + public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> 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.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 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 index 8b33e35c843e5c0b8988a2ef2a38a2673035292f..5ec557652558bb44e9be7d32fc214091d29aac78 100644

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/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 { @@ -1964,6 +1964,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -447,7 +447,7 @@ index a9cfdbd7d138763584ee3d2825fe6979241422db..3ca19140d8c7b28f73e80dcdbfd60536
@Override @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 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 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/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 { @@ -84,28 +84,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -481,7 +481,7 @@ index 1860ffd3e11601983abbb85962dd9ef56992c9f5..f8e19ca5af5b313e887ce8b428e32a84
@Override @Override
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java 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 --- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/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 { @@ -56,9 +56,11 @@ public class Explosion {
@@ -574,10 +574,10 @@ index d7e8dd148098de080c5bc0f76b36207501e1089f..7de806ca3b923e657187b185b492f8e6
float blockDensity = this.level.densityCache.getDensity(vec3d, entity); float blockDensity = this.level.densityCache.getDensity(vec3d, entity);
if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) { 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 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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; Explosion.BlockInteraction explosion_effect1 = explosion_effect;

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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 // Paper end - detailed watchdog information
@@ -104,7 +104,7 @@ index f08a3969c85f4ca1470c6fe9bcc3b4ae0e6920a3..b1e7a7ae0dd262172407e8986e5f4e4d
public void move(MoverType movementType, Vec3 movement) { public void move(MoverType movementType, Vec3 movement) {
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
// Paper start - detailed watchdog information // 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; return offsetFactor;
} }
@@ -201,7 +201,7 @@ index f08a3969c85f4ca1470c6fe9bcc3b4ae0e6920a3..b1e7a7ae0dd262172407e8986e5f4e4d
// Paper start - optimise collisions // Paper start - optimise collisions
final boolean xZero = movement.x == 0.0; 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 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 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/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 { @@ -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.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) {
if (this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { 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 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 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/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 { @@ -96,7 +96,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {

View File

@@ -329,46 +329,46 @@ index 8fcaa00e461c7f4413bf655ddd8165a2b908f900..404b99def4562942e036089085a66797
if (this.count == 0) { if (this.count == 0) {
return; return;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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.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 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 + // Sakura start - add entity retrival methods with search limits
+ public void getLimitedEntities(Entity except, AABB box, Predicate<? super Entity> predicate, List<Entity> into, int limit, int search) { + public final void getLimitedEntities(Entity except, AABB box, Predicate<? super Entity> predicate, List<Entity> into, int limit, int search) {
+ ((ServerLevel)this).getEntityLookup().getLimitedEntities(except, box, into, predicate, limit, search); + ((ServerLevel)this).getEntityLookup().getLimitedEntities(except, box, into, predicate, limit, search);
+ } + }
+ +
+ public <T extends Entity> List<T> getLimitedEntities(net.minecraft.world.entity.EntityType<?> filter, AABB box, Predicate<? super T> predicate, int limit, int search) { + public final <T extends Entity> List<T> getLimitedEntities(net.minecraft.world.entity.EntityType<?> filter, AABB box, Predicate<? super T> predicate, int limit, int search) {
+ List<T> ret = new java.util.ArrayList<>(); + List<T> ret = new java.util.ArrayList<>();
+ ((ServerLevel)this).getEntityLookup().getLimitedEntities(filter, box, ret, predicate, limit, search); + ((ServerLevel)this).getEntityLookup().getLimitedEntities(filter, box, ret, predicate, limit, search);
+ return ret; + return ret;
+ } + }
+ +
+ public <T> void getLimitedEntitiesByClass(Class<? extends T> clazz, Entity except, final AABB box, List<? super T> into, + public final <T> void getLimitedEntitiesByClass(Class<? extends T> clazz, Entity except, final AABB box, List<? super T> into,
+ Predicate<? super T> predicate, int limit, int search) { + Predicate<? super T> predicate, int limit, int search) {
+ ((ServerLevel)this).getEntityLookup().getLimitedEntities((Class)clazz, except, box, (List)into, (Predicate)predicate, limit, search); + ((ServerLevel)this).getEntityLookup().getLimitedEntities((Class)clazz, except, box, (List)into, (Predicate)predicate, limit, search);
+ } + }
+ +
+ public <T extends Entity> List<T> getLimitedEntitiesOfClass(Class<T> entityClass, AABB box, Predicate<? super T> predicate, int limit, int search) { + public final <T extends Entity> List<T> getLimitedEntitiesOfClass(Class<T> entityClass, AABB box, Predicate<? super T> predicate, int limit, int search) {
+ List<T> ret = new java.util.ArrayList<>(); + List<T> ret = new java.util.ArrayList<>();
+ ((ServerLevel)this).getEntityLookup().getLimitedEntities(entityClass, null, box, ret, predicate, limit, search); + ((ServerLevel)this).getEntityLookup().getLimitedEntities(entityClass, null, box, ret, predicate, limit, search);
+ return ret; + return ret;
+ } + }
+ +
+ public List<Entity> getLimitedEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate, int limit, int search) { + public final List<Entity> getLimitedEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate, int limit, int search) {
+ List<Entity> list = Lists.newArrayList(); + List<Entity> list = Lists.newArrayList();
+ getLimitedEntities(except, box, predicate, list, limit, search); + getLimitedEntities(except, box, predicate, list, limit, search);
+ return list; + return list;
+ } + }
+ +
+ public List<Entity> getLimitedEntities(@Nullable Entity except, AABB box, int limit, int search) { + public final List<Entity> getLimitedEntities(@Nullable Entity except, AABB box, int limit, int search) {
+ return this.getLimitedEntities(except, box, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS, limit, search); + return this.getLimitedEntities(except, box, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS, limit, search);
+ } + }
+ // Sakura end - add entity retrival methods with search limits + // Sakura end - add entity retrival methods with search limits
+ +
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> 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.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.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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 // Sakura end - cannon entity merging
@@ -16,7 +16,7 @@ index b1e7a7ae0dd262172407e8986e5f4e4d144669c8..8f58e0989b536e670766d82a873d1fb0
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); 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() { public boolean isPushedByFluid() {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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; return this.isInWater() || flag;
} }
@@ -18,7 +18,7 @@ index 8f58e0989b536e670766d82a873d1fb0581a3492..b9d91310268088b43c432e7fb4d669cc
if (entity instanceof Boat entityboat) { 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 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 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/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 { @@ -92,6 +92,19 @@ public class PrimedTnt extends Entity implements TraceableEntity {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -1805,6 +1805,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.minimalTNT.clear(); // Sakura - visibility api worldserver.minimalTNT.clear(); // Sakura - visibility api
worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities
worldserver.densityCache.clear(currentTickLong); // Sakura - explosion density cache worldserver.densityCache.clear(currentTickLong); // Sakura - explosion density cache
@@ -124,7 +124,7 @@ index a8008c7550488be34b51f4280f5569170b1ebd1d..2e5a46b9d27b930870c68dbde93d8731
public String getDescriptionId() { public String getDescriptionId() {
return this.getOrCreateDescriptionId(); return this.getOrCreateDescriptionId();
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 7eb8da4075b4f1706f698a0b48206421bf4353c3..243ac586aad29e3a145eec3c9a85b24901450121 100644 index ba2588188e15806052d52dca62547c8a6d3a2152..473573e37ac5ecff2655126a08011aff66997019 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java --- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -262,7 +262,7 @@ public class Explosion { @@ -262,7 +262,7 @@ public class Explosion {
@@ -176,14 +176,14 @@ index 7eb8da4075b4f1706f698a0b48206421bf4353c3..243ac586aad29e3a145eec3c9a85b249
Entity sourceEntity = this.source == null ? null : this.source; Entity sourceEntity = this.source == null ? null : this.source;
BlockPos sourceBlock = sourceEntity == null ? BlockPos.containing(this.x, this.y, this.z) : null; BlockPos sourceBlock = sourceEntity == null ? BlockPos.containing(this.x, this.y, this.z) : null;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 1a150fc2e875860ed25dcda99394c8809d87bb04..cbc20c6a367b373a7b503c21b09db818e14437e5 100644 index d041ad1e52c78c553da4d92745d2b07fc3eab522..1901081678b25fd50d9eb2b9a51c99672d239ea3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -228,6 +228,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -220,6 +220,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api 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 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 public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache
+ public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks + public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks
// Sakura start - add entity retrival methods with search limits // Sakura start - add entity retrival methods with search limits
public void getLimitedEntities(Entity except, AABB box, Predicate<? super Entity> predicate, List<Entity> into, int limit, int search) { public final void getLimitedEntities(Entity except, AABB box, Predicate<? super Entity> predicate, List<Entity> into, int limit, int search) {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/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<TickTa @@ -1806,6 +1806,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities worldserver.mergeHistory.expire(currentTickLong); // Sakura - merge cannoning entities
worldserver.densityCache.clear(currentTickLong); // Sakura - explosion density cache worldserver.densityCache.clear(currentTickLong); // Sakura - explosion density cache
worldserver.durabilityManager.expire(currentTickLong); // Sakura worldserver.durabilityManager.expire(currentTickLong); // Sakura
@@ -353,18 +353,18 @@ index 48f13cd41f68570b3b70e013ced3374bea251601..303d01e2861b960fd7e592c196944e3c
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index cbc20c6a367b373a7b503c21b09db818e14437e5..9060ce8bcbb82eea6bfa84180a887c04f0137ef5 100644 index 1901081678b25fd50d9eb2b9a51c99672d239ea3..ef37c34036bc79505786ee38ab5472a45effa4a3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -229,6 +229,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -221,6 +221,7 @@ 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.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 public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache
public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks
+ public final me.samsuik.sakura.redstone.RedstoneTracker redstoneTracker = new me.samsuik.sakura.redstone.RedstoneTracker(this); // Sakura - cache vanilla and eigen redstone + public final me.samsuik.sakura.redstone.RedstoneTracker redstoneTracker = new me.samsuik.sakura.redstone.RedstoneTracker(this); // Sakura - cache vanilla and eigen redstone
// Sakura start - add entity retrival methods with search limits // Sakura start - add entity retrival methods with search limits
public void getLimitedEntities(Entity except, AABB box, Predicate<? super Entity> predicate, List<Entity> into, int limit, int search) { public final void getLimitedEntities(Entity except, AABB box, Predicate<? super Entity> predicate, List<Entity> into, int limit, int search) {
@@ -1002,6 +1003,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -994,6 +995,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
} else { } else {
BlockState iblockdata2 = this.getBlockState(pos); BlockState iblockdata2 = this.getBlockState(pos);

View File

@@ -107,10 +107,10 @@ index 13d87b08b1e12f7b5a6f59f545a4620cacae22ba..4ad106f15b73ce0657a34a17a3341bf3
protected void startExplosion() { protected void startExplosion() {
for (int i = this.calculateExplosionPotential() - 1; i >= 0; --i) { 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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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 final double[] pistonDeltas;
private long pistonDeltasGameTime; private long pistonDeltasGameTime;
private EntityDimensions dimensions; private EntityDimensions dimensions;
@@ -119,7 +119,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
public boolean isInPowderSnow; public boolean isInPowderSnow;
public boolean wasInPowderSnow; public boolean wasInPowderSnow;
public boolean wasOnFire; 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 // Sakura end - cannon entity merging
public boolean pushedByFluid = true; // Sakura - entity pushed by fluid api public boolean pushedByFluid = true; // Sakura - entity pushed by fluid api
@@ -133,7 +133,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); 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) { protected void checkSupportingBlock(boolean onGround, @Nullable Vec3 movement) {
@@ -142,7 +142,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
AABB axisalignedbb = this.getBoundingBox(); AABB axisalignedbb = this.getBoundingBox();
AABB axisalignedbb1 = new AABB(axisalignedbb.minX, axisalignedbb.minY - 1.0E-6D, axisalignedbb.minZ, axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); AABB axisalignedbb1 = new AABB(axisalignedbb.minX, axisalignedbb.minY - 1.0E-6D, axisalignedbb.minZ, axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ);
Optional<BlockPos> optional = this.level.findSupportingBlock(this, axisalignedbb1); Optional<BlockPos> 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) { if (this.noPhysics) {
this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z);
} else { } else {
@@ -151,7 +151,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
movement = this.limitPistonMovement(movement); movement = this.limitPistonMovement(movement);
if (movement.equals(Vec3.ZERO)) { if (movement.equals(Vec3.ZERO)) {
return; 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); Vec3 vec3d1 = this.collideScan(movement);
double d0 = vec3d1.lengthSqr(); 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)); 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) { 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) { if (this.horizontalCollision) {
Vec3 vec3d2 = this.getDeltaMovement(); 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); 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); this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z);
} else { } else {
this.wasOnFire = this.isOnFire(); this.wasOnFire = this.isOnFire();
@@ -186,7 +186,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
this.activatedTick = Math.max(this.activatedTick, MinecraftServer.currentTick + 20); // Paper this.activatedTick = Math.max(this.activatedTick, MinecraftServer.currentTick + 20); // Paper
this.activatedImmunityTick = Math.max(this.activatedImmunityTick, MinecraftServer.currentTick + 20); // Paper this.activatedImmunityTick = Math.max(this.activatedImmunityTick, MinecraftServer.currentTick + 20); // Paper
movement = this.limitPistonMovement(movement); 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); Vec3 vec3d1 = this.collide(movement);
double d0 = vec3d1.lengthSqr(); 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)); 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) { 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) { if (this.horizontalCollision) {
Vec3 vec3d2 = this.getDeltaMovement(); 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); 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 { } else {
final AABB bb = currBoundingBox.expandTowards(movement.x, movement.y, movement.z); final AABB bb = currBoundingBox.expandTowards(movement.x, movement.y, movement.z);
collectCollisions(bb, potentialCollisionsVoxel, potentialCollisionsBB); 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 y = movement.y;
double z = movement.z; double z = movement.z;
@@ -231,7 +231,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
if (y != 0.0) { if (y != 0.0) {
y = scanY(currBoundingBox, y, voxelList, bbList); 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; return movement;
} }
@@ -240,7 +240,7 @@ index b9d91310268088b43c432e7fb4d669cc9ddae527..f6a4c34a47d4ca46681d694798f61959
if (stepHeight > 0.0 if (stepHeight > 0.0
&& (onGround || (limitedMoveVector.y != movement.y && movement.y < 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() { protected void checkInsideBlocks() {
AABB axisalignedbb = this.getBoundingBox(); AABB axisalignedbb = this.getBoundingBox();
@@ -481,7 +481,7 @@ index df2a37e57012333a618937e61cb5a99c3ef4a0f9..62d40333c42f673479db5e6312343161
// Paper end - Option to prevent TNT from moving in water // 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 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 --- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/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 { @@ -76,6 +76,7 @@ public class Explosion {
@@ -574,10 +574,10 @@ index f7e01cb367b5b75f1f267d727b539066845d6e14..c5db31bd92a441eccd0f4c5ea1b8c7f1
private final Level world; private final Level world;
private final double posX, posY, posZ; 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 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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); return this.getLimitedEntities(except, box, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS, limit, search);
} }
// Sakura end - add entity retrival methods with search limits // Sakura end - add entity retrival methods with search limits
@@ -781,7 +781,7 @@ index 9060ce8bcbb82eea6bfa84180a887c04f0137ef5..3f94145e27b7f4a385da77c72821cd5f
+ } + }
+ // Sakura end - physics version api + // Sakura end - physics version api
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> 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<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, Supplier<me.samsuik.sakura.configuration.WorldConfiguration> 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.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 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 index 1ea1232a5ba3e48eef3a139d6487c9a190155ebd..71364fe94cfeefa07fac3ee6359f7abd9bb58106 100644

View File

@@ -59,10 +59,10 @@ index 8014ebfb391825c31d9d1b39f5304a7e76b1ee44..d58d1fb1148db13c5d24422a1553e0b8
AABB singleAABB = blockCollision.getSingleAABBRepresentation(); AABB singleAABB = blockCollision.getSingleAABBRepresentation();
if (singleAABB != null) { 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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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; flags |= io.papermc.paper.util.CollisionUtil.COLLISION_FLAG_LOAD_CHUNKS | io.papermc.paper.util.CollisionUtil.COLLISION_FLAG_ADD_TICKET;
} }

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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); BlockPos blockposition1 = BlockPos.containing(axisalignedbb.maxX - offset, axisalignedbb.maxY - offset, axisalignedbb.maxZ - offset);
// Sakura end // Sakura end
@@ -50,7 +50,7 @@ index 9f62d36ab4dc2400e59d4043688d38e4f27b68cd..f82104948e7799c9a09dbde6f14c4541
try { try {
iblockdata.entityInside(this.level(), blockposition_mutableblockposition, this); 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<Fluid> tag, double speed) { public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
@@ -59,7 +59,7 @@ index 9f62d36ab4dc2400e59d4043688d38e4f27b68cd..f82104948e7799c9a09dbde6f14c4541
return false; return false;
} else { } else {
AABB axisalignedbb = this.getBoundingBox().deflate(0.001D); 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; int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/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) { if (chunkDiff != 0) {
lastChunk = chunkProvider.getChunkAtIfLoadedImmediately(newChunkX, newChunkZ); lastChunk = chunkProvider.getChunkAtIfLoadedImmediately(newChunkX, newChunkZ);

View File

@@ -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 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 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/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 { @@ -1423,6 +1423,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -21,10 +21,10 @@ index 3ca19140d8c7b28f73e80dcdbfd60536d74886ff..91f3850d68fc678ed8764cad35569ed8
} else { entity.inactiveTick(); } // Paper - EAR 2 } else { entity.inactiveTick(); } // Paper - EAR 2
this.getProfiler().pop(); 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 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 --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/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; return this.physics;
} }
// Sakura end - physics version api // Sakura end - physics version api
@@ -44,7 +44,7 @@ index f82104948e7799c9a09dbde6f14c45418ebe98de..8faff2c1e20d4b62f9e60dd01832caf8
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); 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.setPos(0.0D, 0.0D, 0.0D);
this.eyeHeight = this.dimensions.eyeHeight(); this.eyeHeight = this.dimensions.eyeHeight();
this.mergeLevel = level.sakuraConfig().cannons.mergeLevel; // Sakura this.mergeLevel = level.sakuraConfig().cannons.mergeLevel; // Sakura

View File

@@ -1,64 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samsuik <kfian294ma4@gmail.com>
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) {