9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-19 14:59:32 +00:00
---------

Co-authored-by: Lumine1909 <133463833+Lumine1909@users.noreply.github.com>
Co-authored-by: violetc <58360096+s-yh-china@users.noreply.github.com>
Co-authored-by: Helvetica Volubi <88063803+Suisuroru@users.noreply.github.com>
This commit is contained in:
MC_XiaoHei
2025-11-28 03:15:54 +08:00
committed by GitHub
parent 93311671d2
commit 90080d238e
286 changed files with 4858 additions and 3933 deletions

View File

@@ -30,7 +30,7 @@ maven {
}
dependencies {
compileOnly("org.leavesmc.leaves:leaves-api:1.21.8-R0.1-SNAPSHOT")
compileOnly("org.leavesmc.leaves:leaves-api:1.21.10-R0.1-SNAPSHOT")
}
```
@@ -40,7 +40,7 @@ Each time you want to update your dependency, you must re-build Leaves.
Leaves-Server:
```kotlin
dependencies {
compileOnly("org.leavesmc.leaves:leaves:1.21.8-R0.1-SNAPSHOT")
compileOnly("org.leavesmc.leaves:leaves:1.21.10-R0.1-SNAPSHOT")
}
```

View File

@@ -30,7 +30,7 @@ maven {
}
dependencies {
compileOnly("org.leavesmc.leaves:leaves-api:1.21.8-R0.1-SNAPSHOT")
compileOnly("org.leavesmc.leaves:leaves-api:1.21.10-R0.1-SNAPSHOT")
}
```
@@ -39,7 +39,7 @@ dependencies {
Leaves-Server:
```kotlin
dependencies {
compileOnly("org.leavesmc.leaves:leaves:1.21.8-R0.1-SNAPSHOT")
compileOnly("org.leavesmc.leaves:leaves:1.21.10-R0.1-SNAPSHOT")
}
```

View File

@@ -4,7 +4,7 @@ import java.util.Locale
plugins {
java
id("org.leavesmc.leavesweight.patcher") version "2.0.0-SNAPSHOT"
id("org.leavesmc.leavesweight.patcher") version "2.1.0-SNAPSHOT"
}
subprojects {

View File

@@ -1,10 +1,11 @@
group=org.leavesmc.leaves
version=1.21.8-R0.1-SNAPSHOT
mcVersion=1.21.8
paperRef=29c8822d90899c89d2689338e81a98f690bcba12
version=1.21.10-R0.1-SNAPSHOT
mcVersion=1.21.10
paperRef=af06383701d3c02e3e3cbd2ef5c5b55e2bbd0742
preVersion=true
paper.runDisableWatchdog=true
preVersion=false
org.gradle.configuration-cache=false
org.gradle.caching=true
org.gradle.parallel=true
paper.runDisableWatchdog=true
org.gradle.vfs.watch=false

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

View File

@@ -1,6 +1,6 @@
--- a/paper-api/build.gradle.kts
+++ b/paper-api/build.gradle.kts
@@ -90,19 +_,33 @@
@@ -89,19 +_,33 @@
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
@@ -35,7 +35,7 @@
val outgoingVariants = arrayOf("runtimeElements", "apiElements", "sourcesElements", "javadocElements")
val mainCapability = "${project.group}:${project.name}:${project.version}"
@@ -147,6 +_,16 @@
@@ -146,6 +_,16 @@
}
}
@@ -52,7 +52,7 @@
tasks.jar {
from(generateApiVersioningFile.map { it.outputs.files.singleFile }) {
into("META-INF/maven/${project.group}/${project.name}")
@@ -166,7 +_,7 @@
@@ -165,7 +_,7 @@
tasks.withType<Javadoc>().configureEach {
val options = options as StandardJavadocDocletOptions
@@ -61,7 +61,7 @@
options.use()
options.isDocFilesSubDirs = true
options.links(
@@ -199,16 +_,18 @@
@@ -198,16 +_,18 @@
}
// workaround for https://github.com/gradle/gradle/issues/4046

View File

@@ -730,10 +730,10 @@ index 199789d56d22fcb1b77ebd56805cc28aa5a5ab0a..00000000000000000000000000000000
-}
diff --git a/src/main/java/co/aikar/timings/TimingHistory.java b/src/main/java/co/aikar/timings/TimingHistory.java
deleted file mode 100644
index c8287776ad585d04fb4fa3290cd73d7097035ea0..0000000000000000000000000000000000000000
index 143fb3623a3fcf4be2d30dafb330584cb61ffe50..0000000000000000000000000000000000000000
--- a/src/main/java/co/aikar/timings/TimingHistory.java
+++ /dev/null
@@ -1,357 +0,0 @@
@@ -1,356 +0,0 @@
-/*
- * This file is licensed under the MIT License (MIT).
- *
@@ -787,8 +787,7 @@ index c8287776ad585d04fb4fa3290cd73d7097035ea0..00000000000000000000000000000000
-import static co.aikar.util.JSONUtil.*;
-
-/**
- * Internal.
- *
- * @hidden
- * @deprecated Timings will be removed in the future
- */
-@Deprecated(forRemoval = true)
@@ -2368,7 +2367,7 @@ index 5753b9bce89db2ac378ec41f1b61907cc2e23335..00000000000000000000000000000000
-}
diff --git a/src/main/java/co/aikar/util/LoadingMap.java b/src/main/java/co/aikar/util/LoadingMap.java
deleted file mode 100644
index 1786eeb5cbeaad75602c9c5649bbcd9b2af5cf81..0000000000000000000000000000000000000000
index 207b6853a0cb0185492b62c0c5d9602d48b7959c..0000000000000000000000000000000000000000
--- a/src/main/java/co/aikar/util/LoadingMap.java
+++ /dev/null
@@ -1,369 +0,0 @@
@@ -2456,9 +2455,9 @@ index 1786eeb5cbeaad75602c9c5649bbcd9b2af5cf81..00000000000000000000000000000000
- /**
- * Creates a LoadingMap with an auto instantiating loader.
- *
- * Will auto construct class of of Value when not found
- * Will auto construct class of Value when not found
- *
- * Since this uses Reflection, It is more effecient to define your own static loader
- * Since this uses Reflection, It is more efficient to define your own static loader
- * than using this helper, but if performance is not critical, this is easier.
- *
- * @param backingMap Actual map being used.
@@ -2476,9 +2475,9 @@ index 1786eeb5cbeaad75602c9c5649bbcd9b2af5cf81..00000000000000000000000000000000
- /**
- * Creates a LoadingMap with an auto instantiating loader.
- *
- * Will auto construct class of of Value when not found
- * Will auto construct class of Value when not found
- *
- * Since this uses Reflection, It is more effecient to define your own static loader
- * Since this uses Reflection, It is more efficient to define your own static loader
- * than using this helper, but if performance is not critical, this is easier.
- *
- * @param backingMap Actual map being used.
@@ -2860,7 +2859,7 @@ index 3e61a926620a67daec3af54b72a1b911eaef2ed4..00000000000000000000000000000000
- }
-}
diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java
index 27a7c69f23084e821d945d5e97e51a94ddd94e58..d645ee8470a2dd9f7b8eff2b7ff2211aba9c342f 100644
index e387ba67f0b6cde8ee2be7acba8f791792802ad4..06402e9d811b62ea59c67ecbffe9272c73f2040d 100644
--- a/src/main/java/org/bukkit/command/Command.java
+++ b/src/main/java/org/bukkit/command/Command.java
@@ -32,16 +32,6 @@ public abstract class Command {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add fakeplayer api
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 3bde4ad79ade5aae18e9073307f637717e8dd9e3..9971ed1347f0f37800911c6cd9d0f8ae1a4f100c 100644
index 14d81c7b138ebf999d5812d26fbf869209c100f3..3b0513fbbf46e7cbb1790264eebaed9862d48eb5 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3016,4 +3016,15 @@ public final class Bukkit {
@@ -3003,4 +3003,15 @@ public final class Bukkit {
public static void restart() {
server.restart();
}
@@ -25,10 +25,10 @@ index 3bde4ad79ade5aae18e9073307f637717e8dd9e3..9971ed1347f0f37800911c6cd9d0f8ae
+ // Leaves end - Bot API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 9bab00ab10c78908090c8a1a12d4c84e9324b08b..3e7aad4ddf573f7c868b7824c4f0f34fa08cb1fe 100644
index 964b57bb240151ddf4f11c203b67e8be6469e473..865842a857e5371bd82133a018582c7b88566403 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2723,4 +2723,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2760,4 +2760,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
// Paper end - API to check if the server is sleeping

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Replay Mod API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 9971ed1347f0f37800911c6cd9d0f8ae1a4f100c..803611b793daed2d51ef6ab34d01fc8b0a3ecd23 100644
index 3b0513fbbf46e7cbb1790264eebaed9862d48eb5..44ee8036e2f813e947c2c166e1876030cabf86ff 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3027,4 +3027,10 @@ public final class Bukkit {
@@ -3014,4 +3014,10 @@ public final class Bukkit {
return server.getBotManager();
}
// Leaves end - Bot API
@@ -20,10 +20,10 @@ index 9971ed1347f0f37800911c6cd9d0f8ae1a4f100c..803611b793daed2d51ef6ab34d01fc8b
+ // Leaves end - Photographer API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 3e7aad4ddf573f7c868b7824c4f0f34fa08cb1fe..ce128dd8120b75884cb208d7ba7d316ee110333b 100644
index 865842a857e5371bd82133a018582c7b88566403..74f704d4245199205afff5a992805f40a365cc81 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2732,4 +2732,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2769,4 +2769,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
@NotNull org.leavesmc.leaves.entity.bot.BotManager getBotManager();
// Leaves end - Bot API

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bytebuf API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 803611b793daed2d51ef6ab34d01fc8b0a3ecd23..0149af5bd4234f925e12d78251766be5a16e5060 100644
index 44ee8036e2f813e947c2c166e1876030cabf86ff..c25729882f87a904e59680967f3d20b02df50eae 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3033,4 +3033,10 @@ public final class Bukkit {
@@ -3020,4 +3020,10 @@ public final class Bukkit {
return server.getPhotographerManager();
}
// Leaves end - Photographer API
@@ -20,10 +20,10 @@ index 803611b793daed2d51ef6ab34d01fc8b0a3ecd23..0149af5bd4234f925e12d78251766be5
+ // Leaves end - Bytebuf API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index ce128dd8120b75884cb208d7ba7d316ee110333b..e63fb4e0c55929f2721e16f69e0c0a4b455477fa 100644
index 74f704d4245199205afff5a992805f40a365cc81..9f9051214c81e1fc4a6f1a0b0d18ea98bdf2fe92 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2736,4 +2736,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2773,4 +2773,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
// Leaves start - Photographer API
@NotNull org.leavesmc.leaves.entity.photographer.PhotographerManager getPhotographerManager();
// Leaves end - Photographer API
@@ -33,10 +33,10 @@ index ce128dd8120b75884cb208d7ba7d316ee110333b..e63fb4e0c55929f2721e16f69e0c0a4b
+ // Leaves end - Bytebuf API
}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 3584ca0a89f59e391ab6d5be8f2274a6801d025f..4171ac88c491c071af9def920084292e108587f0 100644
index 3eef8d533c2aa65d66fbd58f2260b4764a964ebe..73285735653a3aec90df4866b3f97f8ca38a5394 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -3859,6 +3859,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -3931,6 +3931,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
boolean isChunkSent(long chunkKey);
// Paper end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Config API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 0149af5bd4234f925e12d78251766be5a16e5060..3c019280bc751e0710f1d34478b56986bc6000fc 100644
index c25729882f87a904e59680967f3d20b02df50eae..5cc913f9e903ea5ef51c2e2b8cc18fdad8838c1e 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3039,4 +3039,10 @@ public final class Bukkit {
@@ -3026,4 +3026,10 @@ public final class Bukkit {
return server.getBytebufManager();
}
// Leaves end - Bytebuf API
@@ -20,10 +20,10 @@ index 0149af5bd4234f925e12d78251766be5a16e5060..3c019280bc751e0710f1d34478b56986
+ // Leaves end - Config API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index e63fb4e0c55929f2721e16f69e0c0a4b455477fa..37ff5eabaf0fd3ab72eb37a1f21904b5a1adebe0 100644
index 9f9051214c81e1fc4a6f1a0b0d18ea98bdf2fe92..95621c3b4279f4d1b7786772cc035f3747e9d84f 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2740,4 +2740,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2777,4 +2777,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
// Leaves start - Bytebuf API
org.leavesmc.leaves.bytebuf.BytebufManager getBytebufManager();
// Leaves end - Bytebuf API

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Leaves Plugin
This patch is licensed under the MIT license.
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 6c7a84baee27bd1e1ab95fe3a84057b8109c78d1..195a63c86c565ea0a1672138b9d217abaa0258ad 100644
index 5cc913f9e903ea5ef51c2e2b8cc18fdad8838c1e..554b8977c9b358f177e29907bcebaed8ab2100fc 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3017,6 +3017,12 @@ public final class Bukkit {
@@ -3004,6 +3004,12 @@ public final class Bukkit {
server.restart();
}
@@ -23,10 +23,10 @@ index 6c7a84baee27bd1e1ab95fe3a84057b8109c78d1..195a63c86c565ea0a1672138b9d217ab
/**
* Returns a bot manager.
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 8aa35daa8c80d90c4e863902a4db85175885cfe8..6e0d00d3d7220cacac781b010dac4212c64d5b08 100644
index 95621c3b4279f4d1b7786772cc035f3747e9d84f..cdc5295db1dbbd4b20a0acc99fdcc9013d6a5489 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2724,6 +2724,10 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2761,6 +2761,10 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
// Paper end - API to check if the server is sleeping

View File

@@ -22,9 +22,9 @@ public interface Bot extends Player {
/**
* Gets the fakeplayer name without prefix and suffix
*
* @return fakeplayer real name
* @return fakeplayer raw name
*/
@NotNull String getRealName();
@NotNull String getRawName();
/**
* Gets the creator's UUID of the fakeplayer
@@ -74,4 +74,13 @@ public interface Bot extends Player {
* @return success
*/
boolean remove(boolean save);
/**
* Remove the fakeplayer
*
* @param save should save
* @param resume should resume at next server start
* @return success
*/
boolean remove(boolean save, boolean resume);
}

View File

@@ -10,8 +10,8 @@ import java.util.function.Consumer;
public interface BotCreator {
static BotCreator of(String realName, Location location) {
return Bukkit.getBotManager().botCreator(realName, location);
static BotCreator of(String rawName, Location location) {
return Bukkit.getBotManager().botCreator(rawName, location);
}
BotCreator name(String name);

View File

@@ -44,5 +44,5 @@ public interface BotManager {
*/
<T extends BotAction<T>> T newAction(@NotNull Class<T> type);
BotCreator botCreator(@NotNull String realName, @NotNull Location location);
BotCreator botCreator(@NotNull String rawName, @NotNull Location location);
}

View File

@@ -4,13 +4,13 @@
-import io.papermc.fill.model.BuildChannel
import io.papermc.paperweight.attribute.DevBundleOutput
import io.papermc.paperweight.util.*
import io.papermc.paperweight.util.data.FileEntry
@@ -10,24 +_,36 @@
import java.time.Instant
@@ -7,22 +_,34 @@
`java-library`
`maven-publish`
idea
- id("io.papermc.paperweight.core")
- id("io.papermc.fill.gradle") version "1.0.7"
- id("io.papermc.fill.gradle") version "1.0.9"
+ id("org.leavesmc.leavesweight.core") // Leaves - build change
}
@@ -18,9 +18,9 @@
+val leavesMavenPublicUrl = "https://repo.leavesmc.com/snapshots/" // Leaves - build change
dependencies {
mache("io.papermc:mache:1.21.8+build.2")
mache("io.papermc:mache:1.21.10+build.9")
- paperclip("io.papermc:paperclip:3.0.3")
+ leavesclip("org.leavesmc:leavesclip:3.0.7") // Leaves - build change
+ leavesclip("org.leavesmc:leavesclip:3.0.8") // Leaves - build change
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
@@ -42,12 +42,9 @@
+ // Leaves end - build change
+
spigot {
- enabled = true
+ // enabled = true // Leaves - disable
buildDataRef = "436eac9815c211be1a2a6ca0702615f995e81c44"
packageVersion = "v1_21_R5" // also needs to be updated in MappingEnvironment
}
@@ -49,6 +_,7 @@
enabled = true
buildDataRef = "42d18d4c4653ffc549778dbe223f6994a031d69e"
@@ -46,6 +_,7 @@
libraryRepositories.addAll(
"https://repo.maven.apache.org/maven2/",
paperMavenPublicUrl,
@@ -55,7 +52,7 @@
)
}
@@ -107,7 +_,22 @@
@@ -104,7 +_,22 @@
}
}
@@ -79,7 +76,7 @@
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
extendsFrom(configurations.compileClasspath.get())
}
@@ -129,7 +_,19 @@
@@ -127,7 +_,19 @@
}
dependencies {
@@ -97,10 +94,10 @@
+ exclude(group = "com.google.guava", module = "guava")
+ }
+ // Leaves end - leaves plugin
implementation("ca.spottedleaf:concurrentutil:0.0.3")
implementation("ca.spottedleaf:concurrentutil:0.0.7")
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
@@ -157,7 +_,6 @@
@@ -154,7 +_,6 @@
implementation("org.spongepowered:configurate-yaml:4.2.0")
// Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed
@@ -108,8 +105,8 @@
runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0")
runtimeOnly("com.mysql:mysql-connector-j:9.2.0")
runtimeOnly("com.lmax:disruptor:3.4.4")
@@ -188,26 +_,36 @@
implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1")
@@ -185,26 +_,36 @@
implementation("me.lucko:spark-paper:1.10.152")
}
+// Leaves start - hide irrelevant compilation warnings
@@ -127,7 +124,7 @@
val git = Git(rootProject.layout.projectDirectory.path)
val mcVersion = rootProject.providers.gradleProperty("mcVersion").get()
val build = System.getenv("BUILD_NUMBER") ?: null
- val buildTime = if (build != null) Instant.now() else Instant.EPOCH
- val buildTime = providers.environmentVariable("BUILD_STARTED_AT").map(Instant::parse).orElse(Instant.EPOCH).get()
+ val buildTime = Instant.now() // Leaves - always use build time
val gitHash = git.exec(providers, "rev-parse", "--short=7", "HEAD").get().trim()
val implementationVersion = "$mcVersion-${build ?: "DEV"}-$gitHash"
@@ -151,7 +148,7 @@
"Build-Number" to (build ?: ""),
"Build-Time" to buildTime.toString(),
"Git-Branch" to gitBranch,
@@ -266,7 +_,7 @@
@@ -263,7 +_,7 @@
jvmArgumentProviders.add(provider)
}
@@ -160,7 +157,7 @@
idea {
module {
generatedSourceDirs.add(generatedDir.toFile())
@@ -315,6 +_,10 @@
@@ -300,6 +_,10 @@
}
args("--nogui")
@@ -171,7 +168,7 @@
systemProperty("net.kyori.adventure.text.warnWhenLegacyFormattingDetected", true)
if (providers.gradleProperty("paper.runDisableWatchdog").getOrElse("false") == "true") {
systemProperty("disable.watchdog", true)
@@ -359,30 +_,26 @@
@@ -344,30 +_,26 @@
classpath(tasks.createReobfBundlerJar.flatMap { it.outputZip })
mainClass.set(null as String?)
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Build changes
diff --git a/ca/spottedleaf/moonrise/paper/PaperHooks.java b/ca/spottedleaf/moonrise/paper/PaperHooks.java
index 42899a91b9061b85985fbbd0de4032c757f4aa8f..a93f00d1a64e4deb9b89435bab258f3bad487e2f 100644
index 4b87e48309323faee2bf5cc65428a28d8646ef7a..d129f160acf0da81cadeacab9587d86dcc49dc6a 100644
--- a/ca/spottedleaf/moonrise/paper/PaperHooks.java
+++ b/ca/spottedleaf/moonrise/paper/PaperHooks.java
@@ -29,7 +29,7 @@ import net.minecraft.world.phys.AABB;
@@ -18,10 +18,10 @@ index 42899a91b9061b85985fbbd0de4032c757f4aa8f..a93f00d1a64e4deb9b89435bab258f3b
private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger();
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 9243bb11e3f968d0bf0eb2e3dc9295c0232bc15d..9ba90e9e1c6dae13579337edb5a5bede0daa4098 100644
index f63a5567a2e845de904c2dacfbb875049e3e0c65..e82584a516af3b08ca4b11ed2aaf28cfbf345825 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1194,7 +1194,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1283,7 +1283,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("*************************************************************************************");
LOGGER.info("This is the first time you're starting this server.");
LOGGER.info("It's recommended you read our 'Getting Started' documentation for guidance.");
@@ -30,7 +30,7 @@ index 9243bb11e3f968d0bf0eb2e3dc9295c0232bc15d..9ba90e9e1c6dae13579337edb5a5bede
LOGGER.info("*************************************************************************************");
}
// Paper end - Add onboarding message for initial server start
@@ -1856,7 +1856,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1945,7 +1945,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@@ -40,10 +40,10 @@ index 9243bb11e3f968d0bf0eb2e3dc9295c0232bc15d..9ba90e9e1c6dae13579337edb5a5bede
public SystemReport fillSystemReport(SystemReport systemReport) {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..461dc90ac9ae7f9af693653bc56a8cf448b7823e 100644
index 354b48c88b113c4048e258f2402aad2647d3c364..d49ad0b4f697a0b50b287c0004ea98ea6ad5771e 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -182,9 +182,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -275,9 +275,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
thread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
@@ -52,9 +52,9 @@ index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..461dc90ac9ae7f9af693653bc56a8cf4
+ com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics // Leaves - down
+
this.setPvpAllowed(properties.pvp);
this.setFlightAllowed(properties.allowFlight);
this.setMotd(properties.motd);
// this.worldData.setGameType(properties.gameMode.get()); // CraftBukkit - moved to world loading
LOGGER.info("Default game type: {}", properties.gameMode.get());
// Paper start - Unix domain socket support
diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java
index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..a2b69a0cc34adb4d3da00250db8320b26d0ed697 100644
--- a/net/minecraft/server/gui/MinecraftServerGui.java

View File

@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Sat, 1 Feb 2025 14:21:05 +0800
Subject: [PATCH] Leaves Server Config And Command
Subject: [PATCH] Leaves Server Config
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index c22234df51a61954d1728b8406545f753dd8a3c2..d4775a33ee63a61e15ec3c1051261c01f2af28e0 100644
index 4693330ebbd1540559caa4ef5494e75b69351c24..ecdb937f08a437a1d2398e49ca835071015844f2 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -184,6 +184,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -277,6 +277,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
@@ -16,4 +16,4 @@ index c22234df51a61954d1728b8406545f753dd8a3c2..d4775a33ee63a61e15ec3c1051261c01
+
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics // Leaves - down
this.setPvpAllowed(properties.pvp);
// this.worldData.setGameType(properties.gameMode.get()); // CraftBukkit - moved to world loading

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Utils
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..ea616ff83c14dd582bdb49442bc0b9103fc8f1b3 100644
index 2e3e038874757049445a91bf590d5a1a427a3f6d..9b122a3dc18c6dbc84683ab54e5a503d0a5b7e4b 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -372,6 +372,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -373,6 +373,8 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
public boolean isTemporarilyActive;
public long activatedImmunityTick = Integer.MIN_VALUE;
@@ -17,7 +17,7 @@ index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..ea616ff83c14dd582bdb49442bc0b910
public void inactiveTick() {
}
// Paper end - EAR 2
@@ -2585,6 +2587,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2634,6 +2636,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
output.putBoolean("Paper.FreezeLock", true);
}
// Paper end
@@ -25,7 +25,7 @@ index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..ea616ff83c14dd582bdb49442bc0b910
} catch (Throwable var7) {
CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT");
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved");
@@ -2705,6 +2708,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2754,6 +2757,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
}
freezeLocked = input.getBooleanOr("Paper.FreezeLock", false);
// Paper end
@@ -33,16 +33,16 @@ index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..ea616ff83c14dd582bdb49442bc0b910
} catch (Throwable var7) {
CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT");
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded");
@@ -4422,7 +4426,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return SlotAccess.NULL;
@@ -4512,7 +4516,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
return this.getType().is(EntityTypeTags.DEFLECTS_PROJECTILES) ? ProjectileDeflection.REVERSE : ProjectileDeflection.NONE;
}
- @Nullable
+ @org.jetbrains.annotations.NotNull // Leaves - notnull
public MinecraftServer getServer() {
return this.level().getServer();
public net.minecraft.world.entity.LivingEntity getControllingPassenger() {
return null;
}
@@ -5364,4 +5368,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5402,4 +5406,9 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition());
}
// Paper end - Expose entity id counter
@@ -53,10 +53,10 @@ index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..ea616ff83c14dd582bdb49442bc0b910
+ // Leaves end - leaves ex data
}
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..9383d9f940163f42db8802f0a260925a83119160 100644
index d225267b1b07854b76c88ce461d7817a86d023a0..01e0dc28ef63456a45b800e72d76180b40811a72 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -962,7 +962,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -916,7 +916,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
return this.isClientSide;
}
@@ -66,7 +66,7 @@ index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..9383d9f940163f42db8802f0a260925a
public MinecraftServer getServer() {
return null;
diff --git a/net/minecraft/world/level/LevelAccessor.java b/net/minecraft/world/level/LevelAccessor.java
index 5f28df24876f93866312c3c7d19cb6bcaf5e2f8b..049133cba588612127b45c1489f80d2fe6d6e330 100644
index e4a9e59661f5b51caf5b4fb12b0c90b14c1f9647..f5e9e395f04d5335d5d9a220f94962a72e38577d 100644
--- a/net/minecraft/world/level/LevelAccessor.java
+++ b/net/minecraft/world/level/LevelAccessor.java
@@ -46,7 +46,7 @@ public interface LevelAccessor extends CommonLevelAccessor, LevelTimeAccess, Sch
@@ -79,10 +79,10 @@ index 5f28df24876f93866312c3c7d19cb6bcaf5e2f8b..049133cba588612127b45c1489f80d2f
default Difficulty getDifficulty() {
diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java
index be6f37f91569c659c609e5e8d38671ca86f8cd95..958914e40fceda5d67a98154817b4c5ce478a62d 100644
index 572fcb33b14d16334e2ab92ddf8699f1ba975aff..c431d0c45e71e0c8b880784181c92967e40779bd 100644
--- a/net/minecraft/world/level/block/Block.java
+++ b/net/minecraft/world/level/block/Block.java
@@ -610,6 +610,13 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -649,6 +649,13 @@ public class Block extends BlockBehaviour implements ItemLike {
}
// CraftBukkit end
@@ -97,10 +97,10 @@ index be6f37f91569c659c609e5e8d38671ca86f8cd95..958914e40fceda5d67a98154817b4c5c
@Override
public boolean equals(Object other) {
diff --git a/net/minecraft/world/level/block/state/BlockBehaviour.java b/net/minecraft/world/level/block/state/BlockBehaviour.java
index 834e27ef2f7b342b074ff9e1e390e02f3ca1c399..be66f0f1cb1b0bcec8f9489a1fdd8777df1adb6b 100644
index d31da50baeb7f47f0e1d81ee3c05023370df8cd3..a38618c28819405f0fb35aa686d1f3f0e94e5da2 100644
--- a/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -763,7 +763,7 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -766,7 +766,7 @@ public abstract class BlockBehaviour implements FeatureElement {
}
public PushReaction getPistonPushReaction() {

View File

@@ -33,10 +33,10 @@ index fb263fa1f30a7dfcb7ec2656abfb38e5fe88eac9..56fd1ed7ccaf96e7eedea60fbdbf7f93
};
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 9ba90e9e1c6dae13579337edb5a5bede0daa4098..eb6d5e82b6a2576af14c0c080a05a87022f90c93 100644
index e82584a516af3b08ca4b11ed2aaf28cfbf345825..2493722c47b92cbcd13c08af0caf38a543ac7e37 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1745,6 +1745,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1830,6 +1830,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
profilerFiller.popPush("server gui refresh");
@@ -46,10 +46,10 @@ index 9ba90e9e1c6dae13579337edb5a5bede0daa4098..eb6d5e82b6a2576af14c0c080a05a870
this.tickables.get(i).run();
}
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a795c9bc862 100644
index c6db2c96db96453daaf49779f588f75f7c3d3d60..adb26ae4dfd5dc111cc55000b71c15f95239b090 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -57,6 +57,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -58,6 +58,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
public @Nullable String playerBrand;
public final java.util.Set<String> pluginMessagerChannels;
// Paper end - retain certain values
@@ -57,7 +57,7 @@ index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a79
public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie) {
this.server = server;
@@ -70,6 +71,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -71,6 +72,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
this.pluginMessagerChannels = cookie.channels();
this.keepAlive = cookie.keepAlive();
// Paper end
@@ -65,7 +65,7 @@ index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a79
}
// Paper start - configuration phase API
@@ -149,6 +151,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -150,6 +152,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
@@ -84,7 +84,7 @@ index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a79
// Paper start
if (!(packet.payload() instanceof final net.minecraft.network.protocol.common.custom.DiscardedPayload discardedPayload)) {
return;
@@ -208,10 +222,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -209,10 +223,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
final String channel = new String(data, from, length, java.nio.charset.StandardCharsets.US_ASCII);
if (register) {
bridge.addChannel(channel);
@@ -97,7 +97,7 @@ index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a79
}
@Override
@@ -379,9 +394,9 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -380,9 +395,9 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
net.minecraft.server.level.ServerPlayer player = serverGamePacketListener.player;
org.bukkit.event.player.PlayerKickEvent.Cause cause = disconnectionDetails.disconnectionReason().orElseThrow().game().orElse(org.bukkit.event.player.PlayerKickEvent.Cause.UNKNOWN);
org.bukkit.event.player.PlayerKickEvent event = new org.bukkit.event.player.PlayerKickEvent(
@@ -110,7 +110,7 @@ index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a79
);
@@ -414,10 +429,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -415,10 +430,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
private void disconnect0(DisconnectionDetails disconnectionDetails) {
this.connection
@@ -126,10 +126,10 @@ index f02800e4e941b05bde6f0d5fac76e2b6ec5b9832..7a7090a2a7b41762d94cebf847cc6a79
this.connection.setReadOnly();
// CraftBukkit - Don't wait
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index e1fd699b33832c0f01b14023db7cc2b9d6797227..e064fd73a3904bf6aeb6ba38978cfea81e79e5dc 100644
index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..d9fbc5dc6665fd13cc2aa9978ea6edef4c736548 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -335,6 +335,8 @@ public abstract class PlayerList {
@@ -239,6 +239,8 @@ public abstract class PlayerList {
return;
}
@@ -138,7 +138,7 @@ index e1fd699b33832c0f01b14023db7cc2b9d6797227..e064fd73a3904bf6aeb6ba38978cfea8
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
@@ -507,6 +509,7 @@ public abstract class PlayerList {
@@ -424,6 +426,7 @@ public abstract class PlayerList {
return this.remove(player, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? player.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(player.getDisplayName())));
}
public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) {
@@ -146,7 +146,7 @@ index e1fd699b33832c0f01b14023db7cc2b9d6797227..e064fd73a3904bf6aeb6ba38978cfea8
// Paper end - Fix kick event leave message not being sent
ServerLevel serverLevel = player.level();
player.awardStat(Stats.LEAVE_GAME);
@@ -1396,6 +1399,7 @@ public abstract class PlayerList {
@@ -1279,6 +1282,7 @@ public abstract class PlayerList {
serverPlayer.connection.send(clientboundUpdateRecipesPacket);
serverPlayer.getRecipeBook().sendInitialRecipeBook(serverPlayer);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable trading with the void
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..364d5e28646ea341034921622354c7b19644b343 100644
index c0ed4e023b35a076b554fa387e9a2324166b2fae..0c9002b6ceaf5f11a059db356976215d5acf5cce 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -2727,7 +2727,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2794,7 +2794,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Spigot start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
// Paper start - Fix merchant inventory not closing on entity removal
@@ -18,10 +18,10 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..364d5e28646ea341034921622354c7b1
}
// Paper end - Fix merchant inventory not closing on entity removal
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 91f505c9d84aba773d237664c2aaaf9750cadadf..184d116320f0cd3e9fba47a86e94e0a8424c913f 100644
index d9fbc5dc6665fd13cc2aa9978ea6edef4c736548..4abf4ea7f86955351b5e4da2c89a707003802d2e 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -551,7 +551,7 @@ public abstract class PlayerList {
@@ -468,7 +468,7 @@ public abstract class PlayerList {
player.stopRiding();
rootVehicle.getPassengersAndSelf().forEach(entity -> {
// Paper start - Fix villager boat exploit
@@ -31,7 +31,7 @@ index 91f505c9d84aba773d237664c2aaaf9750cadadf..184d116320f0cd3e9fba47a86e94e0a8
if (human != null) {
villager.setTradingPlayer(null);
diff --git a/net/minecraft/world/inventory/MerchantMenu.java b/net/minecraft/world/inventory/MerchantMenu.java
index d59f67ffe34201c63e3d9706a4434f33b6732edb..1bf2a015fa35981328c098f2fec363c84b85b2a7 100644
index 6dfee62a46a5882df7f405e59d762647289d7866..ade7732b638b30ad0ae50605793cbf75754aad0e 100644
--- a/net/minecraft/world/inventory/MerchantMenu.java
+++ b/net/minecraft/world/inventory/MerchantMenu.java
@@ -74,6 +74,7 @@ public class MerchantMenu extends AbstractContainerMenu {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make snowball and egg can knockback player
diff --git a/net/minecraft/world/entity/projectile/Snowball.java b/net/minecraft/world/entity/projectile/Snowball.java
index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..1474cf208019cd46ca767374bceb3c9c31fdeab2 100644
index cd36d3a988ae871fe93157c24c26f36308c71fbf..f8da22e77547916076056ea7202dd499fefd8f9f 100644
--- a/net/minecraft/world/entity/projectile/Snowball.java
+++ b/net/minecraft/world/entity/projectile/Snowball.java
@@ -54,6 +54,12 @@ public class Snowball extends ThrowableItemProjectile {
@@ -55,6 +55,12 @@ public class Snowball extends ThrowableItemProjectile {
Entity entity = result.getEntity();
int i = entity instanceof Blaze ? 3 : 0;
entity.hurt(this.damageSources().thrown(this, this.getOwner()), i);
@@ -22,10 +22,10 @@ index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..1474cf208019cd46ca767374bceb3c9c
@Override
diff --git a/net/minecraft/world/entity/projectile/ThrownEgg.java b/net/minecraft/world/entity/projectile/ThrownEgg.java
index 73ec34b43f3fb2aa3edc3f1cb48a923d1fa32036..6583f983129b2a90bd44104de9f4f992fa21a00c 100644
index bbb364be2af16a3c200d2197166bb3ad28e5e35d..34deb006b1a81e8c6f65150ac7ab80f037ffa0c7 100644
--- a/net/minecraft/world/entity/projectile/ThrownEgg.java
+++ b/net/minecraft/world/entity/projectile/ThrownEgg.java
@@ -55,6 +55,12 @@ public class ThrownEgg extends ThrowableItemProjectile {
@@ -56,6 +56,12 @@ public class ThrownEgg extends ThrowableItemProjectile {
protected void onHitEntity(EntityHitResult result) {
super.onHitEntity(result);
result.getEntity().hurt(this.damageSources().thrown(this, this.getOwner()), 0.0F);

View File

@@ -17,10 +17,10 @@ index a82d84283632342bd30bc3449983431ba43583e0..f59526f6bfa1b4af5b474f0b438513c9
Set<CriterionTrigger.Listener<T>> set = (Set) advancements.criterionData.get(this); // Paper - fix PlayerAdvancements leak
if (set != null && !set.isEmpty()) {
diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java
index 41005f6b9f53a9c1125ad5e08538d9f5aacb3571..3e9b8c5fb2157f767de8bddc3e767512c5f7651f 100644
index 14addbaf68b7ad80490187d12d9c9b00891e2ce1..b186b5e0d3b32d7b51b2f58f0ef4b2bf36ae5c13 100644
--- a/net/minecraft/network/Connection.java
+++ b/net/minecraft/network/Connection.java
@@ -96,7 +96,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -95,7 +95,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@Nullable
private volatile PacketListener disconnectListener;
@Nullable
@@ -30,19 +30,19 @@ index 41005f6b9f53a9c1125ad5e08538d9f5aacb3571..3e9b8c5fb2157f767de8bddc3e767512
private DisconnectionDetails disconnectionDetails;
private boolean encrypted;
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index eb6d5e82b6a2576af14c0c080a05a87022f90c93..5c49816db8241694eed640a34c056effbf382934 100644
index 2493722c47b92cbcd13c08af0caf38a543ac7e37..309ff4c55b2a4ccf3d18951b51c2e10d0ff39bfc 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -304,6 +304,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private final Set<String> pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
@@ -378,6 +378,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end - improve tick loop
+ private org.leavesmc.leaves.bot.BotList botList; // Leaves - fakeplayer
+
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
AtomicReference<S> atomicReference = new AtomicReference<>();
@@ -996,6 +998,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1013,6 +1015,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
@@ -50,8 +50,8 @@ index eb6d5e82b6a2576af14c0c080a05a87022f90c93..5c49816db8241694eed640a34c056eff
// CraftBukkit start
if (this.server != null) {
this.server.spark.disable(); // Paper - spark
@@ -1493,7 +1496,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
int i = this.pauseWhileEmptySeconds() * 20;
@@ -1580,7 +1583,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
int i = this.pauseWhenEmptySeconds() * 20;
this.removeDisabledPluginsBlockingSleep(); // Paper - API to allow/disallow tick sleeping
if (i > 0) {
- if (this.playerList.getPlayerCount() == 0 && !this.tickRateManager.isSprinting() && this.pluginsBlockingSleep.isEmpty()) { // Paper - API to allow/disallow tick sleeping
@@ -59,7 +59,7 @@ index eb6d5e82b6a2576af14c0c080a05a87022f90c93..5c49816db8241694eed640a34c056eff
this.emptyTicks++;
} else {
this.emptyTicks = 0;
@@ -1763,6 +1766,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1857,6 +1860,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public void tickConnection() {
this.getConnection().tick();
@@ -67,8 +67,8 @@ index eb6d5e82b6a2576af14c0c080a05a87022f90c93..5c49816db8241694eed640a34c056eff
}
private void synchronizeTime(ServerLevel level) {
@@ -2815,6 +2819,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return 0;
@@ -2973,6 +2977,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return this.debugSubscribers;
}
+ // Leaves start - fakeplayer
@@ -101,7 +101,7 @@ index fdeca41d40705f28864ce4443d01cd872c9d51b0..5c0e338dc1b0eb5724d10a73d6fc7975
AdvancementProgress orStartProgress = this.getOrStartProgress(advancement);
boolean isDone = orStartProgress.isDone();
diff --git a/net/minecraft/server/commands/BanIpCommands.java b/net/minecraft/server/commands/BanIpCommands.java
index bb5dbfeb6915a808d6f70e332bf9f0a3f9b7d19a..62f23d47b55eb59956d69153d508b5c9ab544adf 100644
index 79910948d3d835ac0eaec5785efbf87440dc5489..ad29caa0cd6e8b84760f9a19252d6d4f52f4227e 100644
--- a/net/minecraft/server/commands/BanIpCommands.java
+++ b/net/minecraft/server/commands/BanIpCommands.java
@@ -44,6 +44,12 @@ public class BanIpCommands {
@@ -118,35 +118,26 @@ index bb5dbfeb6915a808d6f70e332bf9f0a3f9b7d19a..62f23d47b55eb59956d69153d508b5c9
return banIp(source, playerByName.getIpAddress(), reason);
} else {
diff --git a/net/minecraft/server/commands/BanPlayerCommands.java b/net/minecraft/server/commands/BanPlayerCommands.java
index ac3ba9d0ea344fa189912d359b718fbe05e7aa49..61a4db144f721b47ac1000df72263bceb6e38ec0 100644
index 79e2647a61c2cc88f90ac8db662016038096a45e..3c8be23fe195a3dc4910ec50caadb180956124ec 100644
--- a/net/minecraft/server/commands/BanPlayerCommands.java
+++ b/net/minecraft/server/commands/BanPlayerCommands.java
@@ -44,8 +44,16 @@ public class BanPlayerCommands {
private static int banPlayers(CommandSourceStack source, Collection<GameProfile> gameProfiles, @Nullable Component reason) throws CommandSyntaxException {
@@ -44,8 +44,15 @@ public class BanPlayerCommands {
private static int banPlayers(CommandSourceStack source, Collection<NameAndId> players, @Nullable Component reason) throws CommandSyntaxException {
UserBanList bans = source.getServer().getPlayerList().getBans();
int i = 0;
-
+ boolean hasBot = false; // Leaves - disable kick
for (GameProfile gameProfile : gameProfiles) {
for (NameAndId nameAndId : players) {
+ // Leaves start - disable ban
+ if (gameProfile instanceof org.leavesmc.leaves.bot.BotList.CustomGameProfile) {
+ if (nameAndId.isBot()) {
+ source.sendFailure(Component.literal("Permission denied"));
+ hasBot = true;
+ continue;
+ }
+ // Leaves end - disable ban
+ ServerPlayer player = source.getServer().getPlayerList().getPlayer(gameProfile.getId());
if (!bans.isBanned(gameProfile)) {
if (!bans.isBanned(nameAndId)) {
UserBanListEntry userBanListEntry = new UserBanListEntry(
gameProfile, null, source.getTextName(), null, reason == null ? null : reason.getString()
@@ -55,7 +63,6 @@ public class BanPlayerCommands {
source.sendSuccess(
() -> Component.translatable("commands.ban.success", Component.literal(gameProfile.getName()), userBanListEntry.getReason()), true
);
- ServerPlayer player = source.getServer().getPlayerList().getPlayer(gameProfile.getId());
if (player != null) {
player.connection.disconnect(Component.translatable("multiplayer.disconnect.banned"), org.bukkit.event.player.PlayerKickEvent.Cause.BANNED); // Paper - kick event cause
}
nameAndId, null, source.getTextName(), null, reason == null ? null : reason.getString()
@@ -63,7 +70,13 @@ public class BanPlayerCommands {
}
@@ -163,7 +154,7 @@ index ac3ba9d0ea344fa189912d359b718fbe05e7aa49..61a4db144f721b47ac1000df72263bce
return i;
}
diff --git a/net/minecraft/server/commands/KickCommand.java b/net/minecraft/server/commands/KickCommand.java
index 14e2e0fcf20c8fa875bbefb97a673be4928d099a..8af40a77dc3da1599da2793168488f88686b8785 100644
index a5e5b0e0cd67a65b9fe3f69416070429196c5fa8..1a756a09cd281e60e8802a4111f71b0be1c70dcf 100644
--- a/net/minecraft/server/commands/KickCommand.java
+++ b/net/minecraft/server/commands/KickCommand.java
@@ -46,9 +46,17 @@ public class KickCommand {
@@ -181,7 +172,7 @@ index 14e2e0fcf20c8fa875bbefb97a673be4928d099a..8af40a77dc3da1599da2793168488f88
+ continue;
+ }
+ // Leaves end - disable kick
if (!source.getServer().isSingleplayerOwner(serverPlayer.getGameProfile())) {
if (!source.getServer().isSingleplayerOwner(serverPlayer.nameAndId())) {
serverPlayer.connection.disconnect(reason, org.bukkit.event.player.PlayerKickEvent.Cause.KICK_COMMAND); // Paper - kick event cause
source.sendSuccess(() -> Component.translatable("commands.kick.success", serverPlayer.getDisplayName(), reason), true);
@@ -57,7 +65,13 @@ public class KickCommand {
@@ -200,22 +191,22 @@ index 14e2e0fcf20c8fa875bbefb97a673be4928d099a..8af40a77dc3da1599da2793168488f88
return i;
}
diff --git a/net/minecraft/server/commands/OpCommand.java b/net/minecraft/server/commands/OpCommand.java
index f2286b96b8f40b4588f817913c42ae7b4a92340f..e6c7bbb023000b9de90c1256274ff5aba4a6478a 100644
index 4c7bccc00b9e84c4744f6cdc2c2e574a33ffe324..065af7f615711d7830002cd8f3046fab706082c1 100644
--- a/net/minecraft/server/commands/OpCommand.java
+++ b/net/minecraft/server/commands/OpCommand.java
@@ -43,6 +43,7 @@ public class OpCommand {
int i = 0;
for (GameProfile gameProfile : gameProfiles) {
+ if (gameProfile instanceof org.leavesmc.leaves.bot.BotList.CustomGameProfile) continue; // Leaves - disable op
if (!playerList.isOp(gameProfile)) {
playerList.op(gameProfile);
for (NameAndId nameAndId : players) {
+ if (nameAndId.isBot()) continue; // Leaves - disable op
if (!playerList.isOp(nameAndId)) {
playerList.op(nameAndId);
i++;
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 414a8357a7498c69341fa634ada2e664e18ca03a..f85993fc507d699728e058b12bb49dcb7aaea44b 100644
index 361034289bb5e4241f3313581ddbc4e33823a9eb..8d73fffb41346851d088ca0dee206661ff85ec29 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -162,6 +162,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -255,6 +255,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
// Spigot start
@@ -223,22 +214,22 @@ index 414a8357a7498c69341fa634ada2e664e18ca03a..f85993fc507d699728e058b12bb49dcb
this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage));
org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings"));
org.spigotmc.SpigotConfig.registerCommands();
@@ -185,6 +186,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -278,6 +279,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
org.leavesmc.leaves.LeavesConfig.init((java.io.File) options.valueOf("leaves-settings")); // Leaves - Server Config
+ this.getBotList().loadBotInfo(); // Leaves - load resident bot info
+ this.getBotList().loadResumeBotInfo(); // Leaves - load resident bot info
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics // Leaves - down
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
index eb352aa4296abc3ed4cf31c590bc0be66daf4de3..019886669966c69936ae6591598c97a8afbfd3db 100644
index ce53eb1e966e07b04e6a13785a858a3318b2c573..1993907c606b231b879a7279d3880876f5307b1c 100644
--- a/net/minecraft/server/level/ChunkMap.java
+++ b/net/minecraft/server/level/ChunkMap.java
@@ -1317,6 +1317,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1365,6 +1365,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
} else if (this.seenBy.remove(player.connection)) {
this.serverEntity.removePairing(player);
} else {
this.removePlayer(player);
+ // Leaves start - render bot
+ if (entity instanceof org.leavesmc.leaves.bot.ServerBot bot) {
+ if (bot.needSendFakeData(player)) {
@@ -250,10 +241,10 @@ index eb352aa4296abc3ed4cf31c590bc0be66daf4de3..019886669966c69936ae6591598c97a8
}
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f073a95181 100644
index 0c9002b6ceaf5f11a059db356976215d5acf5cce..2bab1246cf658508228c7f662175692bfd82cad4 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -214,6 +214,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -222,6 +222,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent
public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent
private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current)
@@ -261,7 +252,7 @@ index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f0
@Override
public @Nullable LevelChunk getChunkIfLoaded(int x, int z) {
@@ -675,6 +676,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -699,6 +700,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
// Paper end - rewrite chunk system
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
@@ -269,7 +260,7 @@ index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f0
}
// Paper start
@@ -2226,6 +2228,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2279,6 +2281,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
return this.players;
}
@@ -282,7 +273,7 @@ index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f0
@Override
public void updatePOIOnBlockStateChange(BlockPos pos, BlockState oldState, BlockState newState) {
Optional<Holder<PoiType>> optional = PoiTypes.forState(oldState);
@@ -2661,6 +2669,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2728,6 +2736,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true
if (entity instanceof ServerPlayer serverPlayer) {
ServerLevel.this.players.add(serverPlayer);
@@ -294,7 +285,7 @@ index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f0
if (serverPlayer.isReceivingWaypoints()) {
ServerLevel.this.getWaypointManager().addPlayer(serverPlayer);
}
@@ -2739,6 +2752,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2806,6 +2819,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
ServerLevel.this.getChunkSource().removeEntity(entity);
if (entity instanceof ServerPlayer serverPlayer) {
ServerLevel.this.players.remove(serverPlayer);
@@ -307,10 +298,10 @@ index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f0
ServerLevel.this.updateSleepingPlayerList();
}
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 8f94c963f2c59668d72d162f46f7505d6a6b06a5..87c8c4c7ca52f7d804ddaff87aaf381552e1aee2 100644
index b4a996ac6c570e988b38237a32f90ec5042cbc17..04ea4e33504703c4074aef6e74ec06dc772b1bb9 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -219,7 +219,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -228,7 +228,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
private static final boolean DEFAULT_SPAWN_EXTRA_PARTICLES_ON_FALL = false;
public ServerGamePacketListenerImpl connection;
private final MinecraftServer server;
@@ -319,7 +310,7 @@ index 8f94c963f2c59668d72d162f46f7505d6a6b06a5..87c8c4c7ca52f7d804ddaff87aaf3815
private final PlayerAdvancements advancements;
private final ServerStatsCounter stats;
private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE;
@@ -240,7 +240,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -249,7 +249,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
private Entity camera;
public boolean isChangingDimension;
public boolean seenCredits = false;
@@ -328,7 +319,16 @@ index 8f94c963f2c59668d72d162f46f7505d6a6b06a5..87c8c4c7ca52f7d804ddaff87aaf3815
@Nullable
private Vec3 levitationStartPos;
private int levitationStartTime;
@@ -1454,6 +1454,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1250,7 +1250,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.setClientLoaded(false);
}
- private void tellNeutralMobsThatIDied() {
+ protected void tellNeutralMobsThatIDied() { // Leaves private -> protected
AABB aabb = new AABB(this.blockPosition()).inflate(32.0, 10.0, 32.0);
this.level()
.getEntitiesOfClass(Mob.class, aabb, EntitySelector.NO_SPECTATORS)
@@ -1562,6 +1562,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.lastSentHealth = -1.0F;
this.lastSentFood = -1;
this.teleportSpectators(teleportTransition, serverLevel);
@@ -340,28 +340,76 @@ index 8f94c963f2c59668d72d162f46f7505d6a6b06a5..87c8c4c7ca52f7d804ddaff87aaf3815
// CraftBukkit start
org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), serverLevel.getWorld());
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
diff --git a/net/minecraft/server/players/GameProfileCache.java b/net/minecraft/server/players/GameProfileCache.java
index 066f84df5c31242ab542932f1e243369d0e766e2..52706e843923666940e679a83a302db7a243dd11 100644
--- a/net/minecraft/server/players/GameProfileCache.java
+++ b/net/minecraft/server/players/GameProfileCache.java
@@ -125,6 +125,12 @@ public class GameProfileCache {
// Paper end
diff --git a/net/minecraft/server/players/CachedUserNameToIdResolver.java b/net/minecraft/server/players/CachedUserNameToIdResolver.java
index 3dc78b91cc853cfa6dce69979273b5f35b5f87f1..0625ebf19b5c514e096e6a91539c807ccf0b3f87 100644
--- a/net/minecraft/server/players/CachedUserNameToIdResolver.java
+++ b/net/minecraft/server/players/CachedUserNameToIdResolver.java
@@ -121,6 +121,12 @@ public class CachedUserNameToIdResolver implements UserNameToIdResolver {
public Optional<GameProfile> get(String name) {
@Override
public Optional<NameAndId> get(String name) {
+ // Leaves start - fix bot
+ org.leavesmc.leaves.bot.ServerBot bot = org.leavesmc.leaves.bot.BotList.INSTANCE.getBotByName(name);
+ if (bot != null) {
+ return Optional.of(bot.getGameProfile());
+ return Optional.of(bot.nameAndId());
+ }
+ // Leaves end - fix bot
String string = name.toLowerCase(Locale.ROOT);
boolean stateLocked = true; try { this.stateLock.lock(); // Paper - Fix GameProfileCache concurrency
GameProfileCache.GameProfileInfo gameProfileInfo = this.profilesByName.get(string);
CachedUserNameToIdResolver.GameProfileInfo gameProfileInfo = this.profilesByName.get(string);
diff --git a/net/minecraft/server/players/NameAndId.java b/net/minecraft/server/players/NameAndId.java
index fdcc23c618b5db59e384a38f9ef91b6d2e922a8a..ccb56f29e79805f3286bbb80ce6c4d4b36a6e9e8 100644
--- a/net/minecraft/server/players/NameAndId.java
+++ b/net/minecraft/server/players/NameAndId.java
@@ -8,18 +8,22 @@ import java.util.UUID;
import javax.annotation.Nullable;
import net.minecraft.core.UUIDUtil;
-public record NameAndId(UUID id, String name) {
+public record NameAndId(UUID id, String name, boolean isBot) { // Leaves - fakeplayer
public static final Codec<NameAndId> CODEC = RecordCodecBuilder.create(
instance -> instance.group(UUIDUtil.STRING_CODEC.fieldOf("id").forGetter(NameAndId::id), Codec.STRING.fieldOf("name").forGetter(NameAndId::name))
.apply(instance, NameAndId::new)
);
public NameAndId(GameProfile profile) {
- this(profile.id(), profile.name());
+ this(profile.id(), profile.name(), com.google.common.collect.Iterables.getFirst(profile.properties().get("is_bot"), "false").equals("true")); // Leaves - fakeplayer
}
public NameAndId(com.mojang.authlib.yggdrasil.response.NameAndId nameAndId) {
- this(nameAndId.id(), nameAndId.name());
+ this(nameAndId.id(), nameAndId.name(), false); // Leaves - fakeplayer
+ }
+
+ public NameAndId(UUID uuid, String name) {
+ this(uuid, name, false); // Leaves - fakeplayer
}
@Nullable
@@ -34,7 +38,7 @@ public record NameAndId(UUID id, String name) {
return null;
}
- return new NameAndId(uuid, json.get("name").getAsString());
+ return new NameAndId(uuid, json.get("name").getAsString(), false); // Leaves - fakeplayer
} else {
return null;
}
@@ -47,7 +51,7 @@ public record NameAndId(UUID id, String name) {
public static NameAndId createOffline(String name) {
UUID uuid = UUIDUtil.createOfflinePlayerUUID(name);
- return new NameAndId(uuid, name);
+ return new NameAndId(uuid, name, false); // Leaves - fakeplayer
}
// Paper start - utility method for common conversion back to the game profile
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac233e265e0d 100644
index 4abf4ea7f86955351b5e4da2c89a707003802d2e..6dec8565e9d290302ce7766357a56b8c2295c163 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -337,6 +337,19 @@ public abstract class PlayerList {
@@ -241,6 +241,19 @@ public abstract class PlayerList {
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player);
@@ -369,7 +417,7 @@ index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac23
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
+ org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName());
+ if (bot != null) {
+ this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false);
+ this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false);
+ }
+ this.server.getBotList().bots.forEach(bot1 -> {
+ bot1.sendPlayerInfo(player);
@@ -381,20 +429,20 @@ index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac23
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
@@ -827,6 +840,12 @@ public abstract class PlayerList {
}
// Paper end - Add PlayerPostRespawnEvent
@@ -700,6 +713,12 @@ public abstract class PlayerList {
respawnReason
).callEvent();
// Paper end
+ // Leaves start - bot support
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
+ this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(serverPlayer, true)); // Leaves - render bot
+ }
+ // Leaves end - bot support
+
// CraftBukkit end
return serverPlayer;
@@ -931,11 +950,16 @@ public abstract class PlayerList {
}
@@ -802,11 +821,16 @@ public abstract class PlayerList {
}
public String[] getPlayerNamesArray() {
@@ -402,7 +450,7 @@ index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac23
+ String[] strings = new String[this.players.size() + this.server.getBotList().bots.size()]; // Leaves - fakeplayer support
for (int i = 0; i < this.players.size(); i++) {
strings[i] = this.players.get(i).getGameProfile().getName();
strings[i] = this.players.get(i).getGameProfile().name();
}
+ // Leaves start - fakeplayer support
+ for (int i = this.players.size(); i < strings.length; ++i) {
@@ -412,7 +460,7 @@ index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac23
return strings;
}
@@ -1038,7 +1062,14 @@ public abstract class PlayerList {
@@ -919,7 +943,14 @@ public abstract class PlayerList {
@Nullable
public ServerPlayer getPlayerByName(String username) {
@@ -428,7 +476,15 @@ index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac23
}
public void broadcast(@Nullable Player except, double x, double y, double z, double radius, ResourceKey<Level> dimension, Packet<?> packet) {
@@ -1354,7 +1385,13 @@ public abstract class PlayerList {
@@ -960,6 +991,7 @@ public abstract class PlayerList {
}
// Paper end - Incremental chunk and player saving
}
+ org.leavesmc.leaves.bot.BotList.INSTANCE.saveAllResumeBots(); // Leaves - resident fakeplayer
return null; }); // Paper - ensure main
}
@@ -1226,7 +1258,13 @@ public abstract class PlayerList {
@Nullable
public ServerPlayer getPlayer(UUID playerUUID) {
@@ -442,7 +498,7 @@ index 2dffdc770529e048c4e8df7d70de59c94d3a77be..1135d32f1f275306792b95d10f76ac23
+ // Leaves start - fakeplayer support
}
public boolean canBypassPlayerLimit(GameProfile profile) {
@Nullable
diff --git a/net/minecraft/server/waypoints/ServerWaypointManager.java b/net/minecraft/server/waypoints/ServerWaypointManager.java
index f9e7532f86122a379692561a639a209a126e8bba..2412f46837e967694222730e68e7d25ac32225cf 100644
--- a/net/minecraft/server/waypoints/ServerWaypointManager.java
@@ -472,10 +528,10 @@ index f9e7532f86122a379692561a639a209a126e8bba..2412f46837e967694222730e68e7d25a
for (WaypointTransmitter waypointTransmitter : this.waypoints) {
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 541bd2361b094f04dc2705979204930c564f8323..05730869d237439d3988635d4c8b048a7b654ca7 100644
index 9b122a3dc18c6dbc84683ab54e5a503d0a5b7e4b..c6815ffef7fb2fd2e5ef2769c2c93135b52558f5 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1173,7 +1173,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1185,7 +1185,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
BlockPos onPosLegacy = this.getOnPosLegacy();
BlockState blockState = this.level().getBlockState(onPosLegacy);
@@ -484,7 +540,7 @@ index 541bd2361b094f04dc2705979204930c564f8323..05730869d237439d3988635d4c8b048a
this.checkFallDamage(vec3.y, this.onGround(), blockState, onPosLegacy);
}
@@ -1487,7 +1487,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1506,7 +1506,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
}
// Paper start - optimise collisions
@@ -494,10 +550,10 @@ index 541bd2361b094f04dc2705979204930c564f8323..05730869d237439d3988635d4c8b048a
final boolean yZero = movement.y == 0.0;
final boolean zZero = movement.z == 0.0;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 0268e02d2ef2cb3d699644a804e23a6da4521f4c..cc17fa4aa24d9fa258d61a74ba49c08979774698 100644
index 025ef0b83e5d481c8b2ef25206cafd30897caabd..c18b0155edd695524246e5c2134de94008d8a023 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -3117,7 +3117,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -3157,7 +3157,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
private void travelRidden(Player player, Vec3 travelVector) {
Vec3 riddenInput = this.getRiddenInput(player, travelVector);
this.tickRidden(player, riddenInput);
@@ -506,16 +562,16 @@ index 0268e02d2ef2cb3d699644a804e23a6da4521f4c..cc17fa4aa24d9fa258d61a74ba49c089
this.setSpeed(this.getRiddenSpeed(player));
this.travel(riddenInput);
} else {
@@ -3971,7 +3971,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -4006,7 +4006,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
// Paper start - lag compensate eating
// we add 1 to the expected time to avoid lag compensating when we should not
final boolean shouldLagCompensate = this.useItem.has(DataComponents.FOOD) && this.eatStartTime != -1 && (System.nanoTime() - this.eatStartTime) > ((1L + this.totalEatTimeTicks) * 50L * (1000L * 1000L));
- if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !this.level().isClientSide && !usingItem.useOnRelease()) {
+ if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !(this instanceof org.leavesmc.leaves.bot.ServerBot) && !this.level().isClientSide && !usingItem.useOnRelease()) { // Leaves - Fakeplayer skip this check
- if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !this.level().isClientSide() && !usingItem.useOnRelease()) {
+ if ((--this.useItemRemaining == 0 || shouldLagCompensate) && !(this instanceof org.leavesmc.leaves.bot.ServerBot) && !this.level().isClientSide() && !usingItem.useOnRelease()) {
this.useItemRemaining = 0;
// Paper end - lag compensate eating
this.completeUsingItem();
@@ -4148,6 +4148,23 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -4183,6 +4183,23 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
this.stopUsingItem();
}
@@ -537,13 +593,13 @@ index 0268e02d2ef2cb3d699644a804e23a6da4521f4c..cc17fa4aa24d9fa258d61a74ba49c089
+ // Leaves end - Fakeplayer
+
public void stopUsingItem() {
if (!this.level().isClientSide) {
if (!this.level().isClientSide()) {
boolean isUsingItem = this.isUsingItem();
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 8f4c45fbea2d7c1317aff36031bb834b07b23a82..8ec6f52f58bcc985fdc758a692798a35d6c86378 100644
index e95e259e5be5bb14a4ba2473d6ce850ebbedcb6d..e4c7262ded690e56ba2eef71bb7d46f9cd99b8b7 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -205,7 +205,7 @@ public abstract class Player extends LivingEntity {
@@ -167,7 +167,7 @@ public abstract class Player extends Avatar implements ContainerUser {
private int lastLevelUpTime;
public GameProfile gameProfile;
private boolean reducedDebugInfo;
@@ -552,7 +608,7 @@ index 8f4c45fbea2d7c1317aff36031bb834b07b23a82..8ec6f52f58bcc985fdc758a692798a35
private final ItemCooldowns cooldowns = this.createItemCooldowns();
private Optional<GlobalPos> lastDeathLocation = Optional.empty();
@Nullable
@@ -372,6 +372,12 @@ public abstract class Player extends LivingEntity {
@@ -309,6 +309,12 @@ public abstract class Player extends Avatar implements ContainerUser {
}
}
@@ -565,8 +621,8 @@ index 8f4c45fbea2d7c1317aff36031bb834b07b23a82..8ec6f52f58bcc985fdc758a692798a35
@Override
protected float getMaxHeadRotationRelativeToBody() {
return this.isBlocking() ? 15.0F : super.getMaxHeadRotationRelativeToBody();
@@ -674,7 +680,7 @@ public abstract class Player extends LivingEntity {
}
@@ -537,7 +543,7 @@ public abstract class Player extends Avatar implements ContainerUser {
public void removeEntitiesOnShoulder() {
}
- private void touch(Entity entity) {
@@ -574,7 +630,7 @@ index 8f4c45fbea2d7c1317aff36031bb834b07b23a82..8ec6f52f58bcc985fdc758a692798a35
entity.playerTouch(this);
}
@@ -1299,7 +1305,7 @@ public abstract class Player extends LivingEntity {
@@ -1148,7 +1154,7 @@ public abstract class Player extends Avatar implements ContainerUser {
this.sweepAttack();
}
@@ -584,10 +640,10 @@ index 8f4c45fbea2d7c1317aff36031bb834b07b23a82..8ec6f52f58bcc985fdc758a692798a35
boolean cancelled = false;
org.bukkit.entity.Player player = (org.bukkit.entity.Player) target.getBukkitEntity();
diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java
index 5f3abbe943be394e9cb987945a238208940b5015..8c139d572bd3c44b8e2b6205e28ab09f82c9abfe 100644
index 207e30f822f286a6358055fcd5bc3af6ee7a553d..2c79332e148375c2f277df94b16ce7dd2422c004 100644
--- a/net/minecraft/world/entity/projectile/FishingHook.java
+++ b/net/minecraft/world/entity/projectile/FishingHook.java
@@ -58,7 +58,7 @@ public class FishingHook extends Projectile {
@@ -59,7 +59,7 @@ public class FishingHook extends Projectile {
public static final EntityDataAccessor<Integer> DATA_HOOKED_ENTITY = SynchedEntityData.defineId(FishingHook.class, EntityDataSerializers.INT);
private static final EntityDataAccessor<Boolean> DATA_BITING = SynchedEntityData.defineId(FishingHook.class, EntityDataSerializers.BOOLEAN);
private int life;
@@ -597,10 +653,10 @@ index 5f3abbe943be394e9cb987945a238208940b5015..8c139d572bd3c44b8e2b6205e28ab09f
public int timeUntilHooked;
public float fishAngle;
diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java
index df360ff06d10fc7f996055dce5148825539e9261..b67ae301db4ed3c45a08941f036dc48078a9f12a 100644
index adab5dc640a7a0299c04020225a68317282aebe9..e127a670935186ba3d96a8d85640cf465ef52b7e 100644
--- a/net/minecraft/world/entity/vehicle/AbstractBoat.java
+++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java
@@ -271,6 +271,11 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
@@ -269,6 +269,11 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
}
this.move(MoverType.SELF, this.getDeltaMovement());
@@ -612,7 +668,7 @@ index df360ff06d10fc7f996055dce5148825539e9261..b67ae301db4ed3c45a08941f036dc480
} else {
this.setDeltaMovement(Vec3.ZERO);
}
@@ -381,6 +386,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
@@ -377,6 +382,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
}
}
@@ -627,14 +683,14 @@ index df360ff06d10fc7f996055dce5148825539e9261..b67ae301db4ed3c45a08941f036dc480
protected SoundEvent getPaddleSound() {
return switch (this.getStatus()) {
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index 06846950348954328c07f64cd9b3359e79a1a468..e1783ad0adbb791b2ff7441243c9f0aeaf37c7f6 100644
index 670090c4466d6472a83263e1769f19e3e491c927..4e53e7c05af11cae2ce8cf313c69a83336e22ba6 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -400,6 +400,7 @@ public abstract class AbstractContainerMenu {
private void doClick(int slotId, int button, ClickType clickType, Player player) {
private void doClick(int slotIndex, int button, ClickType clickType, Player player) {
Inventory inventory = player.getInventory();
+ if (!doClickCheck(slotId, button, clickType, player)) return; // Leaves - doClick check
+ if (!doClickCheck(slotIndex, button, clickType, player)) return; // Leaves - doClick check
if (clickType == ClickType.QUICK_CRAFT) {
int i = this.quickcraftStatus;
this.quickcraftStatus = getQuickcraftHeader(button);
@@ -662,10 +718,10 @@ index 06846950348954328c07f64cd9b3359e79a1a468..e1783ad0adbb791b2ff7441243c9f0ae
FeatureFlagSet featureFlagSet = player.level().enabledFeatures();
return carriedItem.isItemEnabled(featureFlagSet) && carriedItem.overrideStackedOnOther(slot, action, player)
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index da16f4831c875e07c25d7ed041bed493db614658..462e2e4173ea07811022838e4fb592ab5f65e653 100644
index 47862c00e9e01c7cdd5fcd808cc1b76740b85a57..14c74eb71b5bfb67d0fcf9d660f748c7b1dba63d 100644
--- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java
@@ -442,7 +442,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -443,7 +443,7 @@ public final class ItemStack implements DataComponentHolder {
placeEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPlaceEvent(serverLevel, player, hand, blocks.getFirst(), clickedPos);
}
@@ -674,7 +730,7 @@ index da16f4831c875e07c25d7ed041bed493db614658..462e2e4173ea07811022838e4fb592ab
interactionResult = InteractionResult.FAIL; // cancel placement
// PAIL: Remove this when MC-99075 fixed
player.containerMenu.forceHeldSlot(hand);
@@ -938,6 +938,20 @@ public final class ItemStack implements DataComponentHolder {
@@ -939,6 +939,20 @@ public final class ItemStack implements DataComponentHolder {
}
}
@@ -696,7 +752,7 @@ index da16f4831c875e07c25d7ed041bed493db614658..462e2e4173ea07811022838e4fb592ab
return this.getItem().useOnRelease(this);
}
diff --git a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
index f1ce4cff1c03a0037ade2c8ef989cf327c973a7e..0976aef81b950a062152094501372d00c20bb2b7 100644
index 59a002711531f8337a86d85b6e8b11b5fad8ced7..0a76cf42aaaaf210a4e43ed9bd3d177f0003ba57 100644
--- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
+++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
@@ -135,7 +135,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
@@ -709,7 +765,7 @@ index f1ce4cff1c03a0037ade2c8ef989cf327c973a7e..0976aef81b950a062152094501372d00
double d1 = deltaMovement.x;
double d2 = deltaMovement.y;
diff --git a/net/minecraft/world/level/levelgen/PhantomSpawner.java b/net/minecraft/world/level/levelgen/PhantomSpawner.java
index b3cfab9c82fe12694f5d2f56bd922828e51df680..3d5f64f67c402d7a86fd8a8e79b9fc90e61548a8 100644
index 801a50ba4d202df0289339f26968e7f6bb9ca767..196f5dd260701d520cc8a037a896f34c87f74934 100644
--- a/net/minecraft/world/level/levelgen/PhantomSpawner.java
+++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java
@@ -48,6 +48,11 @@ public class PhantomSpawner implements CustomSpawner {
@@ -737,16 +793,3 @@ index bef794c3f58c41d910aa0bcc63fbdeea7225fddf..a601da588e6973cc5b87d3e3eeba49b5
this.id = id;
}
diff --git a/net/minecraft/world/level/storage/PlayerDataStorage.java b/net/minecraft/world/level/storage/PlayerDataStorage.java
index fe44d8d17d2622b3d6021c11579af85ef96737bb..0aae211dc2048f8cd14213c2a868394d1ed16070 100644
--- a/net/minecraft/world/level/storage/PlayerDataStorage.java
+++ b/net/minecraft/world/level/storage/PlayerDataStorage.java
@@ -19,7 +19,7 @@ import net.minecraft.util.datafix.DataFixTypes;
import net.minecraft.world.entity.player.Player;
import org.slf4j.Logger;
-public class PlayerDataStorage {
+public class PlayerDataStorage implements org.leavesmc.leaves.bot.IPlayerDataStorage {
private static final Logger LOGGER = LogUtils.getLogger();
private final File playerDir;
protected final DataFixer fixerUpper;

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Make shears in dispenser can unlimited use
diff --git a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
index b4a9be09452a889c228612a466b8925cb3768102..38442a054bbe87db8dcfab20147d19b2c758d225 100644
index 7d8f8ab3657e4a872e64176f89eca54d09c71ef1..6d3c6506ed82f24090496189402ff8946b960325 100644
--- a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
+++ b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
@@ -45,7 +45,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior {
BlockPos blockPos = blockSource.pos().relative(blockSource.state().getValue(DispenserBlock.FACING));
this.setSuccess(tryShearBeehive(serverLevel, blockPos) || tryShearEntity(serverLevel, blockPos, item, bukkitBlock, craftItem)); // CraftBukkit
this.setSuccess(tryShearBeehive(serverLevel, item, blockPos) || tryShearEntity(serverLevel, blockPos, item, bukkitBlock, craftItem)); // CraftBukkit
if (this.isSuccess()) {
- item.hurtAndBreak(1, serverLevel, null, item1 -> {});
+ item.hurtAndBreak(1, serverLevel, null, item1 -> { if (org.leavesmc.leaves.LeavesConfig.modify.oldMC.shearsInDispenserCanZeroAmount) item.grow(1); }); // Leaves - Make shears in dispenser can unlimited use

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add isShrink to EntityResurrectEvent
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 1ba342a1a60951f828034d3ed535b577b3990bf6..7a7971ec03fcdf72ecaa1e934d5ab3c62113c251 100644
index c18b0155edd695524246e5c2134de94008d8a023..f4a45a39afae0befa5c6048bb5f2001395d5cbfc 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -1733,14 +1733,14 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -1741,14 +1741,14 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
}
final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Stick can change ArmorStand arm status
diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java
index 46369e554be8c72e6fc2e6d58374dbfc77d94879..d7725b5ca689e3d5b512baab04e113be77c0b2ee 100644
index 15479a9fc47cca3d6627b42c31ba8ff114bbe362..9420ca7e32ae71ce9cecf8afd808ae6e9f8f4258 100644
--- a/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -228,6 +228,13 @@ public class ArmorStand extends LivingEntity {
@@ -229,6 +229,13 @@ public class ArmorStand extends LivingEntity {
return InteractionResult.SUCCESS_SERVER;
}
} else {

View File

@@ -72,10 +72,10 @@ index 1df628ac0b414511aaed6e09d78f884c4170f730..b92081d70ffeec47c304e553ce1aea0a
}
}
diff --git a/net/minecraft/network/protocol/status/ServerStatus.java b/net/minecraft/network/protocol/status/ServerStatus.java
index a491be4250de3199c3e1aa9e5482b568692bd2f5..9844b19020ef6e4fa5a3008dcd768bb674657d2f 100644
index 88447fc2108126ccfad2fb7eb79ac94537f132d3..1bca4150c63da064bd2d1ee8f504f2ebbc9d96a0 100644
--- a/net/minecraft/network/protocol/status/ServerStatus.java
+++ b/net/minecraft/network/protocol/status/ServerStatus.java
@@ -20,7 +20,8 @@ public record ServerStatus(
@@ -19,7 +19,8 @@ public record ServerStatus(
Optional<ServerStatus.Players> players,
Optional<ServerStatus.Version> version,
Optional<ServerStatus.Favicon> favicon,
@@ -85,7 +85,7 @@ index a491be4250de3199c3e1aa9e5482b568692bd2f5..9844b19020ef6e4fa5a3008dcd768bb6
) {
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
instance -> instance.group(
@@ -28,11 +29,18 @@ public record ServerStatus(
@@ -27,11 +28,18 @@ public record ServerStatus(
ServerStatus.Players.CODEC.lenientOptionalFieldOf("players").forGetter(ServerStatus::players),
ServerStatus.Version.CODEC.lenientOptionalFieldOf("version").forGetter(ServerStatus::version),
ServerStatus.Favicon.CODEC.lenientOptionalFieldOf("favicon").forGetter(ServerStatus::favicon),
@@ -106,10 +106,10 @@ index a491be4250de3199c3e1aa9e5482b568692bd2f5..9844b19020ef6e4fa5a3008dcd768bb6
private static final String PREFIX = "data:image/png;base64,";
public static final Codec<ServerStatus.Favicon> CODEC = Codec.STRING.comapFlatMap(string -> {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index f85993fc507d699728e058b12bb49dcb7aaea44b..91babab6152bb12768399ef6f2ea6afcb5e644b7 100644
index 8d73fffb41346851d088ca0dee206661ff85ec29..4fdc743f56cdc4f92bfa8004c33e2f34cc9e9c70 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -573,7 +573,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -781,7 +781,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper start - Add setting for proxy online mode status
return properties.enforceSecureProfile
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
@@ -119,10 +119,10 @@ index f85993fc507d699728e058b12bb49dcb7aaea44b..91babab6152bb12768399ef6f2ea6afc
}
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 2dd95aca955f19ce48be35b1ca9bcc94c3a1984d..e9d328dacdc23eea792ab350ec2ea9f8337ae008 100644
index adb26ae4dfd5dc111cc55000b71c15f95239b090..20b9dfe68dfbcd5bb999ee4ec0500bdf6bc7fdd5 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -322,10 +322,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -323,10 +323,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
public void send(Packet<?> packet) {
@@ -136,11 +136,11 @@ index 2dd95aca955f19ce48be35b1ca9bcc94c3a1984d..e9d328dacdc23eea792ab350ec2ea9f8
this.send(packet, null);
}
public void send(Packet<?> packet, @Nullable ChannelFutureListener channelFutureListener) {
public void send(Packet<?> packet, @Nullable ChannelFutureListener sendListener) {
+ // Leaves start - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
+ if (org.leavesmc.leaves.LeavesConfig.mics.noChatSign) {
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket && channelFutureListener != null) {
+ channelFutureListener = null;
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket && sendListener != null) {
+ sendListener = null;
+ }
+ }
+ // Leaves end - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
@@ -148,10 +148,10 @@ index 2dd95aca955f19ce48be35b1ca9bcc94c3a1984d..e9d328dacdc23eea792ab350ec2ea9f8
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 1135d32f1f275306792b95d10f76ac233e265e0d..e59a4178100532a2a52b4242409a270ed62498f6 100644
index 6dec8565e9d290302ce7766357a56b8c2295c163..bf5d8fe260aaca48a73d6ffe9d1312f5161f9365 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -1313,7 +1313,7 @@ public abstract class PlayerList {
@@ -1186,7 +1186,7 @@ public abstract class PlayerList {
}
public boolean verifyChatTrusted(PlayerChatMessage message) {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Dont send useless entity packets
This patch is Powered by Purpur(https://github.com/PurpurMC/Purpur)
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index e96d4dee14c05f2fa329bfb1588ec795d4e3d730..f6b2d541fdfd11c6ff6033fbf4cd5153796634e3 100644
index 638432a2e6506d3db6a25c068a33eeafb13cf0d6..1099280bd8e28c167702b74041928f260695ba7c 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -200,6 +200,11 @@ public class ServerEntity {
@@ -188,6 +188,11 @@ public class ServerEntity {
} else if (flag) {
packet = new ClientboundMoveEntityPacket.Rot(this.entity.getId(), b, b1, this.entity.onGround());
flag4 = true;
@@ -21,7 +21,7 @@ index e96d4dee14c05f2fa329bfb1588ec795d4e3d730..f6b2d541fdfd11c6ff6033fbf4cd5153
}
} else {
packet = new ClientboundMoveEntityPacket.PosRot(this.entity.getId(), (short)l, (short)l1, (short)l2, b, b1, this.entity.onGround());
@@ -319,6 +324,21 @@ public class ServerEntity {
@@ -300,6 +305,21 @@ public class ServerEntity {
this.positionCodec.setBase(this.entity.position());
}

View File

@@ -6,19 +6,19 @@ Subject: [PATCH] Optimize suffocation
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 7a7971ec03fcdf72ecaa1e934d5ab3c62113c251..f0ff74a4f2831ead191bc12cb4873162a470c71f 100644
index f4a45a39afae0befa5c6048bb5f2001395d5cbfc..ccc6900644f666729dc47cc0cfcdef66dd65b90a 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -437,7 +437,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -440,7 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
profilerFiller.push("livingEntityBaseTick");
if (this.isAlive() && this.level() instanceof ServerLevel serverLevel1) {
boolean flag = this instanceof Player;
- if (this.isInWall()) {
+ if ((!org.leavesmc.leaves.LeavesConfig.performance.enableSuffocationOptimization || this instanceof WitherBoss || (tickCount % 10 == 0 && couldPossiblyBeHurt(1.0F))) && this.isInWall()) { // Leaves - optimize suffocation
this.hurtServer(serverLevel1, this.damageSources().inWall(), 1.0F);
} else if (flag && !serverLevel1.getWorldBorder().isWithinBounds(this.getBoundingBox())) {
double d = serverLevel1.getWorldBorder().getDistanceToBorder(this) + serverLevel1.getWorldBorder().getDamageSafeZone();
@@ -1404,6 +1404,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
double d = serverLevel1.getWorldBorder().getDistanceToBorder(this) + serverLevel1.getWorldBorder().getSafeZone();
@@ -1411,6 +1411,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
return this.getHealth() <= 0.0F;
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Only check for spooky season once an hour
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
index 912b099a51269f92f250c7d6094ad41817749f93..af661d572d2bab00a392f858dd910c8be5e16e81 100644
index c0198c0b6d00667c9591a5cd254b0bfedc3fb627..ec713dd16a842119c02b760ed45f7de2a839cb3b 100644
--- a/net/minecraft/world/entity/ambient/Bat.java
+++ b/net/minecraft/world/entity/ambient/Bat.java
@@ -245,12 +245,30 @@ public class Bat extends AmbientCreature {
@@ -246,12 +246,30 @@ public class Bat extends AmbientCreature {
}
}

View File

@@ -6,12 +6,12 @@ Subject: [PATCH] Config to disable method profiler
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 5c49816db8241694eed640a34c056effbf382934..af5fde7121211887672045c00aa404e2f68c43c1 100644
index 309ff4c55b2a4ccf3d18951b51c2e10d0ff39bfc..19b89c3d0a21c0223bac1844081099d2bf8296ab 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1249,7 +1249,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
lastTick = currentTime;
this.nextTickTimeNanos += l;
@@ -1333,7 +1333,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper - improve tick loop - done above
- try (Profiler.Scope scope = Profiler.use(this.createProfiler())) {
+ try (Profiler.Scope scope = org.leavesmc.leaves.LeavesConfig.mics.disableMethodProfiler ? null : Profiler.use(this.createProfiler())) { // Leaves - disable profiler

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Throttle goal selector during inactive ticking
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index e0b3cb2b2694768803ed347a1026b881fd624951..16cb4b7472b05c8aab195d5b865dd21ccd4adef8 100644
index 4994dcb209dd82d60559cfc453198b75cbfa1511..37ad911648aa88bdb5132a819806a5a303438dbf 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -207,11 +207,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -217,11 +217,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
return this.lookControl;
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Remove lambda from ticking guard
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index c61c0b6d58f96955bfbdad0caaeb56f073a95181..ed05aaa76e1e34ca82fcc7cfb73f371a11600eee 100644
index 868ebe0fd5bde694fe8bef95ebf78051a9187672..9c3362e52def414c553fbac22bb8d8304fc3bfd2 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -810,7 +810,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -838,7 +838,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
profilerFiller.push("tick");

View File

@@ -19,10 +19,10 @@ index ae2bb9a73106febfe5f0d090abd4252bbb5fd27e..b3e536400efa41ba754e52f1ee224365
}
if (entity instanceof final Mob mob && mob.getTarget() != null) {
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index f0ff74a4f2831ead191bc12cb4873162a470c71f..33d14040a8ac97758881cd31a88d950a14a78450 100644
index ccc6900644f666729dc47cc0cfcdef66dd65b90a..ce4c8e14d3d7b5837dcce006fa67722f3f430fa4 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -2126,6 +2126,22 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -2164,6 +2164,22 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
return this.lastClimbablePos;
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Reduce chunk loading & lookups
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 4edd94ac765d2ab107612504b67e6e07da609313..6760bfd91f59139922768db5e5d362c5e7e4e473 100644
index dcb49e8305aa8b9215da9f77fa147f701fdbbef0..0732709d0ca78f59ad6b7f8ac5e7bfbe5506f60b 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -296,11 +296,28 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -302,11 +302,28 @@ public class EnderMan extends Monster implements NeutralMob {
private boolean teleport(double x, double y, double z) {
BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(x, y, z);

View File

@@ -5,11 +5,45 @@ Subject: [PATCH] InstantBlockUpdater Reintroduced
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 145c8e1791638c78b81222181e9f3679a33795a9..015c49c8170ba8d73b2bc9386192681a8ececb3f 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -871,12 +871,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Paper - rewrite chunk system
profilerFiller.pop();
profilerFiller.push("debugSynchronizers");
- if (this.debugSynchronizers.hasAnySubscriberFor(DebugSubscriptions.NEIGHBOR_UPDATES)) {
- this.neighborUpdater
- .setDebugListener(blockPos -> this.debugSynchronizers.broadcastEventToTracking(blockPos, DebugSubscriptions.NEIGHBOR_UPDATES, blockPos));
- } else {
- this.neighborUpdater.setDebugListener(null);
- }
+ if (this.neighborUpdater instanceof net.minecraft.world.level.redstone.CollectingNeighborUpdater cnu) { // Leaves start - instantBlockUpdaterReintroduced
+ if (this.debugSynchronizers.hasAnySubscriberFor(DebugSubscriptions.NEIGHBOR_UPDATES)) {
+ cnu.setDebugListener(blockPos -> this.debugSynchronizers.broadcastEventToTracking(blockPos, DebugSubscriptions.NEIGHBOR_UPDATES, blockPos));
+ } else {
+ cnu.setDebugListener(null);
+ }
+ } // Leaves end - instantBlockUpdaterReintroduced
+
this.debugSynchronizers.tick(this.server.debugSubscribers());
profilerFiller.pop();
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..ef8a072838558caab19e8a85f4b59cac570c2635 100644
index 01e0dc28ef63456a45b800e72d76180b40811a72..feafaaeca7ffa6fda5af9897c448b61ee1760290 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -873,7 +873,13 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -113,7 +113,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
.add(new ExplosionParticleInfo(ParticleTypes.SMOKE, 1.0F, 1.0F))
.build();
public final List<TickingBlockEntity> blockEntityTickers = Lists.newArrayList();
- protected final CollectingNeighborUpdater neighborUpdater;
+ protected final net.minecraft.world.level.redstone.NeighborUpdater neighborUpdater; // Leaves - instantBlockUpdaterReintroduced
private final List<TickingBlockEntity> pendingBlockEntityTickers = Lists.newArrayList();
private boolean tickingBlockEntities;
public final Thread thread;
@@ -863,7 +863,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
this.thread = Thread.currentThread();
this.biomeManager = new BiomeManager(this, biomeZoomSeed);
this.isDebug = isDebug;
@@ -22,5 +56,5 @@ index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..ef8a072838558caab19e8a85f4b59cac
+ }
+ // Leaves end - instantBlockUpdaterReintroduced
this.registryAccess = registryAccess;
this.palettedContainerFactory = PalettedContainerFactory.create(registryAccess);
this.damageSources = new DamageSources(registryAccess);

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Random flatten triangular distribution
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
diff --git a/net/minecraft/util/RandomSource.java b/net/minecraft/util/RandomSource.java
index 8516d47b0ba79d91638837199e7ae0fb6cb44a79..49a70e860eafdeca28ca3684a75bd3c8c4668b9c 100644
index 98a54bc4de251014342cda6d0951b7fea79ce553..17a79cef7dac1b407e4e62883b4a943d172fa6b9 100644
--- a/net/minecraft/util/RandomSource.java
+++ b/net/minecraft/util/RandomSource.java
@@ -52,13 +52,25 @@ public interface RandomSource {
@@ -14,23 +14,23 @@ index 8516d47b0ba79d91638837199e7ae0fb6cb44a79..49a70e860eafdeca28ca3684a75bd3c8
double nextGaussian();
+ // Leaves start - flattenTriangularDistribution
default double triangle(double min, double max) {
- return min + max * (this.nextDouble() - this.nextDouble());
default double triangle(double center, double maxDeviation) {
- return center + maxDeviation * (this.nextDouble() - this.nextDouble());
+ if (org.leavesmc.leaves.LeavesConfig.modify.flattenTriangularDistribution) {
+ this.nextDouble();
+ return min + max * (-1 + this.nextDouble() * 2);
+ return center + maxDeviation * (-1 + this.nextDouble() * 2);
+ } else {
+ return min + max * (this.nextDouble() - this.nextDouble());
+ return center + maxDeviation * (this.nextDouble() - this.nextDouble());
+ }
}
default float triangle(float min, float max) {
- return min + max * (this.nextFloat() - this.nextFloat());
default float triangle(float center, float maxDeviation) {
- return center + maxDeviation * (this.nextFloat() - this.nextFloat());
+ if (org.leavesmc.leaves.LeavesConfig.modify.flattenTriangularDistribution) {
+ this.nextFloat();
+ return min + max * (-1 + this.nextFloat() * 2);
+ return center + maxDeviation * (-1 + this.nextFloat() * 2);
+ } else {
+ return min + max * (this.nextFloat() - this.nextFloat());
+ return center + maxDeviation * (this.nextFloat() - this.nextFloat());
+ }
}
+ // Leaves end - flattenTriangularDistribution

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] BBOR Protocol
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index 75578e6ed7233a03d9b6cd3c6d3997f1c6148392..f24db919989bc2e5768e18b4fda68c38d6cde7e0 100644
index de59760d27280555a334bda4f436164568cffbd6..bdc564c24982c196f151121fb769c7cfad4a08b0 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -749,6 +749,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -759,6 +759,11 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot
public void setLoaded(boolean loaded) {
this.loaded = loaded;

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] PCA sync protocol
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
index 31ed5d7cfbda1a1f98ebfc89f5cbc65332cabdae..18c683f7d7e18200a24cfc8d26e83f578681f7f5 100644
index c87a1a5e3696e40f9f0d6f4d93e102e73325d4f8..b01f53af58afdde22f062e6d16888bf09ee98805 100644
--- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java
+++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
@@ -305,6 +305,13 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory
@@ -306,6 +306,13 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory
public void createInventory() {
SimpleContainer simpleContainer = this.inventory;
this.inventory = new SimpleContainer(this.getInventorySize(), (org.bukkit.entity.AbstractHorse) this.getBukkitEntity()); // CraftBukkit
@@ -24,11 +24,11 @@ index 31ed5d7cfbda1a1f98ebfc89f5cbc65332cabdae..18c683f7d7e18200a24cfc8d26e83f57
int min = Math.min(simpleContainer.getContainerSize(), this.inventory.getContainerSize());
diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java
index f8782cdcf3015cad2693663a3c222bd60822f45b..38572ecba568072b132b9e7fc12e6c0c38edd2e2 100644
index 6bb17ecbd93f6ced5436cf75f3695f44eedd4bd9..ea7364f3cc9f339578232ba1103008a9ed50234a 100644
--- a/net/minecraft/world/entity/npc/AbstractVillager.java
+++ b/net/minecraft/world/entity/npc/AbstractVillager.java
@@ -48,6 +48,15 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
super(entityType, level);
super(type, level);
this.setPathfindingMalus(PathType.DANGER_FIRE, 16.0F);
this.setPathfindingMalus(PathType.DAMAGE_FIRE, -1.0F);
+ // Leaves start - pca
@@ -44,7 +44,7 @@ index f8782cdcf3015cad2693663a3c222bd60822f45b..38572ecba568072b132b9e7fc12e6c0c
@Override
diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
index 6a008c86f4e360c916b93f0e3a62a9d8b43e74e6..7781ca07a0c8fe1140f341b695e66de95802ee2e 100644
index 0f9bfcd1eab023c1772e9fafcda85d110904bd1c..8fdde0cc090c80b65b4c0d679bf4b412b6b761ee 100644
--- a/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
+++ b/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
@@ -65,6 +65,11 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme
@@ -60,10 +60,10 @@ index 6a008c86f4e360c916b93f0e3a62a9d8b43e74e6..7781ca07a0c8fe1140f341b695e66de9
@Override
diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index 36a72a11d28f99bfe85868461925b778cc01478e..bebe8737b71fc37336342f14b6ea4cfab12d3f34 100644
index d8176f1f36f12fe179b5a63e6bf8f290a7a7461d..37bbd8d2cf412983fc4eb89737b3343f17364cae 100644
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -429,6 +429,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -430,6 +430,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
}
}
@@ -81,10 +81,10 @@ index 36a72a11d28f99bfe85868461925b778cc01478e..bebe8737b71fc37336342f14b6ea4cfa
public void setRecipeUsed(@Nullable RecipeHolder<?> recipe) {
if (recipe != null) {
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..f0ba09c0edc598dfc4e501ba69016e8a2f8d3a7c 100644
index 75c09a2079c89f9346391abdd01ef8790b9cbb13..6741fe3abc4396236dc0ca31074e36d66e42c39a 100644
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
@@ -121,6 +121,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
@@ -124,6 +124,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
this.items = items;
}
@@ -100,12 +100,12 @@ index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..f0ba09c0edc598dfc4e501ba69016e8a
+
@Override
protected Component getDefaultName() {
return Component.translatable("container.barrel");
return DEFAULT_NAME;
diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
index 91f7ee163107d846e7f6a5783be6eff96e783886..cbbe3dee3dda06d0e2451597dae0ac03009330e0 100644
index f0673167d6273c7689cd58ac8f51e51649cb3ad0..03c9a2d253ba6fec39a0322eb74ac611fdc8b7f0 100644
--- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
@@ -147,6 +147,11 @@ public class BeehiveBlockEntity extends BlockEntity {
@@ -149,6 +149,11 @@ public class BeehiveBlockEntity extends BlockEntity {
super.setChanged();
}
@@ -117,7 +117,7 @@ index 91f7ee163107d846e7f6a5783be6eff96e783886..cbbe3dee3dda06d0e2451597dae0ac03
return list;
}
@@ -204,6 +209,11 @@ public class BeehiveBlockEntity extends BlockEntity {
@@ -206,6 +211,11 @@ public class BeehiveBlockEntity extends BlockEntity {
this.level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(bee, this.getBlockState()));
}
@@ -129,7 +129,7 @@ index 91f7ee163107d846e7f6a5783be6eff96e783886..cbbe3dee3dda06d0e2451597dae0ac03
bee.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.ENTER_BLOCK); // CraftBukkit - add Bukkit remove cause
super.setChanged();
}
@@ -325,6 +335,11 @@ public class BeehiveBlockEntity extends BlockEntity {
@@ -327,6 +337,11 @@ public class BeehiveBlockEntity extends BlockEntity {
if (releaseOccupant(level, pos, state, beeData.toOccupant(), null, beeReleaseStatus, savedFlowerPos)) {
flag = true;
iterator.remove();
@@ -154,10 +154,10 @@ index 91f7ee163107d846e7f6a5783be6eff96e783886..cbbe3dee3dda06d0e2451597dae0ac03
@Override
diff --git a/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
index 79a9f1c87de30cda479b55cf70fbc3219a3dcad4..7eac2188a38fff2ecfa4082b5d023b111cf7d8f6 100644
index 5b28e257982c911f4d8ffe286dc125b3f9b64ee4..a4d3d5b6830d156c76e381c5437867c0ed104016 100644
--- a/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
@@ -331,4 +331,14 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
@@ -334,4 +334,14 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
protected AbstractContainerMenu createMenu(int id, Inventory player) {
return new BrewingStandMenu(id, player, this, this.dataAccess);
}
@@ -173,10 +173,10 @@ index 79a9f1c87de30cda479b55cf70fbc3219a3dcad4..7eac2188a38fff2ecfa4082b5d023b11
+ // Leaves end - pca
}
diff --git a/net/minecraft/world/level/block/entity/ChestBlockEntity.java b/net/minecraft/world/level/block/entity/ChestBlockEntity.java
index b7d94ebe0ee995392c355c4237da8443dcc79b21..784e146b28370dc2dac094d5f2ac654a5bc47e01 100644
index 6b1299c20573ca009f6bffce829a4a593f548fce..5b209de34bd425bf6c209a5317603f1c6d7280bf 100644
--- a/net/minecraft/world/level/block/entity/ChestBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/ChestBlockEntity.java
@@ -202,6 +202,16 @@ public class ChestBlockEntity extends RandomizableContainerBlockEntity implement
@@ -214,6 +214,16 @@ public class ChestBlockEntity extends RandomizableContainerBlockEntity implement
otherChest.setItems(items);
}
@@ -215,10 +215,10 @@ index 6b5179ae4269829b1e356840c9a8c33153334c32..b78ee57634471bc6e5308fb30c8f974f
return this.output;
}
diff --git a/net/minecraft/world/level/block/entity/DispenserBlockEntity.java b/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
index ae52dc75335799e55e403e3d3f11e9f1d67e4305..36b9362e1ce31b63c100ec65921e095fb7871e82 100644
index b4a155cc914092dad83977df714fbbc033c69d19..2fbfe925c81126cb99a4330a232d7d1b1f035973 100644
--- a/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
@@ -104,6 +104,16 @@ public class DispenserBlockEntity extends RandomizableContainerBlockEntity {
@@ -105,6 +105,16 @@ public class DispenserBlockEntity extends RandomizableContainerBlockEntity {
return stack;
}
@@ -234,12 +234,12 @@ index ae52dc75335799e55e403e3d3f11e9f1d67e4305..36b9362e1ce31b63c100ec65921e095f
+
@Override
protected Component getDefaultName() {
return Component.translatable("container.dispenser");
return DEFAULT_NAME;
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 800b7e78ae989868ed0b9e060c80dcd002759412..5f42af7c6fc82d6672ed06a2315254c9c5886ce4 100644
index 28348e3881c3c8591053a01b193fb2a956f79726..ab88bca97fe275528a2feb22e5da89252be683c3 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -122,6 +122,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -123,6 +123,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
this.facing = blockState.getValue(HopperBlock.FACING);
}
@@ -255,8 +255,8 @@ index 800b7e78ae989868ed0b9e060c80dcd002759412..5f42af7c6fc82d6672ed06a2315254c9
+
@Override
protected Component getDefaultName() {
return Component.translatable("container.hopper");
@@ -198,6 +208,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
return DEFAULT_NAME;
@@ -199,6 +209,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
if (flag) {
blockEntity.setCooldown(level.spigotConfig.hopperTransfer); // Spigot
setChanged(level, pos, state);
@@ -269,10 +269,10 @@ index 800b7e78ae989868ed0b9e060c80dcd002759412..5f42af7c6fc82d6672ed06a2315254c9
}
}
diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
index ebea67223ce1d350087c73dff0cc3fe6d7b47ca0..a820ab9a2b6dc6b95d4de61aaaad4e79c521efe4 100644
index 4d268864656ad67e6971b74534e25ac47d922cbd..68fcb64d13bbd61ad78137f101ab20264f402df8 100644
--- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
@@ -267,6 +267,16 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl
@@ -268,6 +268,16 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl
this.itemStacks = items;
}

View File

@@ -9,10 +9,10 @@ MasaGadget(https://github.com/plusls/MasaGadget)
litematica(https://github.com/maruohon/litematica)
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
index 6db566adf2d0df1d26221eda04aa01738df6d3d2..8f112f382190d606a87f38da8bcdf8dd5f31d1c5 100644
index dceb2b683064bbf4286c3fe71e0fd0c5a644cb07..19649f75889d1c4243519eb8ccb46f4b9abd0f68 100644
--- a/net/minecraft/world/item/BlockItem.java
+++ b/net/minecraft/world/item/BlockItem.java
@@ -149,7 +149,7 @@ public class BlockItem extends Item {
@@ -148,7 +148,7 @@ public class BlockItem extends Item {
@Nullable
protected BlockState getPlacementState(BlockPlaceContext context) {
@@ -43,10 +43,10 @@ index 12c6c8aeec89a0a55633c62fe98f5a3aa75fd476..1f0e7c391d02b18e2c89700025713ec3
blockState = blockState1;
break;
diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java
index 958914e40fceda5d67a98154817b4c5ce478a62d..3c5fd8efbe577c9b262870444984ad249097b8c2 100644
index 57574f93763ab98a4bc109f56cfc3af08962a878..c9318bda7ea2cb25939516fb1c3cc90488bb8e6c 100644
--- a/net/minecraft/world/level/block/Block.java
+++ b/net/minecraft/world/level/block/Block.java
@@ -439,6 +439,33 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -478,6 +478,33 @@ public class Block extends BlockBehaviour implements ItemLike {
public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) {
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Jade Protocol
This patch is Powered by Jade(https://github.com/Snownee/Jade)
diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
index c1798db2972c8f2a343cf6e16fd9354ff212d906..a8d617b16ab2b2c0cdb289a0aa05fa171940cd7e 100644
index b5ce8de41b087812b02f22d538d5ca18eee60694..7b63c9aa70f070208e9a161fbee8d913204a2394 100644
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
@@ -63,7 +63,7 @@ public class Armadillo extends Animal {
@@ -64,7 +64,7 @@ public class Armadillo extends Animal {
public final AnimationState rollOutAnimationState = new AnimationState();
public final AnimationState rollUpAnimationState = new AnimationState();
public final AnimationState peekAnimationState = new AnimationState();
@@ -17,12 +17,12 @@ index c1798db2972c8f2a343cf6e16fd9354ff212d906..a8d617b16ab2b2c0cdb289a0aa05fa17
+ public int scuteTime; // Leaves - private -> public
private boolean peekReceivedClient = false;
public Armadillo(EntityType<? extends Animal> entityType, Level level) {
public Armadillo(EntityType<? extends Animal> type, Level level) {
diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java
index 17f58246849ed407821a987b200cc765eb7943f9..ac27df3ba0ce9bbdf2f32ea87171fbb9407008d6 100644
index 3ce172c1bdaf8b8a8ad774dd37498e8e379c68bb..5736d20494d2aaad1d5ac3403d4a923199bdbf13 100644
--- a/net/minecraft/world/entity/animal/frog/Tadpole.java
+++ b/net/minecraft/world/entity/animal/frog/Tadpole.java
@@ -254,7 +254,7 @@ public class Tadpole extends AbstractFish {
@@ -247,7 +247,7 @@ public class Tadpole extends AbstractFish {
}
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Player operation limiter
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 87c8c4c7ca52f7d804ddaff87aaf381552e1aee2..29b8e7b6d96ff7ca2dd53f00ea2010e6aad83a52 100644
index 04ea4e33504703c4074aef6e74ec06dc772b1bb9..0110db0b1002b2007892e5c57b74de567d901d7b 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -429,6 +429,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -443,6 +443,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public boolean isRealPlayer; // Paper
public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
public @Nullable org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event
@@ -20,7 +20,7 @@ index 87c8c4c7ca52f7d804ddaff87aaf381552e1aee2..29b8e7b6d96ff7ca2dd53f00ea2010e6
// Paper start - rewrite chunk system
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -745,6 +749,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -723,6 +727,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
// CraftBukkit end
this.tickClientLoadTimeout();
@@ -28,7 +28,7 @@ index 87c8c4c7ca52f7d804ddaff87aaf381552e1aee2..29b8e7b6d96ff7ca2dd53f00ea2010e6
this.gameMode.tick();
this.wardenSpawnTracker.tick();
if (this.invulnerableTime > 0) {
@@ -2981,4 +2986,31 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -3103,4 +3108,31 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
}
// CraftBukkit end
@@ -61,10 +61,10 @@ index 87c8c4c7ca52f7d804ddaff87aaf381552e1aee2..29b8e7b6d96ff7ca2dd53f00ea2010e6
+ // Leaves end - player operation limiter
}
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
index cfbf34964288526e93d0a5b212c1b60296c10430..9cce442c16ced8d9320a5760580ff13f02cbf8f1 100644
index 7166889bce8065508030ecd5b1400ee9be031bf3..65e2edf39857b2e03c5a32dfb3b822b5cb4ce93c 100644
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -300,6 +300,19 @@ public class ServerPlayerGameMode {
@@ -320,6 +320,19 @@ public class ServerPlayerGameMode {
}
public void destroyAndAck(BlockPos pos, int sequence, String message) {
@@ -85,10 +85,10 @@ index cfbf34964288526e93d0a5b212c1b60296c10430..9cce442c16ced8d9320a5760580ff13f
this.debugLogging(pos, true, sequence, message);
} else {
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
index 8f112f382190d606a87f38da8bcdf8dd5f31d1c5..a46a50d1385897cc7fcf0d6976f0de7e8078d260 100644
index 7bca36dd26afb02524022df74147f628edf51460..58ec8a43265ebf50fdd71f2cbb7dedf4762bc5b4 100644
--- a/net/minecraft/world/item/BlockItem.java
+++ b/net/minecraft/world/item/BlockItem.java
@@ -65,6 +65,21 @@ public class BlockItem extends Item {
@@ -64,6 +64,21 @@ public class BlockItem extends Item {
final org.bukkit.block.BlockState oldBukkitState = bukkitState != null ? bukkitState : org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(blockPlaceContext.getLevel(), blockPlaceContext.getClickedPos()); // Paper - Reset placed block on exception
// CraftBukkit end

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Renewable Elytra
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..d985f224f06f5a823f74b276477ededdbe77596a 100644
index b0f0a70ef6d708917ac8278c7eebd81d1fd7df6a..25c02ce8a613adae374bf85ed282399d44fba2ef 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -246,6 +246,20 @@ public class Phantom extends Mob implements Enemy {
@@ -242,6 +242,20 @@ public class Phantom extends Mob implements Enemy {
return targetingConditions.test(level, this, entity);
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] MC Technical Survival Mode
Will automatically overwrite some configuration after startup
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 29b8e7b6d96ff7ca2dd53f00ea2010e6aad83a52..217bcd7f9aab84b9bff82af0f3cab95818ba51a2 100644
index 0110db0b1002b2007892e5c57b74de567d901d7b..d4df6ca7360d4bc605a51061444191d7929c7778 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1654,7 +1654,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1747,7 +1747,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public boolean isInvulnerableTo(ServerLevel level, DamageSource damageSource) {
return (super.isInvulnerableTo(level, damageSource) // Paper - disable player cramming;
|| this.isChangingDimension() && !damageSource.is(DamageTypes.ENDER_PEARL)
@@ -19,10 +19,10 @@ index 29b8e7b6d96ff7ca2dd53f00ea2010e6aad83a52..217bcd7f9aab84b9bff82af0f3cab958
@Override
diff --git a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
index 57befff1f0675e889304a6258258384d8de02c87..36be5f1e3547d29fd85e3b3f0c39e8f5ec1adf4e 100644
index ffc960a4e66ed03a358b363a4ce1dcee0b29ac36..c1671664618428d5b82df721b559ce7280b9e8b7 100644
--- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
+++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
@@ -70,7 +70,7 @@ public class AcquirePoi {
@@ -69,7 +69,7 @@ public class AcquirePoi {
return false;
} else {
mutableLong.setValue(time + 20L + level.getRandom().nextInt(20));
@@ -32,7 +32,7 @@ index 57befff1f0675e889304a6258258384d8de02c87..36be5f1e3547d29fd85e3b3f0c39e8f5
map.long2ObjectEntrySet().removeIf(entry -> !entry.getValue().isStillValid(time));
Predicate<BlockPos> predicate1 = pos -> {
diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..d8effc3a9773d29319b8e2bd15abbf03f0996ce5 100644
index 4fc773a0cb9d68e22e4d6cc7d819196a6cabf4f1..af87a79c58b41e625a83665ff0893c9a29386a35 100644
--- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -65,7 +65,7 @@ public class EndCrystal extends Entity {
@@ -45,7 +45,7 @@ index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..d8effc3a9773d29319b8e2bd15abbf03
|| ((ServerLevel) this.level()).getDragonFight() == null
|| ((ServerLevel) this.level()).getDragonFight().respawnStage == null
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
index 17d54d38dcec39eefeb989cd576cc640a36e82f5..1d7a1739d6a3a55aacb33d57a58712350b150f64 100644
index c685b5123c88fc73c26a3ba31225ab1226e52702..d36ce16724e9f5a79960f0aa265a0354f5240abc 100644
--- a/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
@@ -100,7 +100,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -58,10 +58,10 @@ index 17d54d38dcec39eefeb989cd576cc640a36e82f5..1d7a1739d6a3a55aacb33d57a5871235
this.applyGravity();
this.move(MoverType.SELF, this.getDeltaMovement());
diff --git a/net/minecraft/world/level/NaturalSpawner.java b/net/minecraft/world/level/NaturalSpawner.java
index 4f647507d06d45a65b4b1793219d90c65e110225..dac4646902a93eaaa287f5b6da324eea81ea3150 100644
index 911c5099a2bbb3e955c9314219114873642c7355..74d5ef7e0a63661f8b314846b8985c5f04cae87e 100644
--- a/net/minecraft/world/level/NaturalSpawner.java
+++ b/net/minecraft/world/level/NaturalSpawner.java
@@ -82,7 +82,7 @@ public final class NaturalSpawner {
@@ -84,7 +84,7 @@ public final class NaturalSpawner {
MobCategory category = entity.getType().getCategory();
if (category != MobCategory.MISC) {
// Paper start - Only count natural spawns
@@ -71,10 +71,10 @@ index 4f647507d06d45a65b4b1793219d90c65e110225..dac4646902a93eaaa287f5b6da324eea
entity.spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) {
continue;
diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
index cbbe3dee3dda06d0e2451597dae0ac03009330e0..aa94abe106ae0f47f61e6c431f1abcbdbf945dfa 100644
index 03c9a2d253ba6fec39a0322eb74ac611fdc8b7f0..7ffcc21a6c4d679e860e845492429af838491444 100644
--- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
@@ -342,7 +342,7 @@ public class BeehiveBlockEntity extends BlockEntity {
@@ -344,7 +344,7 @@ public class BeehiveBlockEntity extends BlockEntity {
// Leaves end - pca
}
// Paper start - Fix bees aging inside; use exitTickCounter to keep actual bee life
@@ -84,10 +84,10 @@ index cbbe3dee3dda06d0e2451597dae0ac03009330e0..aa94abe106ae0f47f61e6c431f1abcbd
}
// Paper end - Fix bees aging inside; use exitTickCounter to keep actual bee life
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index d7755e6a4641b5463eb39885bf53b6950c09bfc9..52ef2891eb9b6c8c8db763c9836fc6470746c68f 100644
index ab88bca97fe275528a2feb22e5da89252be683c3..ca5707060e415a32fdb50509c24e79494d3ad28f 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -275,7 +275,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -276,7 +276,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
origItemStack.setCount(originalItemCount);
}
}
@@ -96,7 +96,7 @@ index d7755e6a4641b5463eb39885bf53b6950c09bfc9..52ef2891eb9b6c8c8db763c9836fc647
hopper.setCooldown(level.spigotConfig.hopperTransfer);
}
return false;
@@ -316,7 +316,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -317,7 +317,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
}
origItemStack.setCount(originalItemCount);

View File

@@ -26,7 +26,7 @@ index 643797124fe5a4489d0b7419b7e600c04f283ef2..04b4100da96aad50f08e8c59200eec93
public String serialize(HolderLookup.Provider levelRegistry) {
diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java
index adba92a9ebef64561147427d1339f70e2701d93c..fc367026ca84b125bf3ccd261ef43a3833c1da5c 100644
index 4f56cdcf658234b1ca92d38c3df3d31e9be34a15..f6e18d62db18616a422ae74d6f329d1b3a96300b 100644
--- a/net/minecraft/server/commands/GiveCommand.java
+++ b/net/minecraft/server/commands/GiveCommand.java
@@ -55,7 +55,7 @@ public class GiveCommand {
@@ -39,10 +39,10 @@ index adba92a9ebef64561147427d1339f70e2701d93c..fc367026ca84b125bf3ccd261ef43a38
if (count > i) {
source.sendFailure(Component.translatable("commands.give.failed.toomanyitems", i, itemStack.getDisplayName()));
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index ca13dd72f173be6714965c506f2d48dcd3c9e569..87201eca6bbcb0dbf2612b59219d97960db29d01 100644
index ef7d44ea1c1582bbf1d544819825778c414fe40d..a77a7b77c27a0d1257f4eaa071b1c5934aff0f47 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2987,7 +2987,7 @@ public class ServerGamePacketListenerImpl
@@ -2998,7 +2998,7 @@ public class ServerGamePacketListenerImpl
} else if (slot.mayPlace(cursor)) {
if (ItemStack.isSameItemSameComponents(clickedItem, cursor)) {
int toPlace = packet.buttonNum() == 0 ? cursor.getCount() : 1;
@@ -51,7 +51,7 @@ index ca13dd72f173be6714965c506f2d48dcd3c9e569..87201eca6bbcb0dbf2612b59219d9796
toPlace = Math.min(toPlace, slot.container.getMaxStackSize() - clickedItem.getCount());
if (toPlace == 1) {
action = InventoryAction.PLACE_ONE;
@@ -3023,7 +3023,7 @@ public class ServerGamePacketListenerImpl
@@ -3034,7 +3034,7 @@ public class ServerGamePacketListenerImpl
}
} else if (ItemStack.isSameItemSameComponents(cursor, clickedItem)) {
if (clickedItem.getCount() >= 0) {
@@ -60,7 +60,7 @@ index ca13dd72f173be6714965c506f2d48dcd3c9e569..87201eca6bbcb0dbf2612b59219d9796
// As of 1.5, this is result slots only
action = InventoryAction.PICKUP_ALL;
}
@@ -3234,6 +3234,7 @@ public class ServerGamePacketListenerImpl
@@ -3251,6 +3251,7 @@ public class ServerGamePacketListenerImpl
this.player.containerMenu.broadcastFullState();
} else {
this.player.containerMenu.broadcastChanges();
@@ -68,7 +68,7 @@ index ca13dd72f173be6714965c506f2d48dcd3c9e569..87201eca6bbcb0dbf2612b59219d9796
}
if (packet.buttonNum() == Inventory.SLOT_OFFHAND && this.player.containerMenu != this.player.inventoryMenu) this.player.containerSynchronizer.sendOffHandSlotChange(); // Paper - update offhand data when the player is clicking in an inventory not their own as the sychronizer does not include offhand slots
if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes.
@@ -3345,7 +3346,7 @@ public class ServerGamePacketListenerImpl
@@ -3362,7 +3363,7 @@ public class ServerGamePacketListenerImpl
}
boolean flag1 = packet.slotNum() >= 1 && packet.slotNum() <= 45;
@@ -77,7 +77,7 @@ index ca13dd72f173be6714965c506f2d48dcd3c9e569..87201eca6bbcb0dbf2612b59219d9796
if (flag || (flag1 && !ItemStack.matches(this.player.inventoryMenu.getSlot(packet.slotNum()).getItem(), packet.itemStack()))) { // Insist on valid slot
// CraftBukkit start - Call click event
org.bukkit.inventory.InventoryView inventory = this.player.inventoryMenu.getBukkitView();
@@ -3387,6 +3388,7 @@ public class ServerGamePacketListenerImpl
@@ -3404,6 +3405,7 @@ public class ServerGamePacketListenerImpl
this.player.inventoryMenu.getSlot(packet.slotNum()).setByPlayer(itemStack);
this.player.inventoryMenu.setRemoteSlot(packet.slotNum(), itemStack);
this.player.inventoryMenu.broadcastChanges();
@@ -86,10 +86,10 @@ index ca13dd72f173be6714965c506f2d48dcd3c9e569..87201eca6bbcb0dbf2612b59219d9796
} else if (flag && flag2) {
if (this.dropSpamThrottler.isUnderThreshold()) {
diff --git a/net/minecraft/world/Container.java b/net/minecraft/world/Container.java
index b382665cc125b8b5c0938e5e55984e4bf91d37ff..86cac164a2bf0e76528396e6aabbfd64cfc29559 100644
index 8e6f097b4d17aaaf8eccc16e11ce2bd01ad63322..5493576c54e87823f68bbf8a18441b373aae0461 100644
--- a/net/minecraft/world/Container.java
+++ b/net/minecraft/world/Container.java
@@ -32,6 +32,12 @@ public interface Container extends Clearable, Iterable<ItemStack> {
@@ -34,6 +34,12 @@ public interface Container extends Clearable, Iterable<ItemStack> {
return Math.min(this.getMaxStackSize(), stack.getMaxStackSize());
}
@@ -125,10 +125,10 @@ index d907e24d563e27acab2f2bf9711b1755ea9afd19..75170c8d3be477a6ea2a1d62018a6ab6
if (min > 0) {
other.grow(min);
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
index 51804b611f469f2ab53e455e8c633b867b00cc88..df24938d5136948b151d3c1c72ccb2ec97640478 100644
index 6be576368695c902a0d6da74b1d77d3018b4585a..e198e4c1ee267c6738117959e71cf4018bf6ef1d 100644
--- a/net/minecraft/world/entity/item/ItemEntity.java
+++ b/net/minecraft/world/entity/item/ItemEntity.java
@@ -279,10 +279,15 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -270,10 +270,15 @@ public class ItemEntity extends Entity implements TraceableEntity {
private boolean isMergable() {
ItemStack item = this.getItem();
@@ -146,10 +146,10 @@ index 51804b611f469f2ab53e455e8c633b867b00cc88..df24938d5136948b151d3c1c72ccb2ec
ItemStack item1 = itemEntity.getItem();
if (Objects.equals(this.target, itemEntity.target) && areMergable(item, item1)) {
diff --git a/net/minecraft/world/entity/player/Inventory.java b/net/minecraft/world/entity/player/Inventory.java
index a6bb436dc80daf6901dc027a6011ead4b3ed27e2..71df58ae26325a2d28b6679733c474c0c59f7654 100644
index 41e59f3739945ca7f6ab710c993b5c0f15fcd529..b849b04f227b43d036f4f6b3ae7accfafc389d9f 100644
--- a/net/minecraft/world/entity/player/Inventory.java
+++ b/net/minecraft/world/entity/player/Inventory.java
@@ -165,10 +165,12 @@ public class Inventory implements Container, Nameable {
@@ -166,10 +166,12 @@ public class Inventory implements Container, Nameable {
}
private boolean hasRemainingSpaceForItem(ItemStack destination, ItemStack origin) {
@@ -164,7 +164,7 @@ index a6bb436dc80daf6901dc027a6011ead4b3ed27e2..71df58ae26325a2d28b6679733c474c0
}
// CraftBukkit start - Watch method above! :D
@@ -181,7 +183,7 @@ public class Inventory implements Container, Nameable {
@@ -182,7 +184,7 @@ public class Inventory implements Container, Nameable {
}
if (this.hasRemainingSpaceForItem(itemInSlot, itemStack)) {
@@ -173,7 +173,7 @@ index a6bb436dc80daf6901dc027a6011ead4b3ed27e2..71df58ae26325a2d28b6679733c474c0
}
if (remains <= 0) {
return itemStack.getCount();
@@ -190,7 +192,7 @@ public class Inventory implements Container, Nameable {
@@ -191,7 +193,7 @@ public class Inventory implements Container, Nameable {
ItemStack itemInOffhand = this.equipment.get(EquipmentSlot.OFFHAND);
if (this.hasRemainingSpaceForItem(itemInOffhand, itemStack)) {
@@ -182,7 +182,7 @@ index a6bb436dc80daf6901dc027a6011ead4b3ed27e2..71df58ae26325a2d28b6679733c474c0
}
if (remains <= 0) {
return itemStack.getCount();
@@ -314,7 +316,7 @@ public class Inventory implements Container, Nameable {
@@ -315,7 +317,7 @@ public class Inventory implements Container, Nameable {
this.setItem(slot, item);
}
@@ -191,7 +191,7 @@ index a6bb436dc80daf6901dc027a6011ead4b3ed27e2..71df58ae26325a2d28b6679733c474c0
int min = Math.min(count, i);
if (min == 0) {
return count;
@@ -420,7 +422,7 @@ public class Inventory implements Container, Nameable {
@@ -421,7 +423,7 @@ public class Inventory implements Container, Nameable {
break;
}
@@ -214,7 +214,7 @@ index 83ccde54c625d40dc595e000c533f60aa929bd5a..6779503888e6d311758cffde582b0efb
public void accountStack(ItemStack stack, int maxStackSize) {
diff --git a/net/minecraft/world/entity/vehicle/ContainerEntity.java b/net/minecraft/world/entity/vehicle/ContainerEntity.java
index 02d2efef2dc0f0e12eac0c71fa290af706f7694d..99f109e2653eff10c011f380694bd77a76381cee 100644
index 6e756ed4a811d9fe7d78d7dc89b3b5a735e0e857..358de981544b220bde770410c24e5f6b10520d91 100644
--- a/net/minecraft/world/entity/vehicle/ContainerEntity.java
+++ b/net/minecraft/world/entity/vehicle/ContainerEntity.java
@@ -163,7 +163,7 @@ public interface ContainerEntity extends Container, MenuProvider {
@@ -225,9 +225,9 @@ index 02d2efef2dc0f0e12eac0c71fa290af706f7694d..99f109e2653eff10c011f380694bd77a
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
}
default SlotAccess getChestVehicleSlot(final int index) {
default SlotAccess getChestVehicleSlot(final int slot) {
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index e1783ad0adbb791b2ff7441243c9f0aeaf37c7f6..47963968763cbee60016853d617f159c0761d282 100644
index 4e53e7c05af11cae2ce8cf313c69a83336e22ba6..e78baa9433b6f5cb32142fe583fe95831b173d5a 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -295,6 +295,13 @@ public abstract class AbstractContainerMenu {
@@ -263,14 +263,14 @@ index e1783ad0adbb791b2ff7441243c9f0aeaf37c7f6..47963968763cbee60016853d617f159c
carried2.grow(itemStack2.getCount());
slot.onTake(player, itemStack2);
@@ -626,7 +633,7 @@ public abstract class AbstractContainerMenu {
Slot slot2 = this.slots.get(slotId);
Slot slot2 = this.slots.get(slotIndex);
if (slot2.hasItem()) {
ItemStack itemStack = slot2.getItem();
- this.setCarried(itemStack.copyWithCount(itemStack.getMaxStackSize()));
+ this.setCarried(itemStack.copyWithCount(org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack))); // Leaves - item over-stack util
}
} else if (clickType == ClickType.THROW && this.getCarried().isEmpty() && slotId >= 0) {
Slot slot2 = this.slots.get(slotId);
} else if (clickType == ClickType.THROW && this.getCarried().isEmpty() && slotIndex >= 0) {
Slot slot2 = this.slots.get(slotIndex);
@@ -657,15 +664,15 @@ public abstract class AbstractContainerMenu {
int maxStackSize = button == 0 ? 1 : -1;
@@ -353,10 +353,10 @@ index 5ceb8964476b40db4511bec91ff13c4f522a1357..f416d7976e41a06b5a8be93485eaa233
@Nullable
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index da16f4831c875e07c25d7ed041bed493db614658..3ba64f91883b88f3131d4582c771b511bbccfcd9 100644
index 14c74eb71b5bfb67d0fcf9d660f748c7b1dba63d..695f377155018d2b919086f0c29bdfb0abe1a2b2 100644
--- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java
@@ -162,7 +162,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -164,7 +164,7 @@ public final class ItemStack implements DataComponentHolder {
@Deprecated
@Nullable
private Item item;
@@ -365,7 +365,7 @@ index da16f4831c875e07c25d7ed041bed493db614658..3ba64f91883b88f3131d4582c771b511
@Nullable
private Entity entityRepresentation;
@@ -189,7 +189,8 @@ public final class ItemStack implements DataComponentHolder {
@@ -191,7 +191,8 @@ public final class ItemStack implements DataComponentHolder {
} else {
Holder<Item> holder = Item.STREAM_CODEC.decode(buffer);
DataComponentPatch dataComponentPatch = codec.decode(buffer);
@@ -375,7 +375,7 @@ index da16f4831c875e07c25d7ed041bed493db614658..3ba64f91883b88f3131d4582c771b511
}
}
@@ -198,13 +199,15 @@ public final class ItemStack implements DataComponentHolder {
@@ -200,13 +201,15 @@ public final class ItemStack implements DataComponentHolder {
if (value.isEmpty() || value.getItem() == null) { // CraftBukkit - NPE fix itemstack.getItem()
buffer.writeVarInt(0);
} else {
@@ -395,7 +395,7 @@ index da16f4831c875e07c25d7ed041bed493db614658..3ba64f91883b88f3131d4582c771b511
} finally {
net.minecraft.network.chat.ComponentSerialization.DONT_RENDER_TRANSLATABLES.set(prev);
}
@@ -299,7 +302,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -300,7 +303,7 @@ public final class ItemStack implements DataComponentHolder {
for (ItemStack itemStack : itemContainerContents.nonEmptyItems()) {
int count = itemStack.getCount();
@@ -405,7 +405,7 @@ index da16f4831c875e07c25d7ed041bed493db614658..3ba64f91883b88f3131d4582c771b511
return DataResult.error(() -> "Item stack with count of " + count + " was larger than maximum: " + maxStackSize);
}
diff --git a/net/minecraft/world/level/block/CrafterBlock.java b/net/minecraft/world/level/block/CrafterBlock.java
index 38b03c7b02bdfc579e5e126c12de3d878e26d188..caf31218a1aff84367da126ee1dc46b8c8a1e5d1 100644
index a132883d85d515edb131049714915902444e4c3e..59cea0d226829267e9a5dff9f81789673bd3f062 100644
--- a/net/minecraft/world/level/block/CrafterBlock.java
+++ b/net/minecraft/world/level/block/CrafterBlock.java
@@ -192,7 +192,7 @@ public class CrafterBlock extends BaseEntityBlock {
@@ -418,10 +418,10 @@ index 38b03c7b02bdfc579e5e126c12de3d878e26d188..caf31218a1aff84367da126ee1dc46b8
org.bukkit.craftbukkit.inventory.CraftItemStack oitemstack = org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack);
diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index bebe8737b71fc37336342f14b6ea4cfab12d3f34..4fdb3c36b39213f01f86ba281c7b62af99f5dcce 100644
index 37bbd8d2cf412983fc4eb89737b3343f17364cae..8a93c4b9571b3088dc92317544d209603880d3fa 100644
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -409,7 +409,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -410,7 +410,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
ItemStack itemStack = this.items.get(index);
boolean flag = !stack.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, stack);
this.items.set(index, stack);
@@ -431,10 +431,10 @@ index bebe8737b71fc37336342f14b6ea4cfab12d3f34..4fdb3c36b39213f01f86ba281c7b62af
this.cookingTotalTime = getTotalCookTime(serverLevel, this, this.recipeType, this.cookSpeedMultiplier); // Paper - cook speed multiplier API
this.cookingTimer = 0;
diff --git a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
index 5a094257a31f0500278a706a418e1697f8810ffb..63d6a43dab067aa4c8fb67095c455130196eef9f 100644
index 1b2f8c4e1e362dc63fde2c7139039f0ce7eb762f..701a12db0c342c9ff2c974e581b112182dec2ea6 100644
--- a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
@@ -145,7 +145,7 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
@@ -149,7 +149,7 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
@Override
public void setItem(int slot, ItemStack stack) {
this.getItems().set(slot, stack);
@@ -444,10 +444,10 @@ index 5a094257a31f0500278a706a418e1697f8810ffb..63d6a43dab067aa4c8fb67095c455130
}
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index e53b40c70c0a61cbe14a236a99725daa28512b0b..d152ad88e8e873a0164b2394516bd10f23c7b263 100644
index ca5707060e415a32fdb50509c24e79494d3ad28f..a1799e2646569bf9db4fcdd3a9758f486f96f56e 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -113,7 +113,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -114,7 +114,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
public void setItem(int index, ItemStack stack) {
this.unpackLootTable(null);
this.getItems().set(index, stack);
@@ -456,7 +456,7 @@ index e53b40c70c0a61cbe14a236a99725daa28512b0b..d152ad88e8e873a0164b2394516bd10f
}
@Override
@@ -692,9 +692,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -693,9 +693,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
if (item.isEmpty()) {
// Spigot start - SPIGOT-6693, SimpleContainer#setItem
ItemStack leftover = ItemStack.EMPTY; // Paper - Make hoppers respect inventory max stack size

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Return nether portal fix
This patch is powered by NetherPortalFix(https://github.com/TwelveIterationMods/NetherPortalFix)
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 51fd9298a931501ee15401b64f3194c72c00b00f..c356a88667c9fe0e8b0aca564f976043dfb83b39 100644
index d4df6ca7360d4bc605a51061444191d7929c7778..134f6eba6655b7294ebcdf5cf5d9e2183e2ecf5b 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1468,6 +1468,21 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1576,6 +1576,21 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), serverLevel.getWorld());
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
// CraftBukkit end
@@ -32,13 +32,13 @@ index 51fd9298a931501ee15401b64f3194c72c00b00f..c356a88667c9fe0e8b0aca564f976043
if (this.isBlocking()) {
this.stopUsingItem();
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index e59a4178100532a2a52b4242409a270ed62498f6..7a0d36b9c6a633919a116fc4d47e500b2c6cbc28 100644
index bf5d8fe260aaca48a73d6ffe9d1312f5161f9365..7977a0cfe18c99c4c6ba8c5b56387b690ede554d 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -820,6 +820,20 @@ public abstract class PlayerList {
if (fromWorld != level) {
org.bukkit.event.player.PlayerChangedWorldEvent event = new org.bukkit.event.player.PlayerChangedWorldEvent(player.getBukkitEntity(), fromWorld.getWorld());
this.server.server.getPluginManager().callEvent(event);
@@ -700,6 +700,20 @@ public abstract class PlayerList {
// It's possible for respawn to be in a diff dimension
if (fromLevel != level) {
new org.bukkit.event.player.PlayerChangedWorldEvent(serverPlayer.getBukkitEntity(), fromLevel.getWorld()).callEvent();
+ // Leaves start - nether portal fix
+ if (org.leavesmc.leaves.LeavesConfig.modify.netherPortalFix) {
+ final ResourceKey<Level> fromDim = player.level().dimension();
@@ -53,14 +53,14 @@ index e59a4178100532a2a52b4242409a270ed62498f6..7a0d36b9c6a633919a116fc4d47e500b
+ }
+ }
+ // Leaves end - nether portal fix
serverPlayer.triggerDimensionChangeTriggers(level);
}
// Save player file again if they were disconnected
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 942be06bebe8c3fca0b0c33fa387e30deda8dd7c..bc19f0bf079d6a7fa2fc8aaed6477da5e57d32da 100644
index ce4c8e14d3d7b5837dcce006fa67722f3f430fa4..759c320fc331704efe5df10d3f1f33aa87262290 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -257,7 +257,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -259,7 +259,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
protected ItemStack useItem = ItemStack.EMPTY;
public int useItemRemaining;
protected int fallFlyTicks;
@@ -70,14 +70,14 @@ index 942be06bebe8c3fca0b0c33fa387e30deda8dd7c..bc19f0bf079d6a7fa2fc8aaed6477da5
@Nullable
private DamageSource lastDamageSource;
diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java
index 6c5629a6f5f91496a55eb0bf281ceae1567915b1..3aabae6e27e692aa65cc931e57306426e0f4d645 100644
index d3f0a61c0c91d3a6a1dc4e59d57743ba89a9c19a..1ad863dc255a7b91d0b163000b6bb5d43e2ad204 100644
--- a/net/minecraft/world/level/block/NetherPortalBlock.java
+++ b/net/minecraft/world/level/block/NetherPortalBlock.java
@@ -179,7 +179,18 @@ public class NetherPortalBlock extends Block implements Portal {
@Nullable
private TeleportTransition getExitPortal(ServerLevel level, Entity entity, BlockPos pos, BlockPos exitPos, boolean isNether, WorldBorder worldBorder, int searchRadius, boolean canCreatePortal, int createRadius) { // CraftBukkit
- Optional<BlockPos> optional = level.getPortalForcer().findClosestPortalPosition(exitPos, worldBorder, searchRadius); // CraftBukkit
private TeleportTransition getExitPortal(ServerLevel level, Entity entity, BlockPos pos, BlockPos exitPos, WorldBorder worldBorder, org.bukkit.craftbukkit.event.PortalEventResult result) { // CraftBukkit
- Optional<BlockPos> optional = level.getPortalForcer().findClosestPortalPosition(exitPos, worldBorder, result.searchRadius()); // CraftBukkit
+ // Leaves start - fix return portal
+ Optional<BlockPos> optional = Optional.empty();
+ if (org.leavesmc.leaves.LeavesConfig.modify.netherPortalFix && entity instanceof net.minecraft.server.level.ServerPlayer player) {
@@ -87,7 +87,7 @@ index 6c5629a6f5f91496a55eb0bf281ceae1567915b1..3aabae6e27e692aa65cc931e57306426
+ }
+ }
+ if (optional.isEmpty()) {
+ optional = level.getPortalForcer().findClosestPortalPosition(exitPos, worldBorder, searchRadius); // CraftBukkit
+ level.getPortalForcer().findClosestPortalPosition(exitPos, worldBorder, result.searchRadius()); // CraftBukkit
+ }
+ // Leaves end - fix return portal
BlockUtil.FoundRectangle largestRectangleAround;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Extra Yggdrasil Service
diff --git a/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java b/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java
index 8c3151c25c172b846f0d028b5100718ada2d09d7..d59d05f8894481fb5ebe1aeb8ee7a162b3dc6f1c 100644
index 9e5757391ea32e37b2aac52cc1bb38259a2cc497..b85593aea7a347a5c2c50464d2146f96f4fa317e 100644
--- a/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java
+++ b/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java
@@ -46,7 +46,7 @@ import java.util.stream.Collectors;
@@ -48,7 +48,7 @@ import java.util.stream.Collectors;
public class YggdrasilMinecraftSessionService implements MinecraftSessionService {
private static final Logger LOGGER = LoggerFactory.getLogger(YggdrasilMinecraftSessionService.class);
@@ -18,10 +18,10 @@ index 8c3151c25c172b846f0d028b5100718ada2d09d7..d59d05f8894481fb5ebe1aeb8ee7a162
private final String baseUrl;
private final URL joinUrl;
diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java
index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..e673df664b06c654a7be0622874b9b27ad7ef20f 100644
index 8d299a75c80fddc61a2aa4dc5b0dc5948aef5a0d..30b681bc234eac8dc44ce3bf6e228171f5a71a7a 100644
--- a/net/minecraft/server/Main.java
+++ b/net/minecraft/server/Main.java
@@ -178,7 +178,7 @@ public class Main {
@@ -176,7 +176,7 @@ public class Main {
file = new File(bukkitConfiguration.getString("settings.world-container", "."));
}
// Paper end - fix SPIGOT-5824
@@ -31,15 +31,15 @@ index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..e673df664b06c654a7be0622874b9b27
String string = Optional.ofNullable((String) optionSet.valueOf("world")).orElse(dedicatedServerSettings.getProperties().levelName);
LevelStorageSource levelStorageSource = LevelStorageSource.createDefault(file.toPath());
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 11728fa48bb144bbe933eb8fa2df22b52ac1b5a5..7e339cb26a132487ac0ab91d3db7e4885bacd545 100644
index 5ad76e6483b589d6695ad086755cc9dc0edd9235..c3c93caab5981d509dd5471419f3d79cdd045f1d 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -245,7 +245,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -242,7 +242,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private boolean isDemo;
private volatile boolean isReady;
private long lastOverloadWarningNanos;
- protected final Services services;
+ public final Services services; // Leaves - protected -> public
private final NotificationManager notificationManager;
private long lastServerStatus;
public final Thread serverThread;
private long lastTickNanos = Util.getNanos();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable vanilla random
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index d5051d8a2b0af5d8b63a0d10987c0a7ee7114ff0..e6457e07e7e8e7690d160020b92fbc6874c1ec82 100644
index c6815ffef7fb2fd2e5ef2769c2c93135b52558f5..f6dd8e81f6881400c3278ea53e2ed248625744e1 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -281,7 +281,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -282,7 +282,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
public double yOld;
public double zOld;
public boolean noPhysics;
@@ -18,10 +18,10 @@ index d5051d8a2b0af5d8b63a0d10987c0a7ee7114ff0..e6457e07e7e8e7690d160020b92fbc68
private int remainingFireTicks;
public boolean wasTouchingWater;
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
index 13f24836649790a34b988e2d63accb043e6ff080..d991660c990ca280a422154d4b3bde8dc0cdfd49 100644
index e94c6c1ee969a7d0953b933fb0633cebb510a68c..97fbdb90db218c6f2f81487cc30430d7c90afa8e 100644
--- a/net/minecraft/world/entity/animal/Bee.java
+++ b/net/minecraft/world/entity/animal/Bee.java
@@ -802,7 +802,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -808,7 +808,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@VisibleForDebug
public class BeeGoToHiveGoal extends Bee.BaseBeeGoal {
public static final int MAX_TRAVELLING_TICKS = 2400;
@@ -30,7 +30,7 @@ index 13f24836649790a34b988e2d63accb043e6ff080..d991660c990ca280a422154d4b3bde8d
private static final int MAX_BLACKLISTED_TARGETS = 3;
final List<BlockPos> blacklistedTargets = Lists.newArrayList();
@Nullable
@@ -918,7 +918,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -924,7 +924,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
public class BeeGoToKnownFlowerGoal extends Bee.BaseBeeGoal {
private static final int MAX_TRAVELLING_TICKS = 2400;
@@ -40,23 +40,23 @@ index 13f24836649790a34b988e2d63accb043e6ff080..d991660c990ca280a422154d4b3bde8d
BeeGoToKnownFlowerGoal() {
this.setFlags(EnumSet.of(Goal.Flag.MOVE));
diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java
index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..ea41360af5e5d49c96ca24e9c36bd52cfdd7d40c 100644
index 8313ea146ba6910d92653c29887c94b75f68cce4..9b8775a9069db99605ac5367804923d537320d68 100644
--- a/net/minecraft/world/entity/animal/Squid.java
+++ b/net/minecraft/world/entity/animal/Squid.java
@@ -46,7 +46,7 @@ public class Squid extends AgeableWaterCreature {
@@ -47,7 +47,7 @@ public class Squid extends AgeableWaterCreature {
public Squid(EntityType<? extends Squid> entityType, Level level) {
super(entityType, level);
- //this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random
public Squid(EntityType<? extends Squid> type, Level level) {
super(type, level);
- // this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random
+ if (org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom) this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random // Leaves - vanilla plz
this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
}
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
index df24938d5136948b151d3c1c72ccb2ec97640478..af0467f60e5a873eeed7b741717c327272746a9a 100644
index e198e4c1ee267c6738117959e71cf4018bf6ef1d..671ae6195c86b44dfb2df4414a35287e3acd954f 100644
--- a/net/minecraft/world/entity/item/ItemEntity.java
+++ b/net/minecraft/world/entity/item/ItemEntity.java
@@ -67,7 +67,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -66,7 +66,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
// Paper start - Don't use level random in entity constructors (to make them thread-safe)
this(EntityType.ITEM, level);
this.setPos(posX, posY, posZ);
@@ -68,11 +68,11 @@ index df24938d5136948b151d3c1c72ccb2ec97640478..af0467f60e5a873eeed7b741717c3272
+ this.setDeltaMovement(this.random.nextDouble() * 0.2 - 0.1, 0.2, this.random.nextDouble() * 0.2 - 0.1);
+ }
+ // Leaves end - vanilla yes, safe no
this.setItem(itemStack);
this.setItem(stack);
// Paper end - Don't use level random in entity constructors
}
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
index 1d7a1739d6a3a55aacb33d57a58712350b150f64..87dff2fb5246d730feca82396a68b41150e2d383 100644
index d36ce16724e9f5a79960f0aa265a0354f5240abc..8230b42919bd8888acf656c5846601bead39598f 100644
--- a/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
@@ -68,7 +68,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {

View File

@@ -4,36 +4,36 @@ Date: Fri, 17 Mar 2023 15:57:08 +0800
Subject: [PATCH] Catch update suppression crash
diff --git a/net/minecraft/network/protocol/PacketUtils.java b/net/minecraft/network/protocol/PacketUtils.java
index 4535858701b2bb232b9d2feb2af6551526232ddc..03e70445dfe14c119284f7c301127075c009e915 100644
--- a/net/minecraft/network/protocol/PacketUtils.java
+++ b/net/minecraft/network/protocol/PacketUtils.java
@@ -27,7 +27,20 @@ public class PacketUtils {
if (processor.shouldHandleMessage(packet)) {
diff --git a/net/minecraft/network/PacketProcessor.java b/net/minecraft/network/PacketProcessor.java
index 3e4241976fdfe65bc0aae90a9097770745c0ddf1..8e3e9a8aaee8fd4fbe986f9f079945179017c4f3 100644
--- a/net/minecraft/network/PacketProcessor.java
+++ b/net/minecraft/network/PacketProcessor.java
@@ -97,7 +97,20 @@ public class PacketProcessor implements AutoCloseable {
if (this.listener.shouldHandleMessage(this.packet)) {
try {
packet.handle(processor);
this.packet.handle(this.listener);
+ // Leaves start - update suppression crash fix
+ } catch (org.leavesmc.leaves.util.UpdateSuppressionException exception) {
+ if (processor instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
+ if (this.listener instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
+ exception.providePlayer(gamePacketListener.player);
+ }
+ exception.consume();
} catch (Exception var4) {
+ if (var4.getCause() instanceof org.leavesmc.leaves.util.UpdateSuppressionException exception) {
+ if (processor instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
} catch (Exception var3) {
+ if (var3.getCause() instanceof org.leavesmc.leaves.util.UpdateSuppressionException exception) {
+ if (this.listener instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
+ exception.providePlayer(gamePacketListener.player);
+ }
+ exception.consume();
+ }
+ // Leaves end - update suppression crash fix
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
throw makeReportedException(var4, packet, processor);
if (var3 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
throw PacketUtils.makeReportedException(var3, this.packet, this.listener);
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 4cc0bb9c612986934bf44f933aa402b3787394ba..2545c7ebbe4bab45ea22d3843d42c7e55941387e 100644
index c8135525666da2cedc134025327e240fbe6cd63c..bd9d83675d40b383678c6066b73b9e053b5ea6a6 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1726,7 +1726,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1808,7 +1808,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
try {
serverLevel.tick(hasTimeLeft);
@@ -51,10 +51,10 @@ index 4cc0bb9c612986934bf44f933aa402b3787394ba..2545c7ebbe4bab45ea22d3843d42c7e5
serverLevel.fillReportDetails(crashReport);
throw new ReportedException(crashReport);
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index ed05aaa76e1e34ca82fcc7cfb73f371a11600eee..400cb6f7fb05d4e69a7c5bfb960480eef13f15c5 100644
index 015c49c8170ba8d73b2bc9386192681a8ececb3f..b4000881962db5fe9c6de38f406647d95a395ec3 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -814,6 +814,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -842,6 +842,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
if (org.leavesmc.leaves.LeavesConfig.performance.remove.tickGuardLambda) {
try {
this.tickNonPassenger(entity); // Leaves - changed
@@ -67,10 +67,10 @@ index ed05aaa76e1e34ca82fcc7cfb73f371a11600eee..400cb6f7fb05d4e69a7c5bfb960480ee
if (throwable instanceof ThreadDeath) throw throwable; // Paper
// Paper start - Prevent block entity and entity crashes
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 895cee538086e0494eb0f57c6e6b32ccd43e72e7..e355939e153c05f9434482c4713743755b280d69 100644
index 134f6eba6655b7294ebcdf5cf5d9e2183e2ecf5b..97e133f3555057e36e3e7157f1411ba923ab2823 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -905,6 +905,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -902,6 +902,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
((org.bukkit.craftbukkit.CraftWorldBorder) this.getBukkitEntity().getWorldBorder()).getHandle().tick();
}
// CraftBukkit end
@@ -84,10 +84,10 @@ index 895cee538086e0494eb0f57c6e6b32ccd43e72e7..e355939e153c05f9434482c471374375
CrashReport crashReport = CrashReport.forThrowable(var4, "Ticking player");
CrashReportCategory crashReportCategory = crashReport.addCategory("Player being ticked");
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index d06e5719e62b500432bb6fcb60d6049b8379c17d..df01a171a8073b6a7ef16248bd09b4c902227887 100644
index f6dd8e81f6881400c3278ea53e2ed248625744e1..0129274ab88a151600f4fdde92dae73bec352fb2 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1351,9 +1351,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1363,9 +1363,19 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
this.walkingStepSound(pos, state);
}
@@ -109,13 +109,13 @@ index d06e5719e62b500432bb6fcb60d6049b8379c17d..df01a171a8073b6a7ef16248bd09b4c9
return true;
} else {
diff --git a/net/minecraft/world/level/block/ShulkerBoxBlock.java b/net/minecraft/world/level/block/ShulkerBoxBlock.java
index 49bac7af90b0a7c490141be6357563447783c6ca..787a4226789b0e6d35ef1a36601655b0a8666b6f 100644
index e08083fbb6c3090c9a6f78dbbe487cbd4fec485a..4ed941783ed038df8e94ea92cdebb72b31921d90 100644
--- a/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -183,7 +183,17 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@Override
protected int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos pos) {
protected int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos, Direction direction) {
- return AbstractContainerMenu.getRedstoneSignalFromBlockEntity(level.getBlockEntity(pos));
+ // Leaves start - update suppression crash fix
+ try {
@@ -132,7 +132,7 @@ index 49bac7af90b0a7c490141be6357563447783c6ca..787a4226789b0e6d35ef1a36601655b0
public static Block getBlockByColor(@Nullable DyeColor color) {
diff --git a/net/minecraft/world/level/block/state/StateHolder.java b/net/minecraft/world/level/block/state/StateHolder.java
index 9b9842462b210b0407279ee8a8e9ccecf3ead005..ba9c8a677c1759e75392344df7877c5fcc9b9910 100644
index 040919c61ed29b3eda73b5d0f8ed905011e969a4..22dae9cf15fafda4b398025d85bad3e2a5965066 100644
--- a/net/minecraft/world/level/block/state/StateHolder.java
+++ b/net/minecraft/world/level/block/state/StateHolder.java
@@ -104,7 +104,16 @@ public abstract class StateHolder<O, S> implements ca.spottedleaf.moonrise.patch
@@ -154,10 +154,10 @@ index 9b9842462b210b0407279ee8a8e9ccecf3ead005..ba9c8a677c1759e75392344df7877c5f
}
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index f24db919989bc2e5768e18b4fda68c38d6cde7e0..0e22116fefcbdbf2049b7ec285b35fd03c723dc5 100644
index bdc564c24982c196f151121fb769c7cfad4a08b0..7c5f827134e0fa81031660a78d4d404c21840cb6 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -373,7 +373,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -380,7 +380,7 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot
if (blockState == state) {
return null;
} else {
@@ -166,7 +166,7 @@ index f24db919989bc2e5768e18b4fda68c38d6cde7e0..0e22116fefcbdbf2049b7ec285b35fd0
this.heightmaps.get(Heightmap.Types.MOTION_BLOCKING).update(i, y, i2, state);
this.heightmaps.get(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES).update(i, y, i2, state);
this.heightmaps.get(Heightmap.Types.OCEAN_FLOOR).update(i, y, i2, state);
@@ -445,6 +445,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -454,6 +454,7 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot
this.markUnsaved();
return blockState;
}
@@ -175,7 +175,7 @@ index f24db919989bc2e5768e18b4fda68c38d6cde7e0..0e22116fefcbdbf2049b7ec285b35fd0
}
}
diff --git a/net/minecraft/world/level/redstone/NeighborUpdater.java b/net/minecraft/world/level/redstone/NeighborUpdater.java
index 332b33a004ab11150cca0cc2cefc26d0286648f5..8942aa2ca4796c7c36c0955141627ea905e0ec64 100644
index f45cf0136e77ed5a903d033a7b0611e5edc23db9..77ed7a6a4bea3dfc77d060c49f77f4e080da200b 100644
--- a/net/minecraft/world/level/redstone/NeighborUpdater.java
+++ b/net/minecraft/world/level/redstone/NeighborUpdater.java
@@ -60,9 +60,22 @@ public interface NeighborUpdater {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bedrock break list
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 2545c7ebbe4bab45ea22d3843d42c7e55941387e..cbc9f4fbad0a88bc324111a7ce80c2880ed1d3be 100644
index bd9d83675d40b383678c6066b73b9e053b5ea6a6..fa2ae16481541308d525d0ac70a8bbc2c66a8851 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1758,6 +1758,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1843,6 +1843,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
profilerFiller.popPush("server gui refresh");
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(tickCount); // Leaves - protocol
@@ -17,7 +17,7 @@ index 2545c7ebbe4bab45ea22d3843d42c7e55941387e..cbc9f4fbad0a88bc324111a7ce80c288
for (int i = 0; i < this.tickables.size(); i++) {
this.tickables.get(i).run();
diff --git a/net/minecraft/server/ServerScoreboard.java b/net/minecraft/server/ServerScoreboard.java
index fc1c377ad05edcefacd407671801ae605f3fc31a..5c9f2a8476ff260ec7f0843f7c956c71e9b0d34d 100644
index 5886de75a8be3b7134b52520e5bc635812fda659..07294b9cfa788313da7433946312939d93956021 100644
--- a/net/minecraft/server/ServerScoreboard.java
+++ b/net/minecraft/server/ServerScoreboard.java
@@ -158,6 +158,7 @@ public class ServerScoreboard extends Scoreboard {
@@ -37,13 +37,13 @@ index fc1c377ad05edcefacd407671801ae605f3fc31a..5c9f2a8476ff260ec7f0843f7c956c71
this.stopTrackingObjective(objective);
}
diff --git a/net/minecraft/world/level/block/piston/PistonBaseBlock.java b/net/minecraft/world/level/block/piston/PistonBaseBlock.java
index 10484ee85482e86be5e0a09d8202df600a32092e..16aa9f5996dc6eda95541fddb01e00e41305357a 100644
index b0df1f59baf2c56c6eced429315e02aaac2cc325..114aa0f1ac9feefdb856bfc821489b864aba18f3 100644
--- a/net/minecraft/world/level/block/piston/PistonBaseBlock.java
+++ b/net/minecraft/world/level/block/piston/PistonBaseBlock.java
@@ -74,6 +74,11 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -75,6 +75,11 @@ public class PistonBaseBlock extends DirectionalBlock {
@Override
public void setPlacedBy(Level level, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {
if (!level.isClientSide) {
if (!level.isClientSide()) {
+ // Leaves start - break bedrock list
+ if (placer instanceof net.minecraft.world.entity.player.Player player) {
+ org.leavesmc.leaves.util.BreakBedrockList.onPlayerPlacePiston(level, player, pos);
@@ -52,7 +52,7 @@ index 10484ee85482e86be5e0a09d8202df600a32092e..16aa9f5996dc6eda95541fddb01e00e4
this.checkIfExtend(level, pos, state);
}
}
@@ -229,7 +234,13 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -230,7 +235,13 @@ public class PistonBaseBlock extends DirectionalBlock {
}
}
// Paper end - Fix sticky pistons and BlockPistonRetractEvent
@@ -67,7 +67,7 @@ index 10484ee85482e86be5e0a09d8202df600a32092e..16aa9f5996dc6eda95541fddb01e00e4
} else {
this.moveBlocks(level, pos, direction, false);
}
@@ -238,6 +249,11 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -239,6 +250,11 @@ public class PistonBaseBlock extends DirectionalBlock {
// Paper start - Protect Bedrock and End Portal/Frames from being destroyed; fix headless pistons breaking blocks
BlockPos headPos = pos.relative(direction);
if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || level.getBlockState(headPos) == Blocks.PISTON_HEAD.defaultBlockState().setValue(FACING, direction)) { // double check to make sure we're not a headless piston

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Disable distance check for UseItemOnPacket
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 6622d11f970def6adc2a732187004413a9501c95..e0687743975db1832933661540650df86a911a80 100644
index a77a7b77c27a0d1257f4eaa071b1c5934aff0f47..28fe3e0c8bb743237ddf324f633e986fb91bb405 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2038,7 +2038,7 @@ public class ServerGamePacketListenerImpl
@@ -2046,7 +2046,7 @@ public class ServerGamePacketListenerImpl
if (this.player.canInteractWithBlock(blockPos, 1.0)) {
Vec3 vec3 = location.subtract(Vec3.atCenterOf(blockPos));
double d = 1.0000001;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Disable packet limit
diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java
index 3e9b8c5fb2157f767de8bddc3e767512c5f7651f..ce65b531ec2b8a5dd1955ee8d826520f9a9a5f3b 100644
index b186b5e0d3b32d7b51b2f58f0ef4b2bf36ae5c13..c6fa04cc5e0352fef675baff93300b7e33fdfca5 100644
--- a/net/minecraft/network/Connection.java
+++ b/net/minecraft/network/Connection.java
@@ -245,8 +245,8 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -20,19 +20,19 @@ index 3e9b8c5fb2157f767de8bddc3e767512c5f7651f..ce65b531ec2b8a5dd1955ee8d826520f
synchronized (PACKET_LIMIT_LOCK) {
if (this.allPacketCounts != null) {
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index e4ea337185ed33b04fff0ea0974619bb27fa83bf..4b91a75e10161e69771a2779d3531e386a3fbde2 100644
index 28fe3e0c8bb743237ddf324f633e986fb91bb405..55374283f8cb1e7f3485eae7dc1da2db3cc98a0c 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -821,7 +821,7 @@ public class ServerGamePacketListenerImpl
@@ -828,7 +828,7 @@ public class ServerGamePacketListenerImpl
public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) {
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); // Paper - AsyncTabCompleteEvent; run this async
// CraftBukkit start
- if (!this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) { // Paper - configurable tab spam limits
+ if (!org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit && !this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) { // Paper - configurable tab spam limits // Leaves - can disable
- if (!this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.nameAndId()) && !this.server.isSingleplayerOwner(this.player.nameAndId())) { // Paper - configurable tab spam limits
+ if (!org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit && !this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.nameAndId()) && !this.server.isSingleplayerOwner(this.player.nameAndId())) { // Paper - configurable tab spam limits // Leaves - can disable
this.disconnectAsync(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - Kick event cause // Paper - add proper async disconnect
return;
}
@@ -2002,6 +2002,7 @@ public class ServerGamePacketListenerImpl
@@ -2010,6 +2010,7 @@ public class ServerGamePacketListenerImpl
private static int getSpamThreshold() { return io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.incomingPacketThreshold; } // Paper - Configurable threshold
private boolean checkLimit(long timestamp) {
@@ -40,7 +40,7 @@ index e4ea337185ed33b04fff0ea0974619bb27fa83bf..4b91a75e10161e69771a2779d3531e38
if (this.lastLimitedPacket != -1 && timestamp - this.lastLimitedPacket < getSpamThreshold() && this.limitedPackets++ >= 8) { // Paper - Configurable threshold; raise packet limit to 8
return false;
}
@@ -2536,6 +2537,7 @@ public class ServerGamePacketListenerImpl
@@ -2544,6 +2545,7 @@ public class ServerGamePacketListenerImpl
// Spigot start - spam exclusions
private void detectRateSpam(String message) {
@@ -48,7 +48,7 @@ index e4ea337185ed33b04fff0ea0974619bb27fa83bf..4b91a75e10161e69771a2779d3531e38
// CraftBukkit start - replaced with thread safe throttle
if (org.spigotmc.SpigotConfig.enableSpamExclusions) {
for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) {
@@ -3246,7 +3248,7 @@ public class ServerGamePacketListenerImpl
@@ -3263,7 +3265,7 @@ public class ServerGamePacketListenerImpl
@Override
public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) {
// Paper start - auto recipe limit

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Syncmatica Protocol
This patch is Powered by Syncmatica(https://github.com/End-Tech/syncmatica)
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 3c7b691a60f355ebaeb96f7ba07955f5be7fd09b..6e8e4b009a4dd52047bc8d8f8e2e27558e0d8dff 100644
index 55374283f8cb1e7f3485eae7dc1da2db3cc98a0c..ea9e98313c25e7ce94b011f5bc74a4318145c6f6 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -323,9 +323,12 @@ public class ServerGamePacketListenerImpl
@@ -326,9 +326,12 @@ public class ServerGamePacketListenerImpl
this.signedMessageDecoder = SignedMessageChain.Decoder.unsigned(player.getUUID(), server::enforceSecureProfile);
this.chatMessageChain = new FutureChain(server.chatExecutor); // CraftBukkit - async chat
this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Despawn enderman with block
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 6760bfd91f59139922768db5e5d362c5e7e4e473..33d4025ac997f46b7bf129c4dd3ba457c6fc9da2 100644
index 0732709d0ca78f59ad6b7f8ac5e7bfbe5506f60b..b314fb8819388facf664060fc0d1a091543aac68 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -448,7 +448,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -454,7 +454,7 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean requiresCustomPersistence() {

View File

@@ -18,10 +18,10 @@ index f7bb979f08634a7e1b77c59040f59fb5e11aafa5..3cad7d6bca9af77bace18bfd7cc013ac
for (int i1 = 0; i1 < this.height; i1++) {
for (int i2 = 0; i2 < this.depth; i2++) {
diff --git a/net/minecraft/world/level/dimension/end/EndDragonFight.java b/net/minecraft/world/level/dimension/end/EndDragonFight.java
index 8ccd40c70e150bd5a8d89818c229258642f2349e..18a567b676f0bfcd725f19c5ed9e3fdbc8e65573 100644
index fcb0fb9ca663ec40e1541d099bc3d710963f6c9d..d2e49f8490bff739a3726e73a303b2c24c47617f 100644
--- a/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/net/minecraft/world/level/dimension/end/EndDragonFight.java
@@ -273,8 +273,68 @@ public class EndDragonFight {
@@ -274,8 +274,68 @@ public class EndDragonFight {
return false;
}
@@ -90,7 +90,7 @@ index 8ccd40c70e150bd5a8d89818c229258642f2349e..18a567b676f0bfcd725f19c5ed9e3fdb
ChunkPos chunkPos = new ChunkPos(this.origin);
for (int i = -8 + chunkPos.x; i <= 8 + chunkPos.x; i++) {
@@ -572,6 +632,11 @@ public class EndDragonFight {
@@ -573,6 +633,11 @@ public class EndDragonFight {
}
public boolean respawnDragon(List<EndCrystal> crystals) { // CraftBukkit - return boolean

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Creative fly no clip
diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java
index a62edee768c30c99213baa6bd736d67ae52b558c..cfd9d63f55e73c1777055d13a802b29e151cc0d4 100644
index 85c5a8497ee45de232a87c3f152e7ca67c1821ee..47bdbf9c73f19ff85ae93f3e31e45d35fe8c0a92 100644
--- a/net/minecraft/world/entity/ExperienceOrb.java
+++ b/net/minecraft/world/entity/ExperienceOrb.java
@@ -202,7 +202,7 @@ public class ExperienceOrb extends Entity {
@@ -18,10 +18,10 @@ index a62edee768c30c99213baa6bd736d67ae52b558c..cfd9d63f55e73c1777055d13a802b29e
} else {
this.followingPlayer = null;
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 8ec6f52f58bcc985fdc758a692798a35d6c86378..61baebc707cb6afcaf8c7f56fd906813d309a2cf 100644
index e4c7262ded690e56ba2eef71bb7d46f9cd99b8b7..7b0fdecf7ca4a5b6dd910369d6546a909926dff2 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -287,8 +287,8 @@ public abstract class Player extends LivingEntity {
@@ -247,8 +247,8 @@ public abstract class Player extends Avatar implements ContainerUser {
@Override
public void tick() {
@@ -32,7 +32,7 @@ index 8ec6f52f58bcc985fdc758a692798a35d6c86378..61baebc707cb6afcaf8c7f56fd906813
this.setOnGround(false);
}
@@ -481,7 +481,7 @@ public abstract class Player extends LivingEntity {
@@ -375,7 +375,7 @@ public abstract class Player extends Avatar implements ContainerUser {
if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.SWIMMING)) {
Pose desiredPose = this.getDesiredPose();
Pose pose;
@@ -41,16 +41,16 @@ index 8ec6f52f58bcc985fdc758a692798a35d6c86378..61baebc707cb6afcaf8c7f56fd906813
pose = desiredPose;
} else if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING)) {
pose = Pose.CROUCHING;
@@ -624,7 +624,7 @@ public abstract class Player extends LivingEntity {
}
this.bob = this.bob + (f - this.bob) * 0.4F;
@@ -507,7 +507,7 @@ public abstract class Player extends Avatar implements ContainerUser {
this.updateSwingTime();
this.yHeadRot = this.getYRot();
this.setSpeed((float)this.getAttributeValue(Attributes.MOVEMENT_SPEED));
- if (this.getHealth() > 0.0F && !this.isSpectator()) {
+ if (this.getHealth() > 0.0F && !this.isCreativeFlyOrSpectator()) { // Leaves - creative no clip
AABB aabb;
if (this.isPassenger() && !this.getVehicle().isRemoved()) {
aabb = this.getBoundingBox().minmax(this.getVehicle().getBoundingBox()).inflate(1.0, 0.0, 1.0);
@@ -1949,9 +1949,29 @@ public abstract class Player extends LivingEntity {
@@ -1733,9 +1733,29 @@ public abstract class Player extends Avatar implements ContainerUser {
return this.gameMode() == GameType.SPECTATOR;
}
@@ -82,10 +82,10 @@ index 8ec6f52f58bcc985fdc758a692798a35d6c86378..61baebc707cb6afcaf8c7f56fd906813
@Override
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
index a46a50d1385897cc7fcf0d6976f0de7e8078d260..593e65ef3a768d4039047e42e666c8382a5d38eb 100644
index 58ec8a43265ebf50fdd71f2cbb7dedf4762bc5b4..c269fd74bb2157f5c5f38d9dd6e1a0a032c9f29c 100644
--- a/net/minecraft/world/item/BlockItem.java
+++ b/net/minecraft/world/item/BlockItem.java
@@ -185,8 +185,9 @@ public class BlockItem extends Item {
@@ -184,8 +184,9 @@ public class BlockItem extends Item {
protected boolean canPlace(BlockPlaceContext context, BlockState state) {
Player player = context.getPlayer();
// CraftBukkit start
@@ -110,20 +110,20 @@ index 1f0e7c391d02b18e2c89700025713ec3d759f2ea..300ee12ca9584e53e9d72e3ebfd039be
org.bukkit.event.block.BlockCanBuildEvent event = new org.bukkit.event.block.BlockCanBuildEvent(org.bukkit.craftbukkit.block.CraftBlock.at(context.getLevel(), clickedPos), player, org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(blockState), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - Expose hand in BlockCanBuildEvent
diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
index a820ab9a2b6dc6b95d4de61aaaad4e79c521efe4..c1d1e28daa3b4d2a0bb359af08670f5d071e51ed 100644
index 68fcb64d13bbd61ad78137f101ab20264f402df8..7e8ca373a48f89d30d4efdfcfe2acdc903a1fed9 100644
--- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
@@ -152,7 +152,7 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl
@@ -153,7 +153,7 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl
List<Entity> entities = level.getEntities(null, progressDeltaAabb);
if (!entities.isEmpty()) {
for (Entity entity : entities) {
- if (entity.getPistonPushReaction() != PushReaction.IGNORE) {
+ if (entity.getPistonPushReaction() != PushReaction.IGNORE && !(entity instanceof Player player && player.isCreativeFlyOrSpectator())) { // Leaves - creative no clip
+ if (entity.getPistonPushReaction() != PushReaction.IGNORE && !(entity instanceof net.minecraft.world.entity.player.Player player && player.isCreativeFlyOrSpectator())) { // Leaves - creative no clip
entity.move(
MoverType.SHULKER_BOX,
new Vec3(
diff --git a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
index 0976aef81b950a062152094501372d00c20bb2b7..2841dd4896ee15d8d7ea1105d0f78b7fe41937fb 100644
index 0a76cf42aaaaf210a4e43ed9bd3d177f0003ba57..13bd8dc66ad1a6f882d13dc0cbc3f6ae710fab90 100644
--- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
+++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
@@ -151,7 +151,7 @@ public class PistonMovingBlockEntity extends BlockEntity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Shave snow layers
diff --git a/net/minecraft/world/item/ShovelItem.java b/net/minecraft/world/item/ShovelItem.java
index 887ac9f547ceaf76fd533ae47239a64c29a64b18..29b272ff2e4fe686a0e12b33f6edbe1a412b1590 100644
index ba0609f4d9166e66599f9d4430885ab03d53ef41..c50ea91c477a9b59222faab629cdf32049899519 100644
--- a/net/minecraft/world/item/ShovelItem.java
+++ b/net/minecraft/world/item/ShovelItem.java
@@ -43,6 +43,26 @@ public class ShovelItem extends Item {
@@ -26,7 +26,7 @@ index 887ac9f547ceaf76fd533ae47239a64c29a64b18..29b272ff2e4fe686a0e12b33f6edbe1a
+ level.playSound(player, clickedPos, SoundEvents.SNOW_BREAK, SoundSource.BLOCKS, 1.0F, 1.0F);
+
+ if (player != null) {
+ tool.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand()));
+ tool.hurtAndBreak(1, player, context.getHand());
+ }
+
+ return InteractionResult.SUCCESS;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Elytra aeronautics no chunk load
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
index 019886669966c69936ae6591598c97a8afbfd3db..b6fb1f2ba8622d9d319210ea7cf0a984349444e6 100644
index 1993907c606b231b879a7279d3880876f5307b1c..85c957c547b8a90157308dccbcfb961caa0b9201 100644
--- a/net/minecraft/server/level/ChunkMap.java
+++ b/net/minecraft/server/level/ChunkMap.java
@@ -854,7 +854,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -862,7 +862,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
private boolean skipPlayer(ServerPlayer player) {
@@ -18,7 +18,7 @@ index 019886669966c69936ae6591598c97a8afbfd3db..b6fb1f2ba8622d9d319210ea7cf0a984
}
void updatePlayerStatus(ServerPlayer player, boolean track) {
@@ -888,6 +889,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -896,6 +897,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
public void move(ServerPlayer player) {
@@ -27,24 +27,24 @@ index 019886669966c69936ae6591598c97a8afbfd3db..b6fb1f2ba8622d9d319210ea7cf0a984
SectionPos lastSectionPos = player.getLastSectionPos();
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 400cb6f7fb05d4e69a7c5bfb960480eef13f15c5..d64292ebe3ed40655720ea112f7cbc2fb2108d9e 100644
index b4000881962db5fe9c6de38f406647d95a395ec3..b4edd659a77139c1771b0714eaa35b6810d96d78 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -839,6 +839,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
@@ -868,6 +868,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
);
profilerFiller.popPush("blockEntities");
+ if (org.leavesmc.leaves.LeavesConfig.modify.elytraAeronautics.enableNoChunkLoad) {
+ org.leavesmc.leaves.util.ElytraAeronauticsHelper.tick(this);
+ }
profilerFiller.pop();
this.tickBlockEntities();
profilerFiller.pop();
}
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 6d9e8cb2ffe24568854a3681b8fdce76f21612c9..cbd4b3a909eab280aebcb959d86abcc66e12d633 100644
index ea9e98313c25e7ce94b011f5bc74a4318145c6f6..8d3151a6cc4d3a53601d41abce9d61323ce86a8c 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -582,7 +582,7 @@ public class ServerGamePacketListenerImpl
@@ -591,7 +591,7 @@ public class ServerGamePacketListenerImpl
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
// Paper start - Prevent moving into unloaded chunks
@@ -53,7 +53,7 @@ index 6d9e8cb2ffe24568854a3681b8fdce76f21612c9..cbd4b3a909eab280aebcb959d86abcc6
!serverLevel.areChunksLoadedForMove(this.player.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(this.player.position()))) ||
!serverLevel.areChunksLoadedForMove(rootVehicle.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(rootVehicle.position())))
)) {
@@ -1597,6 +1597,7 @@ public class ServerGamePacketListenerImpl
@@ -1603,6 +1603,7 @@ public class ServerGamePacketListenerImpl
allowMovement = !this.hasNewCollision(serverLevel, this.player, boundingBox, newBox);
} // else: no collision at all detected, why do we care?
}
@@ -62,10 +62,10 @@ index 6d9e8cb2ffe24568854a3681b8fdce76f21612c9..cbd4b3a909eab280aebcb959d86abcc6
if (!allowMovement) {
io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.CLIPPED_INTO_BLOCK,
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index f8e0275ebac65edfca3e8bb5d53001becd9a963f..81cf649fd4690fe5061c88e99db3d01d7faf67bf 100644
index 0129274ab88a151600f4fdde92dae73bec352fb2..37f6e22d9f8f0fffede79b1d273d65a69f8d675c 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1118,7 +1118,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1127,7 +1127,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
return;
}
}
@@ -80,7 +80,7 @@ index f8e0275ebac65edfca3e8bb5d53001becd9a963f..81cf649fd4690fe5061c88e99db3d01d
ProfilerFiller profilerFiller = Profiler.get();
profilerFiller.push("move");
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7) {
@@ -2137,6 +2143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2193,6 +2199,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
this.yo = y;
this.zo = d1;
this.setPos(d, y, d1);
@@ -89,10 +89,10 @@ index f8e0275ebac65edfca3e8bb5d53001becd9a963f..81cf649fd4690fe5061c88e99db3d01d
}
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index fbf884201442c6e75b5ab4533517a10e78f02f94..841dc41e455da73ff1bfdb8feaf231ade29d1e41 100644
index 759c320fc331704efe5df10d3f1f33aa87262290..545e9c5f46dd4f8e016ed0a93f2049d1b687dd3c 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -3328,6 +3328,11 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -3368,6 +3368,11 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
this.fallFlyTicks++;
} else {
this.fallFlyTicks = 0;
@@ -105,10 +105,10 @@ index fbf884201442c6e75b5ab4533517a10e78f02f94..841dc41e455da73ff1bfdb8feaf231ad
if (this.isSleeping()) {
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 61baebc707cb6afcaf8c7f56fd906813d309a2cf..eca523fe027d3570eb549756d825678e17e74152 100644
index 7b0fdecf7ca4a5b6dd910369d6546a909926dff2..4e7e8b8f4004cab2cf5af0dafe81e72df78f7258 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -219,6 +219,7 @@ public abstract class Player extends LivingEntity {
@@ -181,6 +181,7 @@ public abstract class Player extends Avatar implements ContainerUser {
private int currentImpulseContextResetGraceTime = 0;
public boolean affectsSpawning = true; // Paper - Affects Spawning API
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
@@ -117,10 +117,10 @@ index 61baebc707cb6afcaf8c7f56fd906813d309a2cf..eca523fe027d3570eb549756d825678e
// CraftBukkit start
public boolean fauxSleeping;
diff --git a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
index d8dc196ef92e97f831cf97cd1536a46f81f9d5d1..92da11f86a95ff635277cbfcea73c48731080953 100644
index 145ed3c5f5823c7505767b6d7f4f4d16cc863948..e2662b4574366dd734f5e68db3bf5505ff4e4767 100644
--- a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
+++ b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
@@ -324,7 +324,7 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
@@ -325,7 +325,7 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
this.spawningEntity = input.read("SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); // Paper
}

View File

@@ -5,53 +5,53 @@ Subject: [PATCH] No block update command
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
index 5d4eb61af0b0f39a5d4c37f4a303fa24b3a2936d..48bb795216ca3fb301813080de403a048bbfa98c 100644
index 65e2edf39857b2e03c5a32dfb3b822b5cb4ce93c..1a680c491ae2ed764d3f24b465de72372b65f68d 100644
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -381,7 +381,7 @@ public class ServerPlayerGameMode {
@@ -401,7 +401,7 @@ public class ServerPlayerGameMode {
org.bukkit.block.BlockState state = bblock.getState();
this.level.captureDrops = new java.util.ArrayList<>();
// CraftBukkit end
- BlockState blockState1 = block.playerWillDestroy(this.level, pos, blockState, this.player);
+ BlockState blockState1 = org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate() ? blockState : block.playerWillDestroy(this.level, pos, blockState, this.player); // Leaves - no block update
+ BlockState blockState1 = org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate() ? blockState : block.playerWillDestroy(this.level, pos, blockState, this.player); // Leaves - no block update
boolean flag = this.level.removeBlock(pos, false);
if (flag) {
block.destroy(this.level, pos, blockState1);
if (SharedConstants.DEBUG_BLOCK_BREAK) {
LOGGER.info("server broke {} {} -> {}", pos, blockState1, this.level.getBlockState(pos));
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index ef8a072838558caab19e8a85f4b59cac570c2635..590252ca203124f0b720a73f174c92fbe49bc685 100644
index feafaaeca7ffa6fda5af9897c448b61ee1760290..48eca978dc58c3c2045c5746aac5d7f5b732ff89 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -1089,6 +1089,11 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -1043,6 +1043,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@Override
public boolean setBlock(BlockPos pos, BlockState state, int flags, int recursionLeft) {
+ // Leaves start - no block update
+ if (org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ if (org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ flags = flags & ~1 | net.minecraft.world.level.block.Block.UPDATE_SKIP_ON_PLACE;
+ }
+ // Leaves end - no block update
// CraftBukkit start - tree generation
if (this.captureTreeGeneration) {
// Paper start - Protect Bedrock and End Portal/Frames from being destroyed
@@ -1190,6 +1195,11 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -1144,6 +1149,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
BlockState state = newState;
BlockState blockState = oldState;
BlockState blockState1 = currentState;
+ // Leaves start - no block update
+ if (org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ if (org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ flags = flags & ~1 | net.minecraft.world.level.block.Block.UPDATE_SKIP_ON_PLACE;
+ }
+ // Leaves end - no block update
if (blockState1 == state) {
if (blockState != blockState1) {
this.setBlocksDirty(pos, blockState, blockState1);
@@ -1208,7 +1218,12 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -1162,7 +1172,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
if ((flags & 16) == 0 && recursionLeft > 0) {
int i = flags & -34;
-
+ // Leaves start - no block update
+ if (org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ if (org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ this.updatePOIOnBlockStateChange(pos, blockState, blockState1);
+ return;
+ }
@@ -60,19 +60,19 @@ index ef8a072838558caab19e8a85f4b59cac570c2635..590252ca203124f0b720a73f174c92fb
blockState.updateIndirectNeighbourShapes(this, pos, i, recursionLeft - 1); // Don't call an event for the old block to limit event spam
boolean cancelledUpdates = false; // Paper - Fix block place logic
diff --git a/net/minecraft/world/level/block/piston/PistonBaseBlock.java b/net/minecraft/world/level/block/piston/PistonBaseBlock.java
index 16aa9f5996dc6eda95541fddb01e00e41305357a..31ab92e0769aa4ce09da5073ad9b734eeebac9c5 100644
index 114aa0f1ac9feefdb856bfc821489b864aba18f3..295357c842a4a4e9e18de68c570168b1cae9593a 100644
--- a/net/minecraft/world/level/block/piston/PistonBaseBlock.java
+++ b/net/minecraft/world/level/block/piston/PistonBaseBlock.java
@@ -105,6 +105,7 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -106,6 +106,7 @@ public class PistonBaseBlock extends DirectionalBlock {
}
private void checkIfExtend(Level level, BlockPos pos, BlockState state) {
+ if (org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate()) return; // Leaves - no block update
+ if (org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate()) return; // Leaves - no block update
Direction direction = state.getValue(FACING);
boolean neighborSignal = this.getNeighborSignal(level, pos, direction);
if (neighborSignal && !state.getValue(EXTENDED)) {
diff --git a/net/minecraft/world/level/redstone/NeighborUpdater.java b/net/minecraft/world/level/redstone/NeighborUpdater.java
index 263bf2b795057c2d5218bf9cfb684e526601aa77..da1e77ccd8805ac0cb0729720b4a1742da67d35c 100644
index 77ed7a6a4bea3dfc77d060c49f77f4e080da200b..be5d8ca78b4e293766add81ed6cacdae7cb02436 100644
--- a/net/minecraft/world/level/redstone/NeighborUpdater.java
+++ b/net/minecraft/world/level/redstone/NeighborUpdater.java
@@ -34,6 +34,11 @@ public interface NeighborUpdater {
@@ -80,18 +80,18 @@ index 263bf2b795057c2d5218bf9cfb684e526601aa77..da1e77ccd8805ac0cb0729720b4a1742
LevelAccessor level, Direction direction, BlockPos pos, BlockPos neighborPos, BlockState neighborState, int flags, int recursionLeft
) {
+ // Leaves start - no block update
+ if (org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ if (org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate()) {
+ flags = flags & ~1 | net.minecraft.world.level.block.Block.UPDATE_SKIP_ON_PLACE;
+ }
+ // Leaves end - no block update
BlockState blockState = level.getBlockState(pos);
if ((flags & 128) == 0 || !blockState.is(Blocks.REDSTONE_WIRE)) {
if ((flags & Block.UPDATE_SKIP_SHAPE_UPDATE_ON_WIRE) == 0 || !blockState.is(Blocks.REDSTONE_WIRE)) {
BlockState blockState1 = blockState.updateShape(level, level, pos, direction, neighborPos, neighborState, level.getRandom());
@@ -48,6 +53,7 @@ public interface NeighborUpdater {
static void executeUpdate(Level level, BlockState state, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston, BlockPos sourcePos) {
// Paper end - Add source block to BlockPhysicsEvent
+ if (org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate()) return; // Leaves - no block update
+ if (org.leavesmc.leaves.command.leaves.subcommands.BlockUpdateCommand.isNoBlockUpdate()) return; // Leaves - no block update
try {
// CraftBukkit start
org.bukkit.event.block.BlockPhysicsEvent event = new org.bukkit.event.block.BlockPhysicsEvent(org.bukkit.craftbukkit.block.CraftBlock.at(level, pos), org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), org.bukkit.craftbukkit.block.CraftBlock.at(level, sourcePos)); // Paper - Add source block to BlockPhysicsEvent

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Container open passthrough
diff --git a/net/minecraft/world/entity/decoration/ItemFrame.java b/net/minecraft/world/entity/decoration/ItemFrame.java
index 90fd3ca5ecd29befa9237222e9f86a8a79a011e4..cc26f2bfd8992207fffd74b89752275abe2be623 100644
index e6012d2cfe9b84782c8d5a0ba424eeda98086c09..431ebb89eb98c594829f7dbf622033e76240cbb9 100644
--- a/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -412,6 +412,20 @@ public class ItemFrame extends HangingEntity {
@@ -421,6 +421,16 @@ public class ItemFrame extends HangingEntity {
return InteractionResult.PASS;
}
} else {
@@ -16,13 +16,9 @@ index 90fd3ca5ecd29befa9237222e9f86a8a79a011e4..cc26f2bfd8992207fffd74b89752275a
+ if (org.leavesmc.leaves.LeavesConfig.modify.containerPassthrough && !player.isShiftKeyDown()) {
+ BlockPos pos1 = this.pos.relative(this.getDirection().getOpposite());
+ if (level().getBlockEntity(pos1) instanceof net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity) {
+ BlockState blockState = level().getBlockState(pos1);
+ net.minecraft.world.phys.BlockHitResult hitResult = new net.minecraft.world.phys.BlockHitResult(Vec3.atCenterOf(pos1), this.getDirection(), pos1, false);
+ if (flag1) {
+ return blockState.useItemOn(itemInHand, level(), player, hand, hitResult);
+ } else {
+ return blockState.useWithoutItem(level(), player, hitResult);
+ }
+ net.minecraft.server.level.ServerPlayer serverPlayer = (net.minecraft.server.level.ServerPlayer) player;
+ return serverPlayer.gameMode.useItemOn(serverPlayer, level(), itemInHand, hand, hitResult);
+ }
+ }
+ // Leaves end - itemFrameContainerPassthrough

View File

@@ -16,7 +16,7 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric)
Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html)
diff --git a/net/minecraft/util/BitStorage.java b/net/minecraft/util/BitStorage.java
index 02502d50f0255f5bbcc0ecb965abb48cc1a112da..674d714ba21fa0306283dae35ece466dcfcbdf6c 100644
index 02502d50f0255f5bbcc0ecb965abb48cc1a112da..45f61e66b1c24af63e3840fc54c3564f6bc317af 100644
--- a/net/minecraft/util/BitStorage.java
+++ b/net/minecraft/util/BitStorage.java
@@ -38,4 +38,6 @@ public interface BitStorage extends ca.spottedleaf.moonrise.patches.block_counti
@@ -24,10 +24,10 @@ index 02502d50f0255f5bbcc0ecb965abb48cc1a112da..674d714ba21fa0306283dae35ece466d
}
// Paper end - block counting
+
+ <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out); // Leaves - Gale - Lithium - faster chunk serialization
+ <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out, net.minecraft.world.level.chunk.PalettedContainer<T> resizeHandler); // Leaves - Gale - Lithium - faster chunk serialization
}
diff --git a/net/minecraft/util/SimpleBitStorage.java b/net/minecraft/util/SimpleBitStorage.java
index e6306a68c8652d4c5d22d5ecb1416f5f931f76ee..bbebf19cfc78d31319948943fa3fea5229f4aaf3 100644
index e6306a68c8652d4c5d22d5ecb1416f5f931f76ee..1c7986dbfd27c20e37824cab94ba61da3465ce9e 100644
--- a/net/minecraft/util/SimpleBitStorage.java
+++ b/net/minecraft/util/SimpleBitStorage.java
@@ -465,4 +465,45 @@ public class SimpleBitStorage implements BitStorage {
@@ -37,7 +37,7 @@ index e6306a68c8652d4c5d22d5ecb1416f5f931f76ee..bbebf19cfc78d31319948943fa3fea52
+
+ // Leaves start - Gale - Lithium - faster chunk serialization
+ @Override
+ public <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out) {
+ public <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out, net.minecraft.world.level.chunk.PalettedContainer<T> resizeHandler) {
+ if (this.size >= Short.MAX_VALUE) {
+ throw new IllegalStateException("Array too large");
+ }
@@ -58,7 +58,7 @@ index e6306a68c8652d4c5d22d5ecb1416f5f931f76ee..bbebf19cfc78d31319948943fa3fea52
+ int remappedId = mappings[value];
+
+ if (remappedId == 0) {
+ remappedId = dstPalette.idFor(srcPalette.valueFor(value)) + 1;
+ remappedId = dstPalette.idFor(srcPalette.valueFor(value), resizeHandler) + 1;
+ mappings[value] = (short) remappedId;
+ }
+
@@ -77,7 +77,7 @@ index e6306a68c8652d4c5d22d5ecb1416f5f931f76ee..bbebf19cfc78d31319948943fa3fea52
+
}
diff --git a/net/minecraft/util/ZeroBitStorage.java b/net/minecraft/util/ZeroBitStorage.java
index 09fd99c9cbd23b5f3c899bfb00c9b89651948ed8..d58539fe376f548930b49141c87ec5eb23b29af7 100644
index 09fd99c9cbd23b5f3c899bfb00c9b89651948ed8..bdbeff9c93b6775cf9d4a2db878dada767d172ee 100644
--- a/net/minecraft/util/ZeroBitStorage.java
+++ b/net/minecraft/util/ZeroBitStorage.java
@@ -80,4 +80,6 @@ public class ZeroBitStorage implements BitStorage {
@@ -85,24 +85,13 @@ index 09fd99c9cbd23b5f3c899bfb00c9b89651948ed8..d58539fe376f548930b49141c87ec5eb
}
// Paper end - block counting
+
+ @Override public <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out) {} // Leaves - Gale - Lithium - faster chunk serialization
}
diff --git a/net/minecraft/world/level/chunk/PaletteResize.java b/net/minecraft/world/level/chunk/PaletteResize.java
index c723606fa0be811e580ba47de8c9c575583cc930..2483210ca43221feaa5a2f1ced5c59731d5189fc 100644
--- a/net/minecraft/world/level/chunk/PaletteResize.java
+++ b/net/minecraft/world/level/chunk/PaletteResize.java
@@ -1,5 +1,5 @@
package net.minecraft.world.level.chunk;
-interface PaletteResize<T> {
+public interface PaletteResize<T> {
int onResize(int bits, T objectAdded);
+ @Override public <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out, net.minecraft.world.level.chunk.PalettedContainer<T> resizeHandler) {} // Leaves - Gale - Lithium - faster chunk serialization
}
diff --git a/net/minecraft/world/level/chunk/PalettedContainer.java b/net/minecraft/world/level/chunk/PalettedContainer.java
index a251ba67644cd02a0b00d7c8b0e2c64aa5e26291..a826aff16aee6692ca07d485ab3c79c1c4a38b52 100644
index 54d71bd666a946bdf6eece520e080c3f96003452..f16484ab8cd77d34b6e061282dd08b049ba915bc 100644
--- a/net/minecraft/world/level/chunk/PalettedContainer.java
+++ b/net/minecraft/world/level/chunk/PalettedContainer.java
@@ -24,6 +24,22 @@ import net.minecraft.util.ThreadingDetector;
@@ -23,6 +23,22 @@ import net.minecraft.util.ThreadingDetector;
import net.minecraft.util.ZeroBitStorage;
public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainerRO<T> {
@@ -123,10 +112,10 @@ index a251ba67644cd02a0b00d7c8b0e2c64aa5e26291..a826aff16aee6692ca07d485ab3c79c1
+ // Leaves end - Gale - Lithium - faster chunk serialization
+
private static final int MIN_PALETTE_BITS = 0;
private final PaletteResize<T> dummyPaletteResize = (bits, objectAdded) -> 0;
public final IdMap<T> registry;
@@ -343,6 +359,56 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
public synchronized PalettedContainerRO.PackedData<T> pack(IdMap<T> registry, PalettedContainer.Strategy strategy) { // Paper - synchronize
public volatile PalettedContainer.Data<T> data; // Paper - optimise collisions - public
private final Strategy<T> strategy;
@@ -338,6 +354,56 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
public synchronized PalettedContainerRO.PackedData<T> pack(Strategy<T> strategy) { // Paper - synchronize
this.acquire();
+ // Leaves start - Gale - Lithium - faster chunk serialization
@@ -147,17 +136,17 @@ index a251ba67644cd02a0b00d7c8b0e2c64aa5e26291..a826aff16aee6692ca07d485ab3c79c1
+ }
+
+ if (elements == null) {
+ org.leavesmc.leaves.lithium.common.world.chunk.LithiumHashPalette<T> compactedPalette = new org.leavesmc.leaves.lithium.common.world.chunk.LithiumHashPalette<>(registry, storage.getBits(), this.dummyPaletteResize);
+ short[] array = this.getOrCreate(strategy.size());
+ org.leavesmc.leaves.lithium.common.world.chunk.LithiumHashPalette<T> compactedPalette = new org.leavesmc.leaves.lithium.common.world.chunk.LithiumHashPalette<>(storage.getBits());
+ short[] array = this.getOrCreate(strategy.entryCount());
+
+ storage.compact(this.data.palette(), compactedPalette, array);
+ storage.compact(this.data.palette(), compactedPalette, array, this);
+
+ // If the palette didn't change during compaction, do a simple copy of the data array
+ if (hashPalette != null && hashPalette.getSize() == compactedPalette.getSize() && storage.getBits() == strategy.calculateBitsForSerialization(registry, hashPalette.getSize())) { // paletteSize can de-sync from palette - see https://github.com/CaffeineMC/lithium-fabric/issues/279
+ if (hashPalette != null && hashPalette.getSize() == compactedPalette.getSize() && storage.getBits() == strategy.getConfigurationForPaletteSize(hashPalette.getSize()).bitsInStorage()) { // paletteSize can de-sync from palette - see https://github.com/CaffeineMC/lithium-fabric/issues/279
+ data = this.asOptional(storage.getRaw().clone());
+ elements = hashPalette.getElements();
+ } else {
+ int bits = strategy.calculateBitsForSerialization(registry, compactedPalette.getSize());
+ int bits = strategy.getConfigurationForPaletteSize(compactedPalette.getSize()).bitsInStorage();
+ if (bits != 0) {
+ // Re-pack the integer array as the palette has changed size
+ SimpleBitStorage copy = new SimpleBitStorage(bits, array.length);
@@ -179,10 +168,10 @@ index a251ba67644cd02a0b00d7c8b0e2c64aa5e26291..a826aff16aee6692ca07d485ab3c79c1
+ return new PalettedContainerRO.PackedData<>(elements, data);
+ }
+ // Leaves end - Gale - Lithium - faster chunk serialization
PalettedContainerRO.PackedData var12;
PalettedContainerRO.PackedData var14;
try {
HashMapPalette<T> hashMapPalette = new HashMapPalette<>(registry, this.data.storage.getBits(), this.dummyPaletteResize);
@@ -404,13 +470,43 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
BitStorage bitStorage = this.data.storage;
@@ -410,13 +476,43 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
@Override
public void count(PalettedContainer.CountConsumer<T> countConsumer) {
@@ -231,4 +220,4 @@ index a251ba67644cd02a0b00d7c8b0e2c64aa5e26291..a826aff16aee6692ca07d485ab3c79c1
+ // Leaves end - Gale - Lithium - faster chunk serialization
}
record Configuration<T>(Palette.Factory factory, int bits) {
@FunctionalInterface

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize sun burn tick
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 81cf649fd4690fe5061c88e99db3d01d7faf67bf..2170020f55abc47d489838f98a7d67bcef2a33a0 100644
index 37f6e22d9f8f0fffede79b1d273d65a69f8d675c..39e31c547dcd60f48e607a9c98cfe03a38ae88b1 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -2118,9 +2118,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2174,9 +2174,20 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
@Deprecated
public float getLightLevelDependentMagicValue() {
@@ -33,7 +33,7 @@ index 81cf649fd4690fe5061c88e99db3d01d7faf67bf..2170020f55abc47d489838f98a7d67bc
}
public void absSnapTo(double x, double y, double z, float yRot, float xRot) {
@@ -2135,6 +2146,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2191,6 +2202,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
this.xRotO = this.getXRot();
this.setYHeadRot(yRot); // Paper - Update head rotation
}
@@ -42,10 +42,10 @@ index 81cf649fd4690fe5061c88e99db3d01d7faf67bf..2170020f55abc47d489838f98a7d67bc
public void absSnapTo(double x, double y, double z) {
double d = Mth.clamp(x, -3.0E7, 3.0E7);
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index 16cb4b7472b05c8aab195d5b865dd21ccd4adef8..3b73d52ea902bb1c8bd615c77444c57917f8b645 100644
index 0659e1b95055e85e3eefd206ccb01ee4a4949a5b..1cefdab82744600c6e5886646450d4c3fab03181 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -1546,17 +1546,39 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -1565,17 +1565,39 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
protected void playAttackSound() {
}
@@ -55,7 +55,7 @@ index 16cb4b7472b05c8aab195d5b865dd21ccd4adef8..3b73d52ea902bb1c8bd615c77444c579
+ // Leaves end - optimize sun burn tick
+
public boolean isSunBurnTick() {
if (this.level().isBrightOutside() && !this.level().isClientSide) {
if (this.level().isBrightOutside() && !this.level().isClientSide()) {
- float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue();
- BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
- boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow;

View File

@@ -7,23 +7,23 @@ Subject: [PATCH] Reduce lambda and Optional allocation in
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java b/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java
index 52cb2dcd714cf8c16f167466333eeb923e4ff183..8f2fbfb8d0a24d53697442addf940fa18ae4c69b 100644
index b1ee207527d1bf43bcc1c9d2c2a1ae2ad7993371..4bceb069ecf2e4137940ff16128ca6b5a17524fb 100644
--- a/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java
+++ b/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java
@@ -15,8 +15,20 @@ public class EntityBasedExplosionDamageCalculator extends ExplosionDamageCalcula
@Override
public Optional<Float> getBlockExplosionResistance(Explosion explosion, BlockGetter reader, BlockPos pos, BlockState state, FluidState fluid) {
- return super.getBlockExplosionResistance(explosion, reader, pos, state, fluid)
- .map(resistance -> this.source.getBlockExplosionResistance(explosion, reader, pos, state, fluid, resistance));
public Optional<Float> getBlockExplosionResistance(Explosion explosion, BlockGetter level, BlockPos pos, BlockState state, FluidState fluid) {
- return super.getBlockExplosionResistance(explosion, level, pos, state, fluid)
- .map(resistance -> this.source.getBlockExplosionResistance(explosion, level, pos, state, fluid, resistance));
+ if (!org.leavesmc.leaves.LeavesConfig.performance.remove.damageLambda) {
+ return super.getBlockExplosionResistance(explosion, reader, pos, state, fluid)
+ .map(max -> this.source.getBlockExplosionResistance(explosion, reader, pos, state, fluid, max));
+ return super.getBlockExplosionResistance(explosion, level, pos, state, fluid)
+ .map(max -> this.source.getBlockExplosionResistance(explosion, level, pos, state, fluid, max));
+ } else {
+ Optional<Float> optionalBlastResistance = super.getBlockExplosionResistance(explosion, reader, pos, state, fluid);
+ Optional<Float> optionalBlastResistance = super.getBlockExplosionResistance(explosion, level, pos, state, fluid);
+ if (optionalBlastResistance.isPresent()) {
+ float blastResistance = optionalBlastResistance.get();
+ float effectiveExplosionResistance = this.source.getBlockExplosionResistance(explosion, reader, pos, state, fluid, blastResistance);
+ float effectiveExplosionResistance = this.source.getBlockExplosionResistance(explosion, level, pos, state, fluid, blastResistance);
+ if (effectiveExplosionResistance != blastResistance) {
+ return Optional.of(effectiveExplosionResistance);
+ }

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Check frozen ticks before landing block
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 9c85639394826f7e683d67e53c1be8cdf9369a78..1bf4cda041189aa5ac67be4a1bda312620788388 100644
index 545e9c5f46dd4f8e016ed0a93f2049d1b687dd3c..1a7135f2fda41265c75448e8ca9fec1c64de8e97 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -537,10 +537,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -544,10 +544,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
}
protected void tryAddFrost() {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Skip entity move if movement is zero
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 2170020f55abc47d489838f98a7d67bcef2a33a0..6cf6e63d5c298b61d6cbb03c085530ca290ca57e 100644
index 39e31c547dcd60f48e607a9c98cfe03a38ae88b1..d2fafdbce9fe1db0451bb4ad819d8e075122530e 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -262,6 +262,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -263,6 +263,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
public float yRotO;
public float xRotO;
private AABB bb = INITIAL_AABB;
@@ -17,7 +17,7 @@ index 2170020f55abc47d489838f98a7d67bcef2a33a0..6cf6e63d5c298b61d6cbb03c085530ca
public boolean onGround;
public boolean horizontalCollision;
public boolean verticalCollision;
@@ -1094,6 +1095,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1099,6 +1100,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
// Paper end - detailed watchdog information
public void move(MoverType type, Vec3 movement) {
@@ -31,7 +31,7 @@ index 2170020f55abc47d489838f98a7d67bcef2a33a0..6cf6e63d5c298b61d6cbb03c085530ca
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
// Paper start - detailed watchdog information
ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread("Cannot move an entity off-main");
@@ -4421,6 +4429,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4466,6 +4474,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
}
public final void setBoundingBox(AABB bb) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Avoid anvil too expensive
diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java
index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..fa5fb93e2d3abd7171f4f7db9a74d42ec37b8ecd 100644
index 9a3887752aa4b39224c9bf6e6145e20fa6962439..a7f84100b350b097d33b571be65296fe76d13e82 100644
--- a/net/minecraft/world/inventory/AnvilMenu.java
+++ b/net/minecraft/world/inventory/AnvilMenu.java
@@ -266,7 +266,7 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -268,7 +268,7 @@ public class AnvilMenu extends ItemCombinerMenu {
this.onlyRenaming = true;
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bow infinity fix
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index eca523fe027d3570eb549756d825678e17e74152..799e30efa861b6094617dcec0ba23eda49d1519a 100644
index 4e7e8b8f4004cab2cf5af0dafe81e72df78f7258..d894741db7ce97f9809d835270148093f3293f30 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -2187,8 +2187,10 @@ public abstract class Player extends LivingEntity {
@@ -1968,8 +1968,10 @@ public abstract class Player extends Avatar implements ContainerUser {
}
}

View File

@@ -6,23 +6,23 @@ Subject: [PATCH] Replay Mod API
This patch is Powered by ReplayMod(https://github.com/ReplayMod)
diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java
index 3acfb2a78845dd8081dc3c01d653034232c76e60..efe3f1849e68e5bbe2cdb3793dafc8b58c3d8415 100644
index be42e2bd05a7468911698e53a33d87abf4a1080b..76350460f530d2edf3d58c30bff0291e7e498106 100644
--- a/net/minecraft/commands/CommandSourceStack.java
+++ b/net/minecraft/commands/CommandSourceStack.java
@@ -580,7 +580,7 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS
@Override
public Collection<String> getOnlinePlayerNames() {
- return this.entity instanceof ServerPlayer sourcePlayer && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().getName()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players
+ return this.entity instanceof ServerPlayer sourcePlayer && !(sourcePlayer instanceof org.leavesmc.leaves.replay.ServerPhotographer) && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().getName()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players // Leaves - only real player
- return this.entity instanceof ServerPlayer sourcePlayer && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().name()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players
+ return this.entity instanceof ServerPlayer sourcePlayer && !(sourcePlayer instanceof org.leavesmc.leaves.replay.ServerPhotographer) && !sourcePlayer.getBukkitEntity().hasPermission("paper.bypass-visibility.tab-completion") ? this.getServer().getPlayerList().getPlayers().stream().filter(serverPlayer -> sourcePlayer.getBukkitEntity().canSee(serverPlayer.getBukkitEntity())).map(serverPlayer -> serverPlayer.getGameProfile().name()).toList() : Lists.newArrayList(this.server.getPlayerNames()); // Paper - Make CommandSourceStack respect hidden players // Leaves - only real player
}
@Override
diff --git a/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java
index 514f8fbdeb776087608665c35de95294aadf5cf0..b75772897cabc3e7c59301d451685378fa55b6c3 100644
index d438e31a082b675d7eb0eead7067a0b92363a9f9..c08f34bc17bec9f73c377b45389a77558f53d2a2 100644
--- a/net/minecraft/commands/arguments/selector/EntitySelector.java
+++ b/net/minecraft/commands/arguments/selector/EntitySelector.java
@@ -128,11 +128,12 @@ public class EntitySelector {
@@ -129,11 +129,12 @@ public class EntitySelector {
return this.findPlayers(source);
} else if (this.playerName != null) {
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName);
@@ -36,7 +36,7 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b75772897cabc3e7c59301d451685378
if (entity.getType().isEnabled(source.enabledFeatures())) {
return List.of(entity);
}
@@ -146,7 +147,7 @@ public class EntitySelector {
@@ -147,7 +148,7 @@ public class EntitySelector {
AABB absoluteAabb = this.getAbsoluteAabb(vec3);
if (this.currentEntity) {
Predicate<Entity> predicate = this.getPredicate(vec3, absoluteAabb, null);
@@ -45,7 +45,7 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b75772897cabc3e7c59301d451685378
} else {
Predicate<Entity> predicate = this.getPredicate(vec3, absoluteAabb, source.enabledFeatures());
List<Entity> list = new ObjectArrayList<>();
@@ -157,6 +158,7 @@ public class EntitySelector {
@@ -158,6 +159,7 @@ public class EntitySelector {
this.addEntities(list, serverLevel1, absoluteAabb, predicate);
}
}
@@ -53,7 +53,7 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b75772897cabc3e7c59301d451685378
return this.sortAndLimit(vec3, list);
}
@@ -192,9 +194,11 @@ public class EntitySelector {
@@ -193,9 +195,11 @@ public class EntitySelector {
this.checkPermissions(source);
if (this.playerName != null) {
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName);
@@ -65,7 +65,7 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b75772897cabc3e7c59301d451685378
return playerByName == null ? List.of() : List.of(playerByName);
} else {
Vec3 vec3 = this.position.apply(source.getPosition());
@@ -206,11 +210,11 @@ public class EntitySelector {
@@ -207,11 +211,11 @@ public class EntitySelector {
int resultLimit = this.getResultLimit();
List<ServerPlayer> players;
if (this.isWorldLimited()) {
@@ -80,10 +80,10 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b75772897cabc3e7c59301d451685378
players.add(serverPlayer1);
if (players.size() >= resultLimit) {
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index cbc9f4fbad0a88bc324111a7ce80c2880ed1d3be..64b2a52ec6c4df487a9bb8ed540a429adbb6f10f 100644
index fa2ae16481541308d525d0ac70a8bbc2c66a8851..89067dceacb1f4fb6f7acacd4ec16874da049efe 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1639,7 +1639,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1720,7 +1720,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
private ServerStatus.Players buildPlayerStatus() {
@@ -92,7 +92,7 @@ index cbc9f4fbad0a88bc324111a7ce80c2880ed1d3be..64b2a52ec6c4df487a9bb8ed540a429a
int maxPlayers = this.getMaxPlayers();
if (this.hidesOnlinePlayers()) {
return new ServerStatus.Players(maxPlayers, players.size(), List.of());
@@ -1858,7 +1858,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1952,7 +1952,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@Override
public int getPlayerCount() {
@@ -100,8 +100,17 @@ index cbc9f4fbad0a88bc324111a7ce80c2880ed1d3be..64b2a52ec6c4df487a9bb8ed540a429a
+ return this.playerList.realPlayers.size(); // Leaves - only real player
}
@Override
@@ -2252,7 +2252,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public String[] getPlayerNames() {
@@ -2176,7 +2176,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} else {
int i = 0;
- for (ServerPlayer serverPlayer : this.getPlayerList().getPlayers()) {
+ for (ServerPlayer serverPlayer : this.getPlayerList().realPlayers) { // Leaves - only real player
// Paper start - Expand PlayerGameModeChangeEvent
org.bukkit.event.player.PlayerGameModeChangeEvent event = serverPlayer.setGameMode(gameMode, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, null);
if (event == null || event.isCancelled()) {
@@ -2344,7 +2344,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (Thread.currentThread() != this.serverThread) return; // Paper
// Paper start - we don't need to save everything, just advancements
// this.getPlayerList().saveAll();
@@ -110,13 +119,13 @@ index cbc9f4fbad0a88bc324111a7ce80c2880ed1d3be..64b2a52ec6c4df487a9bb8ed540a429a
player.getAdvancements().save();
}
// Paper end - we don't need to save everything, just advancements
@@ -2391,7 +2391,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (!playerList.isUsingWhitelist()) return; // Paper - whitelist not enabled
@@ -2482,7 +2482,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
PlayerList playerList = this.getPlayerList();
UserWhiteList whiteList = playerList.getWhiteList();
- for (ServerPlayer serverPlayer : Lists.newArrayList(playerList.getPlayers())) {
+ for (ServerPlayer serverPlayer : Lists.newArrayList(playerList.realPlayers)) { // Leaves - only real player
if (!whiteList.isWhiteListed(serverPlayer.getGameProfile()) && !this.getPlayerList().isOp(serverPlayer.getGameProfile())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
if (!whiteList.isWhiteListed(serverPlayer.nameAndId()) && !this.getPlayerList().isOp(serverPlayer.nameAndId())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
serverPlayer.connection.disconnect(net.kyori.adventure.text.Component.text(org.spigotmc.SpigotConfig.whitelistMessage), org.bukkit.event.player.PlayerKickEvent.Cause.WHITELIST); // Paper - use configurable message & kick event cause
}
diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java
@@ -133,7 +142,7 @@ index a14401edec04964e6c596c16ba58643b835ef9c1..924829d46f789752aab52c0a51f4d092
}
// Leaves end - bot can't get advancement
diff --git a/net/minecraft/server/ServerScoreboard.java b/net/minecraft/server/ServerScoreboard.java
index 5c9f2a8476ff260ec7f0843f7c956c71e9b0d34d..22d67e72e0bf2dbe8c7a936260bb3577c2cfa10b 100644
index 07294b9cfa788313da7433946312939d93956021..292bd07552606fbc25af7fd590fcae40614c38fa 100644
--- a/net/minecraft/server/ServerScoreboard.java
+++ b/net/minecraft/server/ServerScoreboard.java
@@ -244,7 +244,7 @@ public class ServerScoreboard extends Scoreboard {
@@ -154,21 +163,8 @@ index 5c9f2a8476ff260ec7f0843f7c956c71e9b0d34d..22d67e72e0bf2dbe8c7a936260bb3577
if (serverPlayer.getBukkitEntity().getScoreboard().getHandle() != this) continue; // CraftBukkit - Only players on this board
for (Packet<?> packet : stopTrackingPackets) {
serverPlayer.connection.send(packet);
diff --git a/net/minecraft/server/commands/DefaultGameModeCommands.java b/net/minecraft/server/commands/DefaultGameModeCommands.java
index 84baf29ad8af6a8af0cd00ce3921b3c5b8b89451..17f5543b802d88811c3e373e579a6e8b4c9f263a 100644
--- a/net/minecraft/server/commands/DefaultGameModeCommands.java
+++ b/net/minecraft/server/commands/DefaultGameModeCommands.java
@@ -27,7 +27,7 @@ public class DefaultGameModeCommands {
server.setDefaultGameType(gamemode);
GameType forcedGameType = server.getForcedGameType();
if (forcedGameType != null) {
- for (ServerPlayer serverPlayer : server.getPlayerList().getPlayers()) {
+ for (ServerPlayer serverPlayer : server.getPlayerList().realPlayers) { // Leaves - only real players
// Paper start - Expand PlayerGameModeChangeEvent
org.bukkit.event.player.PlayerGameModeChangeEvent event = serverPlayer.setGameMode(gamemode, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, net.kyori.adventure.text.Component.empty());
if (event != null && event.isCancelled()) {
diff --git a/net/minecraft/server/commands/ListPlayersCommand.java b/net/minecraft/server/commands/ListPlayersCommand.java
index c6ae34f91b3629990294fc5e69237a1e600ef038..2109b0a2d4099e64c34cd1c45b83f72654d3b615 100644
index e7c778a7f292fd0749cbd5e6586ad1b93ac7f29e..024b56405bb58801b17a6adad7fec7a461d12a5c 100644
--- a/net/minecraft/server/commands/ListPlayersCommand.java
+++ b/net/minecraft/server/commands/ListPlayersCommand.java
@@ -33,7 +33,7 @@ public class ListPlayersCommand {
@@ -181,7 +177,7 @@ index c6ae34f91b3629990294fc5e69237a1e600ef038..2109b0a2d4099e64c34cd1c45b83f726
org.bukkit.entity.Player sender = (org.bukkit.entity.Player) source.getBukkitSender();
playersTemp = playersTemp.stream().filter((ep) -> sender.canSee(ep.getBukkitEntity())).collect(java.util.stream.Collectors.toList());
diff --git a/net/minecraft/server/commands/OpCommand.java b/net/minecraft/server/commands/OpCommand.java
index e6c7bbb023000b9de90c1256274ff5aba4a6478a..98f8804d58616592332e2a968282be6ad8903ea8 100644
index 065af7f615711d7830002cd8f3046fab706082c1..d78fbc78369aab0139b99a008300b799b1dc369f 100644
--- a/net/minecraft/server/commands/OpCommand.java
+++ b/net/minecraft/server/commands/OpCommand.java
@@ -25,7 +25,7 @@ public class OpCommand {
@@ -191,10 +187,10 @@ index e6c7bbb023000b9de90c1256274ff5aba4a6478a..98f8804d58616592332e2a968282be6a
- playerList.getPlayers()
+ playerList.realPlayers // Leaves - only real player
.stream()
.filter(serverPlayer -> !playerList.isOp(serverPlayer.getGameProfile()))
.map(serverPlayer -> serverPlayer.getGameProfile().getName()),
.filter(serverPlayer -> !playerList.isOp(serverPlayer.nameAndId()))
.map(serverPlayer -> serverPlayer.getGameProfile().name()),
diff --git a/net/minecraft/server/commands/ParticleCommand.java b/net/minecraft/server/commands/ParticleCommand.java
index 33d96239f4b72a5587dc70f9602847a870d6d6a5..a83ce2cd112fca02cf3545f8c38e5cafae2c7c0e 100644
index 51f76f7a711257e5ee432ee0b2ebe7b2e129cda0..802322cccaff58e4fcd754a8f73ac2967fbab298 100644
--- a/net/minecraft/server/commands/ParticleCommand.java
+++ b/net/minecraft/server/commands/ParticleCommand.java
@@ -36,7 +36,7 @@ public class ParticleCommand {
@@ -243,7 +239,7 @@ index 33d96239f4b72a5587dc70f9602847a870d6d6a5..a83ce2cd112fca02cf3545f8c38e5caf
)
.then(
diff --git a/net/minecraft/server/commands/TeamMsgCommand.java b/net/minecraft/server/commands/TeamMsgCommand.java
index 134d7b1a9d5a5a47ebf4aabff110dde914cd6fe1..894dd1d048904b8a775416ea6cb3112215c567bc 100644
index 0ae4d68dfe42004839a0c5ad457de592f6b4af8b..1d1e396e4b29f33669872fb39e3a7f1d474a49f7 100644
--- a/net/minecraft/server/commands/TeamMsgCommand.java
+++ b/net/minecraft/server/commands/TeamMsgCommand.java
@@ -40,7 +40,7 @@ public class TeamMsgCommand {
@@ -256,20 +252,20 @@ index 134d7b1a9d5a5a47ebf4aabff110dde914cd6fe1..894dd1d048904b8a775416ea6cb31122
.filter(player -> player == entityOrException || player.getTeam() == team)
.toList();
diff --git a/net/minecraft/server/commands/WhitelistCommand.java b/net/minecraft/server/commands/WhitelistCommand.java
index 763a51d9a0859296eb4ea52b6879d6c7703db673..25b4fcf79dbf3e227451b3321d8fd38bab55ffe9 100644
index 9f4715c1214d6848b67637622bd24fc8f6fa5f2a..d69333e308ea772515c440f89b0b39fbd458f85c 100644
--- a/net/minecraft/server/commands/WhitelistCommand.java
+++ b/net/minecraft/server/commands/WhitelistCommand.java
@@ -43,7 +43,7 @@ public class WhitelistCommand {
@@ -44,7 +44,7 @@ public class WhitelistCommand {
(commandContext, suggestionsBuilder) -> {
PlayerList playerList = commandContext.getSource().getServer().getPlayerList();
return SharedSuggestionProvider.suggest(
- playerList.getPlayers()
+ playerList.realPlayers // Leaves - only real player
.stream()
.filter(serverPlayer -> !playerList.getWhiteList().isWhiteListed(serverPlayer.getGameProfile()))
.map(serverPlayer -> serverPlayer.getGameProfile().getName()),
.map(Player::nameAndId)
.filter(nameAndId -> !playerList.getWhiteList().isWhiteListed(nameAndId))
diff --git a/net/minecraft/server/gui/PlayerListComponent.java b/net/minecraft/server/gui/PlayerListComponent.java
index f5ba0c9a4c3f9eaa38eeb689de915c25c7165433..24bbc32bc17802edbd9cc14310fe8141c0ad85b0 100644
index 5a8cd3e6b448a4472092690cf589bca10b142126..8f22d5faf89006153b1fff4ff0b622f8de9fb588 100644
--- a/net/minecraft/server/gui/PlayerListComponent.java
+++ b/net/minecraft/server/gui/PlayerListComponent.java
@@ -17,8 +17,8 @@ public class PlayerListComponent extends JList<String> {
@@ -277,17 +273,17 @@ index f5ba0c9a4c3f9eaa38eeb689de915c25c7165433..24bbc32bc17802edbd9cc14310fe8141
Vector<String> list = new Vector<>();
- for (int i = 0; i < this.server.getPlayerList().getPlayers().size(); i++) {
- list.add(this.server.getPlayerList().getPlayers().get(i).getGameProfile().getName());
- list.add(this.server.getPlayerList().getPlayers().get(i).getGameProfile().name());
+ for (int i = 0; i < this.server.getPlayerList().realPlayers.size(); i++) { // Leaves - only real players
+ list.add(this.server.getPlayerList().realPlayers.get(i).getGameProfile().getName()); // Leaves - only real players
+ list.add(this.server.getPlayerList().realPlayers.get(i).getGameProfile().name()); // Leaves - only real players
}
this.setListData(list);
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index d64292ebe3ed40655720ea112f7cbc2fb2108d9e..405ee6161e480ea0dc533527f1fb8381d1e9741f 100644
index b4edd659a77139c1771b0714eaa35b6810d96d78..ead3e1d538f138dc5370db49d8b4293aff376d46 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -2695,7 +2695,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2764,7 +2764,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
if (entity instanceof ServerPlayer serverPlayer) {
ServerLevel.this.players.add(serverPlayer);
// Leaves start - skip
@@ -296,7 +292,7 @@ index d64292ebe3ed40655720ea112f7cbc2fb2108d9e..405ee6161e480ea0dc533527f1fb8381
ServerLevel.this.realPlayers.add(serverPlayer);
}
// Leaves end - skip
@@ -2778,7 +2778,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2847,7 +2847,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
if (entity instanceof ServerPlayer serverPlayer) {
ServerLevel.this.players.remove(serverPlayer);
// Leaves start - skip
@@ -305,19 +301,32 @@ index d64292ebe3ed40655720ea112f7cbc2fb2108d9e..405ee6161e480ea0dc533527f1fb8381
ServerLevel.this.realPlayers.remove(serverPlayer);
}
// Leaves end - skip
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 97e133f3555057e36e3e7157f1411ba923ab2823..44b1d56fb3ce3827290ef4cf987aa2386d07eb9c 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -523,7 +523,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
// Paper start - Expand PlayerGameModeChangeEvent
this.loadGameTypes(input);
}
- private void loadGameTypes(ValueInput input) {
+ public void loadGameTypes(ValueInput input) { // Leaves - private -> public
if (this.server.getForcedGameType() != null && this.server.getForcedGameType() != readPlayerMode(input, "playerGameType")) {
if (new org.bukkit.event.player.PlayerGameModeChangeEvent(this.getBukkitEntity(), org.bukkit.GameMode.getByValue(this.server.getDefaultGameType().getId()), org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, null).callEvent()) {
this.gameMode.setGameModeForPlayer(this.server.getForcedGameType(), GameType.DEFAULT_MODE);
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e3506366c1412d 100644
index 7977a0cfe18c99c4c6ba8c5b56387b690ede554d..c8628c6d505a7599b0765decfcd037c8b3212054 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -130,6 +130,7 @@ public abstract class PlayerList {
@@ -126,6 +126,7 @@ public abstract class PlayerList {
private int simulationDistance;
private boolean allowCommandsForAllPlayers;
private static final boolean ALLOW_LOGOUTIVATOR = false;
private int sendAllPlayerInfoIn;
+ public final List<ServerPlayer> realPlayers = new java.util.concurrent.CopyOnWriteArrayList(); // Leaves - replay api
// CraftBukkit start
private org.bukkit.craftbukkit.CraftServer cserver;
@@ -148,6 +149,125 @@ public abstract class PlayerList {
@@ -149,6 +150,125 @@ public abstract class PlayerList {
abstract public void loadAndSaveFiles(); // Paper - fix converting txt to json file; moved from DedicatedPlayerList constructor
@@ -366,7 +375,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
+ this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot
+ this.playersByUUID.put(player.getUUID(), player);
+
+ player.supressTrackerForLogin = true;
+ player.suppressTrackerForLogin = true;
+ worldserver1.addNewPlayer(player);
+ this.server.getCustomBossEvents().onPlayerConnect(player);
+ org.bukkit.craftbukkit.entity.CraftPlayer bukkitPlayer = player.getBukkitEntity();
@@ -382,7 +391,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
+ org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName());
+ if (bot != null) {
+ this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false);
+ this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false);
+ }
+ this.server.getBotList().bots.forEach(bot1 -> {
+ bot1.sendPlayerInfo(player);
@@ -412,7 +421,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
+ }
+
+ player.sentListPacket = true;
+ player.supressTrackerForLogin = false;
+ player.suppressTrackerForLogin = false;
+ ((ServerLevel)player.level()).getChunkSource().chunkMap.addEntity(player);
+
+ this.sendLevelInfo(player, worldserver1);
@@ -443,7 +452,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
public void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie) {
player.isRealPlayer = true; // Paper
player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed
@@ -310,6 +430,7 @@ public abstract class PlayerList {
@@ -216,6 +336,7 @@ public abstract class PlayerList {
// player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(this.players)); // CraftBukkit - replaced with loop below
this.players.add(player);
@@ -451,7 +460,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot
this.playersByUUID.put(player.getUUID(), player);
// this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player))); // CraftBukkit - replaced with loop below
@@ -503,6 +624,7 @@ public abstract class PlayerList {
@@ -420,6 +541,7 @@ public abstract class PlayerList {
}
protected void save(ServerPlayer player) {
@@ -459,7 +468,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
if (!player.getBukkitEntity().isPersistent()) return; // CraftBukkit
player.lastSave = MinecraftServer.currentTick; // Paper - Incremental chunk and player saving
this.playerIo.save(player);
@@ -517,6 +639,43 @@ public abstract class PlayerList {
@@ -434,6 +556,43 @@ public abstract class PlayerList {
}
}
@@ -503,7 +512,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player) { // CraftBukkit - return string // Paper - return Component
// Paper start - Fix kick event leave message not being sent
return this.remove(player, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? player.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(player.getDisplayName())));
@@ -590,6 +749,7 @@ public abstract class PlayerList {
@@ -507,6 +666,7 @@ public abstract class PlayerList {
player.retireScheduler(); // Paper - Folia schedulers
player.getAdvancements().stopListening();
this.players.remove(player);
@@ -511,7 +520,7 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
this.server.getCustomBossEvents().onPlayerDisconnect(player);
UUID uuid = player.getUUID();
@@ -964,14 +1124,14 @@ public abstract class PlayerList {
@@ -835,14 +995,14 @@ public abstract class PlayerList {
}
public String[] getPlayerNamesArray() {
@@ -519,24 +528,24 @@ index 7a0d36b9c6a633919a116fc4d47e500b2c6cbc28..95cb24f44412e2aad5f15f8256e35063
+ String[] strings = new String[this.realPlayers.size() + this.server.getBotList().bots.size()]; // Leaves - fakeplayer support, and skip photographer
- for (int i = 0; i < this.players.size(); i++) {
- strings[i] = this.players.get(i).getGameProfile().getName();
- strings[i] = this.players.get(i).getGameProfile().name();
+ for (int i = 0; i < this.realPlayers.size(); i++) { // Leaves - only real players
+ strings[i] = this.realPlayers.get(i).getGameProfile().getName(); // Leaves - only real players
+ strings[i] = this.realPlayers.get(i).getGameProfile().name(); // Leaves - only real players
}
// Leaves start - fakeplayer support
- for (int i = this.players.size(); i < strings.length; ++i) {
- strings[i] = this.server.getBotList().bots.get(i - this.players.size()).getGameProfile().getName();
+ for (int i = this.realPlayers.size(); i < strings.length; ++i) { // Leaves - only real players
+ strings[i] = this.server.getBotList().bots.get(i - this.realPlayers.size()).getGameProfile().getName(); // Leaves - only real players
+ strings[i] = this.server.getBotList().bots.get(i - this.realPlayers.size()).getGameProfile().name(); // Leaves - only real players
}
// Leaves end - fakeplayer support
@@ -1030,7 +1190,7 @@ public abstract class PlayerList {
@@ -911,7 +1071,7 @@ public abstract class PlayerList {
// Paper start - whitelist verify event / login event
public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) {
- final boolean shouldKick = this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile);
+ final boolean shouldKick = this.realPlayers.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile); // Leaves - only real player
public LoginResult canBypassFullServerLogin(final NameAndId nameAndId, final LoginResult currentResult) {
- final boolean shouldKick = this.players.size() >= this.getMaxPlayers() && !this.canBypassPlayerLimit(nameAndId);
+ final boolean shouldKick = this.realPlayers.size() >= this.getMaxPlayers() && !this.canBypassPlayerLimit(nameAndId); // Leaves - only real player
final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent(
com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(profile),
new com.destroystokyo.paper.profile.CraftPlayerProfile(nameAndId),
io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message),

View File

@@ -26,10 +26,10 @@ index 7b9e2a1a208b46a69c16e6afd8b502259893574f..8ef3627217a8c495e4e31b70e61ad1b7
loadFromJson(resourceAsStream, output);
} catch (JsonParseException | IOException var7) {
diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java
index e673df664b06c654a7be0622874b9b27ad7ef20f..898bf4d1e3269135f9514cdfd923040b947eef33 100644
index 30b681bc234eac8dc44ce3bf6e228171f5a71a7a..e7a4a977cd1dcdbdeb163016ff30346bc3289f99 100644
--- a/net/minecraft/server/Main.java
+++ b/net/minecraft/server/Main.java
@@ -154,6 +154,8 @@ public class Main {
@@ -152,6 +152,8 @@ public class Main {
return;
}
@@ -39,13 +39,13 @@ index e673df664b06c654a7be0622874b9b27ad7ef20f..898bf4d1e3269135f9514cdfd923040b
String awtException = io.papermc.paper.util.ServerEnvironment.awtDependencyCheck();
if (awtException != null) {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 91babab6152bb12768399ef6f2ea6afcb5e644b7..bb6863ed3fdb7bcf73ddecc1a93f89d5f84b728e 100644
index 677ad1a39e76efc98fc3b953ad66b329184612e0..51400ef2db6e93bfa032108f72687cddfc60c88e 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -187,6 +187,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -280,6 +280,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
org.leavesmc.leaves.LeavesConfig.init((java.io.File) options.valueOf("leaves-settings")); // Leaves - Server Config
this.getBotList().loadBotInfo(); // Leaves - load resident bot info
this.getBotList().loadResumeBotInfo(); // Leaves - load resident bot info
+ org.leavesmc.leaves.util.ServerI18nUtil.init(); // Leaves I18n
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics // Leaves - down

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] RNG Fishing
diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java
index 8c139d572bd3c44b8e2b6205e28ab09f82c9abfe..a5df132c2d97c30ad0960197ea7ce8640ee9e863 100644
index 2c79332e148375c2f277df94b16ce7dd2422c004..a22590c8c48049733d751306a2daa5686cbcf082 100644
--- a/net/minecraft/world/entity/projectile/FishingHook.java
+++ b/net/minecraft/world/entity/projectile/FishingHook.java
@@ -529,7 +529,7 @@ public class FishingHook extends Projectile {
@@ -534,7 +534,7 @@ public class FishingHook extends Projectile {
.withLuck(this.luck + playerOwner.getLuck())
.create(LootContextParamSets.FISHING);
LootTable lootTable = this.level().getServer().reloadableRegistries().getLootTable(BuiltInLootTables.FISHING);

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Wool Hopper Counter
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet)
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 6dfdd4853d084f63285a7de3db49a245004c4fa5..3145b6ee853f720c5c201f5dd464645eb039100c 100644
index a1799e2646569bf9db4fcdd3a9758f486f96f56e..6781a1362f4318e37cb298c232bffde5d0fe7a67 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -205,8 +205,30 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -206,8 +206,30 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
flag |= validator.getAsBoolean(); // Paper - note: this is not a validator, it's what adds/sucks in items
}
@@ -40,7 +40,7 @@ index 6dfdd4853d084f63285a7de3db49a245004c4fa5..3145b6ee853f720c5c201f5dd464645e
setChanged(level, pos, state);
// Leaves start - pca
if (org.leavesmc.leaves.LeavesConfig.protocol.pca.enable) {
@@ -432,6 +454,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -433,6 +455,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
// Paper end - Perf: Optimize Hoppers
private static boolean ejectItems(Level level, BlockPos pos, HopperBlockEntity blockEntity) {
@@ -54,7 +54,7 @@ index 6dfdd4853d084f63285a7de3db49a245004c4fa5..3145b6ee853f720c5c201f5dd464645e
Container attachedContainer = getAttachedContainer(level, pos, blockEntity);
if (attachedContainer == null) {
return false;
@@ -498,6 +527,26 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -499,6 +528,26 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
}
}
@@ -81,7 +81,7 @@ index 6dfdd4853d084f63285a7de3db49a245004c4fa5..3145b6ee853f720c5c201f5dd464645e
private static int[] getSlots(Container container, Direction direction) {
if (container instanceof WorldlyContainer worldlyContainer) {
return worldlyContainer.getSlotsForFace(direction);
@@ -632,6 +681,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -633,6 +682,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
}
public static boolean addItem(Container container, ItemEntity item) {

View File

@@ -5,17 +5,26 @@ Subject: [PATCH] Spider jockeys drop gapples
diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java
index 743bc2986b962d4aaef00d2e457117f375ca65c7..7a982b5720278ad6870446bfc1cffb220d08279e 100644
index 37a60cf7b00adaadbca129659b3aea3d8f10c4e2..f1dab982211cf9e1018f98d238cea04cfd82e31b 100644
--- a/net/minecraft/world/entity/monster/Skeleton.java
+++ b/net/minecraft/world/entity/monster/Skeleton.java
@@ -140,4 +140,16 @@ public class Skeleton extends AbstractSkeleton {
this.spawnAtLocation(level, Items.SKELETON_SKULL);
}
@@ -130,4 +130,25 @@ public class Skeleton extends AbstractSkeleton {
SoundEvent getStepSound() {
return SoundEvents.SKELETON_STEP;
}
+
+ // Leaves start - spider jockeys drop gapples
+ @Override
+ protected void dropFromLootTable(ServerLevel level, DamageSource damageSource, boolean causedByPlayer) {
+ protected void dropCustomDeathLoot(net.minecraft.server.level.ServerLevel level, DamageSource damageSource, boolean recentlyHit) {
+ super.dropCustomDeathLoot(level, damageSource, recentlyHit);
+ if (damageSource.getEntity() instanceof Creeper creeper && creeper.isPowered() && !creeper.droppedSkulls) {
+ creeper.droppedSkulls = true;
+ this.spawnAtLocation(level, net.minecraft.world.item.Items.SKELETON_SKULL);
+ }
+ }
+
+ @Override
+ protected void dropFromLootTable(net.minecraft.server.level.ServerLevel level, DamageSource damageSource, boolean causedByPlayer) {
+ super.dropFromLootTable(level, damageSource, causedByPlayer);
+ if (org.leavesmc.leaves.LeavesConfig.modify.spiderJockeysDropGapples > 0.0D) {
+ if (this.getRootVehicle().getType() == EntityType.SPIDER && this.random.nextDouble() < org.leavesmc.leaves.LeavesConfig.modify.spiderJockeysDropGapples) {
@@ -26,7 +35,7 @@ index 743bc2986b962d4aaef00d2e457117f375ca65c7..7a982b5720278ad6870446bfc1cffb22
+ // Leaves end - spider jockeys drop gapples
}
diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java
index 60c4ac37bb491af13f9f9bf730b85bbe544cf81d..aaba82e591ac380314a1b7c59e4e04cca9864d31 100644
index a0008c2c5338d442040598ee79a667060a649695..3b578eb1a4bffb790b2baec7ba35d027158ea8d2 100644
--- a/net/minecraft/world/entity/monster/Spider.java
+++ b/net/minecraft/world/entity/monster/Spider.java
@@ -139,6 +139,18 @@ public class Spider extends Monster {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Force Void Trade
diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java
index 38572ecba568072b132b9e7fc12e6c0c38edd2e2..c3bec7a52f167a5169f96da709bcf9269a5bbae1 100644
index ea7364f3cc9f339578232ba1103008a9ed50234a..99ec0cac20dac363cd5a6b97bddf900266fc4498 100644
--- a/net/minecraft/world/entity/npc/AbstractVillager.java
+++ b/net/minecraft/world/entity/npc/AbstractVillager.java
@@ -43,6 +43,7 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -14,8 +14,8 @@ index 38572ecba568072b132b9e7fc12e6c0c38edd2e2..c3bec7a52f167a5169f96da709bcf926
private final SimpleContainer inventory = new SimpleContainer(8, (org.bukkit.craftbukkit.entity.CraftAbstractVillager) this.getBukkitEntity()); // CraftBukkit - add argument
+ protected boolean voidTrade = false; // Leaves - force void trade
public AbstractVillager(EntityType<? extends AbstractVillager> entityType, Level level) {
super(entityType, level);
public AbstractVillager(EntityType<? extends AbstractVillager> type, Level level) {
super(type, level);
@@ -144,7 +145,13 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@Override
public void processTrade(MerchantOffer offer, @Nullable io.papermc.paper.event.player.PlayerPurchaseEvent event) { // The MerchantRecipe passed in here is the one set by the PlayerPurchaseEvent
@@ -43,7 +43,7 @@ index 38572ecba568072b132b9e7fc12e6c0c38edd2e2..c3bec7a52f167a5169f96da709bcf926
@@ -173,7 +180,7 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@Override
public void notifyTradeUpdated(ItemStack stack) {
if (!this.level().isClientSide && this.ambientSoundTime > -this.getAmbientSoundInterval() + 20) {
if (!this.level().isClientSide() && this.ambientSoundTime > -this.getAmbientSoundInterval() + 20) {
- this.ambientSoundTime = -this.getAmbientSoundInterval();
+ if (!voidTrade) this.ambientSoundTime = -this.getAmbientSoundInterval(); // Leaves - force void trade
this.makeSound(this.getTradeUpdatedSound(!stack.isEmpty()));
@@ -74,10 +74,10 @@ index 38572ecba568072b132b9e7fc12e6c0c38edd2e2..c3bec7a52f167a5169f96da709bcf926
+ // Leaves end - force void trade
}
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index e1e2bdb35866a8f32a41f6efd24ad77cf916b2e9..27812825f74903715eef560e576136b52b8cf778 100644
index d10a407bef7da29a24582e48d8ee599c981384c5..9fb83137caeee95d35bce9265e1f86cef1adac0e 100644
--- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java
@@ -383,6 +383,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -384,6 +384,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
private void startTrading(Player player) {
@@ -85,7 +85,7 @@ index e1e2bdb35866a8f32a41f6efd24ad77cf916b2e9..27812825f74903715eef560e576136b5
this.updateSpecialPrices(player);
this.setTradingPlayer(player);
this.openTradingScreen(player, this.getDisplayName(), this.getVillagerData().level());
@@ -622,8 +623,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -623,8 +624,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override
protected void rewardTradeXp(MerchantOffer offer) {
int i = 3 + this.random.nextInt(4);
@@ -101,10 +101,10 @@ index e1e2bdb35866a8f32a41f6efd24ad77cf916b2e9..27812825f74903715eef560e576136b5
this.updateMerchantTimer = 40;
this.increaseProfessionLevelOnUpdate = true;
diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java
index c2573946dd1244eb5d1ef2be7823211064daa80d..567c24f7c87a23a11c54be1dad531f29d2b3a569 100644
index 4c7287c4a081b4e1f0049c8c9bdf6a42b51e8274..c87bf6a5cfaaa1a68cba6b734e67db49709c6c5b 100644
--- a/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -124,9 +124,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -124,9 +124,10 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
return InteractionResult.CONSUME;
}
@@ -119,7 +119,7 @@ index c2573946dd1244eb5d1ef2be7823211064daa80d..567c24f7c87a23a11c54be1dad531f29
return InteractionResult.SUCCESS;
} else {
diff --git a/net/minecraft/world/inventory/MerchantMenu.java b/net/minecraft/world/inventory/MerchantMenu.java
index 1bf2a015fa35981328c098f2fec363c84b85b2a7..8aa4079e7fb5fb81f33859d106a425d0183f13df 100644
index ade7732b638b30ad0ae50605793cbf75754aad0e..8ca85b07ad3a9902359704bf7071146d99153959 100644
--- a/net/minecraft/world/inventory/MerchantMenu.java
+++ b/net/minecraft/world/inventory/MerchantMenu.java
@@ -25,7 +25,7 @@ public class MerchantMenu extends AbstractContainerMenu {
@@ -132,7 +132,7 @@ index 1bf2a015fa35981328c098f2fec363c84b85b2a7..8aa4079e7fb5fb81f33859d106a425d0
private int merchantLevel;
private boolean showProgressBar;
diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java
index 64c99df8ff305fa28c75dc03fc5ef8c61634ad84..a7799f226d7b7d75c5626d6d3d8394f40af930c5 100644
index 6afeb92c2e00ca5b945b7c7de9257bd741d53c3d..f5b82f56a59dd150938e35dde0333e7ea91fd042 100644
--- a/net/minecraft/world/item/trading/MerchantOffer.java
+++ b/net/minecraft/world/item/trading/MerchantOffer.java
@@ -39,6 +39,7 @@ public class MerchantOffer {
@@ -142,7 +142,7 @@ index 64c99df8ff305fa28c75dc03fc5ef8c61634ad84..a7799f226d7b7d75c5626d6d3d8394f4
+ public int voidTradeUses; // Leaves - force void trade
// CraftBukkit start
private org.bukkit.craftbukkit.inventory.@org.jspecify.annotations.Nullable CraftMerchantRecipe bukkitHandle;
private @javax.annotation.Nullable org.bukkit.craftbukkit.inventory.CraftMerchantRecipe bukkitHandle;
@@ -78,6 +79,7 @@ public class MerchantOffer {
this.priceMultiplier = priceMultiplier;
this.xp = xp;
@@ -178,7 +178,7 @@ index 64c99df8ff305fa28c75dc03fc5ef8c61634ad84..a7799f226d7b7d75c5626d6d3d8394f4
public void setToOutOfStock() {
diff --git a/net/minecraft/world/level/block/EndGatewayBlock.java b/net/minecraft/world/level/block/EndGatewayBlock.java
index 68914268ca9350a6c1d794e011e1f9a8aecd609c..f22d502df5f444703a248fff50c864d2924c4549 100644
index 6161cd82dade8b4119ab0b8ba84451d592ce5858..cc90b8ebfe8c5d451710c202c5e87433e2a45c7b 100644
--- a/net/minecraft/world/level/block/EndGatewayBlock.java
+++ b/net/minecraft/world/level/block/EndGatewayBlock.java
@@ -109,6 +109,17 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal {

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] CCE update suppression
diff --git a/net/minecraft/world/level/block/ShulkerBoxBlock.java b/net/minecraft/world/level/block/ShulkerBoxBlock.java
index 787a4226789b0e6d35ef1a36601655b0a8666b6f..45e48e6d225a2741cd615345711072610d728474 100644
index ffca65d881ee6f4bde8e579d012ee5c1a11a0c2d..efb25d556f2192b1ee499c28d14aa7d11bcabef8 100644
--- a/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -185,7 +185,9 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
protected int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos pos) {
protected int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos, Direction direction) {
// Leaves start - update suppression crash fix
try {
- return AbstractContainerMenu.getRedstoneSignalFromBlockEntity(level.getBlockEntity(pos));

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Disable offline warn if use proxy
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index bb6863ed3fdb7bcf73ddecc1a93f89d5f84b728e..6a6209750854f5bad7f069cd6694d339bd9ce834 100644
index 70f0adbd01aa6aabc7b8ecc9e02dd93e2f479a69..144d1ff610d2743e554e6a4940bcb184e09c1520 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -247,7 +247,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -335,7 +335,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
// Paper end - Add Velocity IP Forwarding Support

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make Item tick vanilla
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
index af0467f60e5a873eeed7b741717c327272746a9a..fc8d3e56771998a04d5e0b35ad7638a44def8c77 100644
index 78edda120dd53be66f3e995dcf4e62799a837532..4bd9b16ad73114c457eb5987adeb18231ec6eea7 100644
--- a/net/minecraft/world/entity/item/ItemEntity.java
+++ b/net/minecraft/world/entity/item/ItemEntity.java
@@ -138,6 +138,9 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -129,6 +129,9 @@ public class ItemEntity extends Entity implements TraceableEntity {
// Paper start - EAR 2
@Override
public void inactiveTick() {
@@ -18,7 +18,7 @@ index af0467f60e5a873eeed7b741717c327272746a9a..fc8d3e56771998a04d5e0b35ad7638a4
super.inactiveTick();
if (this.pickupDelay > 0 && this.pickupDelay != 32767) {
this.pickupDelay--;
@@ -155,6 +158,8 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -146,6 +149,8 @@ public class ItemEntity extends Entity implements TraceableEntity {
// CraftBukkit end
this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Copper Bulb 1 gt delay
diff --git a/net/minecraft/world/level/block/CopperBulbBlock.java b/net/minecraft/world/level/block/CopperBulbBlock.java
index 25caeb117d9a49fa00f46ec895a35dee8242aacd..ce1d34f28f9318b741df074fccddfe91f16b57cf 100644
index 54511c27d8d85f1a9702d899f1f7c7dda201cdfa..1e8e7f7081b7f9d6a9d31e6cfd5900daf0a364db 100644
--- a/net/minecraft/world/level/block/CopperBulbBlock.java
+++ b/net/minecraft/world/level/block/CopperBulbBlock.java
@@ -32,14 +32,26 @@ public class CopperBulbBlock extends Block {
@@ -33,14 +33,26 @@ public class CopperBulbBlock extends Block {
@Override
protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) {
if (oldState.getBlock() != state.getBlock() && level instanceof ServerLevel serverLevel) {
@@ -37,7 +37,7 @@ index 25caeb117d9a49fa00f46ec895a35dee8242aacd..ce1d34f28f9318b741df074fccddfe91
}
}
@@ -56,6 +68,15 @@ public class CopperBulbBlock extends Block {
@@ -57,6 +69,15 @@ public class CopperBulbBlock extends Block {
}
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Crafter 1 gt delay
diff --git a/net/minecraft/world/level/block/CrafterBlock.java b/net/minecraft/world/level/block/CrafterBlock.java
index caf31218a1aff84367da126ee1dc46b8c8a1e5d1..a073188275456ee2eee776b149a14f68e4557f4a 100644
index 59cea0d226829267e9a5dff9f81789673bd3f062..9ff207acba5584480481e0df63ad3ca9bced0354 100644
--- a/net/minecraft/world/level/block/CrafterBlock.java
+++ b/net/minecraft/world/level/block/CrafterBlock.java
@@ -75,7 +75,7 @@ public class CrafterBlock extends BaseEntityBlock {
@@ -14,7 +14,7 @@ index caf31218a1aff84367da126ee1dc46b8c8a1e5d1..a073188275456ee2eee776b149a14f68
if (hasNeighborSignal && !triggeredValue) {
- level.scheduleTick(pos, this, 4);
+ level.scheduleTick(pos, this, !org.leavesmc.leaves.LeavesConfig.modify.oldMC.crafter1gt ? 4 : 1); // Leaves - crafter 1 gt delay
level.setBlock(pos, state.setValue(TRIGGERED, true), 2);
level.setBlock(pos, state.setValue(TRIGGERED, true), Block.UPDATE_CLIENTS);
this.setBlockEntityTriggered(blockEntity, true);
} else if (!hasNeighborSignal && triggeredValue) {
@@ -125,7 +125,7 @@ public class CrafterBlock extends BaseEntityBlock {

View File

@@ -21,10 +21,10 @@ index a814512fcfb85312474ae2c2c21443843bf57831..2b0349568f38321c893a8ffa16607350
public MoonriseRegionFileIO.RegionDataController.WriteData moonrise$startWrite(
final int chunkX, final int chunkZ, final CompoundTag compound
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java b/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java
index f5ed467c0880e4bcdf1b9ae773a5aac21c4381c3..349741f48bf21777b640a4698a0ae8da0b2487c5 100644
index aa3d5a6ea59ac77665f2cfaa56a7d383016d08d0..2f56cda82824053b3f5321cec2e93f9c6a7e84e8 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java
@@ -1260,7 +1260,7 @@ public final class MoonriseRegionFileIO {
@@ -1274,7 +1274,7 @@ public final class MoonriseRegionFileIO {
this.regionDataController.finishWrite(this.chunkX, this.chunkZ, writeData);
// Paper start - flush regionfiles on save
if (this.world.paperConfig().chunks.flushRegionsOnSave) {
@@ -33,7 +33,7 @@ index f5ed467c0880e4bcdf1b9ae773a5aac21c4381c3..349741f48bf21777b640a4698a0ae8da
if (regionFile != null) {
regionFile.flush();
} // else: evicted from cache, which should have called flush
@@ -1470,7 +1470,7 @@ public final class MoonriseRegionFileIO {
@@ -1490,7 +1490,7 @@ public final class MoonriseRegionFileIO {
public static interface IORunnable {
@@ -54,15 +54,15 @@ index 51c126735ace8fdde89ad97b5cab62f244212db0..a6573e327ace16b7ea320eb1440ffcbc
+ public void moonrise$write(final org.leavesmc.leaves.region.IRegionFile regionFile) throws IOException; // Leaves - more region format
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 1241b008d66bacd8640302a6dbf52a2e592b29b9..0172b4f0c3d5753a3a3d8ccfe591c09328216e48 100644
index 89067dceacb1f4fb6f7acacd4ec16874da049efe..d4409971d20e19266ff80b940b05edf07e8d52e3 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -944,10 +944,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -960,10 +960,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end
if (flush) {
for (ServerLevel serverLevel2 : this.getAllLevels()) {
- LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", serverLevel2.getChunkSource().chunkMap.getStorageName());
+ LOGGER.info("ThreadedChunkStorage ({}): All chunks are saved", serverLevel2.getChunkSource().chunkMap.getStorageName()); // Leaves - more region format
for (ServerLevel serverLevel : this.getAllLevels()) {
- LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", serverLevel.getChunkSource().chunkMap.getStorageName());
+ LOGGER.info("ThreadedChunkStorage ({}): All chunks are saved", serverLevel.getChunkSource().chunkMap.getStorageName()); // Leaves - more region format
}
- LOGGER.info("ThreadedAnvilChunkStorage: All dimensions are saved");
@@ -71,7 +71,7 @@ index 1241b008d66bacd8640302a6dbf52a2e592b29b9..0172b4f0c3d5753a3a3d8ccfe591c093
return flag;
diff --git a/net/minecraft/util/worldupdate/WorldUpgrader.java b/net/minecraft/util/worldupdate/WorldUpgrader.java
index 79d57ca8a7870a02e95562d89cbd4341d8282660..ddb9296b6caac97079943812bcf1ef58a7c04e76 100644
index a55ae044386baa52f2c4388b4ae2f58a58469099..61d986f8865ff2d169231c6f082ba6dd94a61489 100644
--- a/net/minecraft/util/worldupdate/WorldUpgrader.java
+++ b/net/minecraft/util/worldupdate/WorldUpgrader.java
@@ -75,7 +75,7 @@ public class WorldUpgrader implements AutoCloseable {
@@ -183,10 +183,10 @@ index 22f3aa1674664906e8ec45372d758d79017e3987..1d9b2a315d3c18df3c0dfc0e8daac18c
try (DataInputStream out = new DataInputStream(new java.io.BufferedInputStream(new java.util.zip.InflaterInputStream(Files.newInputStream(file))))) {
return net.minecraft.nbt.NbtIo.read((java.io.DataInput) out);
diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe1d4f268d 100644
index 8ea830f561f5b7d6ff6ca3c38adc7fe8e54e4cc7..1e192147ea50c4167a7bb876e3643ed770989ef3 100644
--- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
+++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
@@ -18,7 +18,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -19,7 +19,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); // Paper
public static final String ANVIL_EXTENSION = ".mca";
private static final int MAX_CACHE_SIZE = 256;
@@ -195,7 +195,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
private final RegionStorageInfo info;
private final Path folder;
private final boolean sync;
@@ -33,7 +33,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -34,7 +34,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@Nullable
public static ChunkPos getRegionFileCoordinates(Path file) {
String fileName = file.getFileName().toString();
@@ -204,7 +204,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
return null;
}
@@ -54,7 +54,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -55,7 +55,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
}
// Paper end
// Paper start - rewrite chunk system
@@ -213,7 +213,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
private static final int MAX_NON_EXISTING_CACHE = 1024 * 4;
private final it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet nonExistingRegionFiles = new it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet();
private static String getRegionFileName(final int chunkX, final int chunkZ) {
@@ -93,15 +93,15 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -94,15 +94,15 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
}
@Override
@@ -232,7 +232,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
if (ret != null) {
return ret;
}
@@ -114,18 +114,28 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -115,18 +115,28 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
this.regionCache.removeLast().close();
}
@@ -264,7 +264,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
this.regionCache.putAndMoveToFirst(key, ret);
@@ -144,7 +154,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -145,7 +155,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
}
final ChunkPos pos = new ChunkPos(chunkX, chunkZ);
@@ -273,7 +273,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
// note: not required to keep regionfile loaded after this call, as the write param takes a regionfile as input
// (and, the regionfile parameter is unused for writing until the write call)
@@ -178,7 +188,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -179,7 +189,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
) throws IOException {
final ChunkPos pos = new ChunkPos(chunkX, chunkZ);
if (writeData.result() == ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO.RegionDataController.WriteData.WriteResult.DELETE) {
@@ -282,7 +282,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
if (regionFile != null) {
regionFile.clear(pos);
} // else: didn't exist
@@ -193,7 +203,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -194,7 +204,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
public final ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO.RegionDataController.ReadData moonrise$readData(
final int chunkX, final int chunkZ
) throws IOException {
@@ -291,7 +291,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
final DataInputStream input = regionFile == null ? null : regionFile.getChunkDataInputStream(new ChunkPos(chunkX, chunkZ));
@@ -238,7 +248,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -239,7 +249,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
final ChunkPos pos = new ChunkPos(chunkX, chunkZ);
final ChunkPos headerChunkPos = SerializableChunkData.getChunkCoordinate(ret);
@@ -300,7 +300,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
if (regionFile.getRecalculateCount() != readData.recalculateCount()) {
return null;
@@ -262,7 +272,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -263,7 +273,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
}
// Paper end - rewrite chunk system
// Paper start - rewrite chunk system
@@ -309,7 +309,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
return this.getRegionFile(chunkcoordintpair, false);
}
// Paper end - rewrite chunk system
@@ -274,7 +284,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -275,7 +285,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
this.isChunkData = isChunkDataFolder(this.folder); // Paper - recalculate region file headers
}
@@ -318,7 +318,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
// Paper start - rewrite chunk system
if (existingOnly) {
return this.moonrise$getRegionFileIfExists(chunkPos.x, chunkPos.z);
@@ -282,7 +292,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -283,7 +293,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
synchronized (this) {
final long key = ChunkPos.asLong(chunkPos.x >> REGION_SHIFT, chunkPos.z >> REGION_SHIFT);
@@ -327,7 +327,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
if (ret != null) {
return ret;
}
@@ -291,13 +301,22 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -292,13 +302,22 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
this.regionCache.removeLast().close();
}
@@ -352,7 +352,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
this.regionCache.putAndMoveToFirst(key, ret);
@@ -311,7 +330,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -312,7 +331,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO PAPER - You may ask for help on Discord, but do not file an issue. These error messages can not be removed.");
}
@@ -361,7 +361,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
synchronized (regionfile) {
try (DataInputStream datainputstream = regionfile.getChunkDataInputStream(chunkCoordinate)) {
CompoundTag oversizedData = regionfile.getOversizedData(chunkCoordinate.x, chunkCoordinate.z);
@@ -346,7 +365,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -347,7 +366,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@Nullable
public CompoundTag read(ChunkPos chunkPos) throws IOException {
// CraftBukkit start - SPIGOT-5680: There's no good reason to preemptively create files on read, save that for writing
@@ -370,7 +370,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
if (regionFile == null) {
return null;
}
@@ -385,7 +404,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -386,7 +405,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
public void scanChunk(ChunkPos chunkPos, StreamTagVisitor visitor) throws IOException {
// CraftBukkit start - SPIGOT-5680: There's no good reason to preemptively create files on read, save that for writing
@@ -379,16 +379,16 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
if (regionFile == null) {
return;
}
@@ -399,7 +418,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
}
@@ -401,7 +420,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
public void write(ChunkPos chunkPos, @Nullable CompoundTag chunkData) throws IOException { // Paper - rewrite chunk system - public
if (!SharedConstants.DEBUG_DONT_SAVE_WORLD) {
- RegionFile regionFile = this.getRegionFile(chunkPos, chunkData == null); // CraftBukkit // Paper - rewrite chunk system
+ org.leavesmc.leaves.region.IRegionFile regionFile = this.getRegionFile(chunkPos, chunkData == null); // CraftBukkit // Paper - rewrite chunk system // Leaves - more region format
// Paper start - rewrite chunk system
if (regionFile == null) {
// if the RegionFile doesn't exist, no point in deleting from it
@@ -429,7 +448,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -432,7 +451,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
// Paper start - rewrite chunk system
synchronized (this) {
final ExceptionCollector<IOException> exceptionCollector = new ExceptionCollector<>();
@@ -397,7 +397,7 @@ index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..7b86212082f49bef0c087c8e080874fe
try {
regionFile.close();
} catch (final IOException ex) {
@@ -445,7 +464,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -448,7 +467,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
// Paper start - rewrite chunk system
synchronized (this) {
final ExceptionCollector<IOException> exceptionCollector = new ExceptionCollector<>();

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] No TNT place update
diff --git a/net/minecraft/world/level/block/TntBlock.java b/net/minecraft/world/level/block/TntBlock.java
index 93d6e05578622b057d8e973c71f880a17036a6b5..807b2d9bde6d9a365feff13adc4a8b546bec6d0c 100644
index 938dbdbbaa90181865ad9f19446c99cf301ab653..0862ef425b518e8d322f9fa7d9a3aacdd03f8237 100644
--- a/net/minecraft/world/level/block/TntBlock.java
+++ b/net/minecraft/world/level/block/TntBlock.java
@@ -47,7 +47,7 @@ public class TntBlock extends Block {
@Override
protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) {
protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) {
if (!oldState.is(state.getBlock())) {
- if (level.hasNeighborSignal(pos) && prime(level, pos, () -> org.bukkit.craftbukkit.event.CraftEventFactory.callTNTPrimeEvent(level, pos, org.bukkit.event.block.TNTPrimeEvent.PrimeCause.REDSTONE, null, null))) { // CraftBukkit - TNTPrimeEvent
+ if (level.hasNeighborSignal(pos) && !org.leavesmc.leaves.LeavesConfig.modify.noTNTPlaceUpdate && prime(level, pos, () -> org.bukkit.craftbukkit.event.CraftEventFactory.callTNTPrimeEvent(level, pos, org.bukkit.event.block.TNTPrimeEvent.PrimeCause.REDSTONE, null, null))) { // CraftBukkit - TNTPrimeEvent // Leaves - prevent update

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Servux Protocol
diff --git a/net/minecraft/server/ServerTickRateManager.java b/net/minecraft/server/ServerTickRateManager.java
index 40338efd1c0e56d869d03f1d0687e7ff0fcbf11a..c0504614b9239a69f2a6a49d964a97647469c1e4 100644
index 4257c47d33e3773fac766817138cc21c55d9ab76..8638f3f7aa853802a60ddeb681d089e0c6143693 100644
--- a/net/minecraft/server/ServerTickRateManager.java
+++ b/net/minecraft/server/ServerTickRateManager.java
@@ -128,4 +128,10 @@ public class ServerTickRateManager extends TickRateManager {
@@ -129,4 +129,10 @@ public class ServerTickRateManager extends TickRateManager {
player.connection.send(ClientboundTickingStatePacket.from(this));
player.connection.send(ClientboundTickingStepPacket.from(this));
}
@@ -20,14 +20,28 @@ index 40338efd1c0e56d869d03f1d0687e7ff0fcbf11a..c0504614b9239a69f2a6a49d964a9764
+ // Leaves end - servux
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 405ee6161e480ea0dc533527f1fb8381d1e9741f..dcb1f6975b1cb18f38e0cf8a43d551f07836b12f 100644
index ead3e1d538f138dc5370db49d8b4293aff376d46..dbebfec31e8bd9b9ea6bbf486875396fdcba93b6 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -2233,6 +2233,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -2285,9 +2285,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Paper end
}
this.lastSpawnChunkRadius = i;
+ org.leavesmc.leaves.protocol.servux.ServuxHudDataProtocol.refreshSpawnMetadata = true; // Leaves - servux
+
@Override
public LevelData.RespawnData getRespawnData() {
return this.getServer().getRespawnData();
+ // TODO: 1.21.9 removed spawn chunk, should we keep this?
+ // int i = this.getGameRules().getInt(GameRules.RULE_SPAWN_CHUNK_RADIUS) + 1;
+ // if (i > 1) {
+ // // Paper start - allow disabling gamerule limits
+ // for (ChunkPos chunkPos : io.papermc.paper.util.MCUtil.getSpiralOutChunks(pos, i - 2)) {
+ // this.getChunkSource().addTicketAtLevel(TicketType.START, chunkPos, ChunkLevel.ENTITY_TICKING_LEVEL);
+ // }
+ // // Paper end - allow disabling gamerule limits
+ // }
+ // this.lastSpawnChunkRadius = i;
+ // org.leavesmc.leaves.protocol.servux.ServuxHudDataProtocol.refreshSpawnMetadata = true; // Leaves - servux
}
public LongSet getForceLoadedChunks() {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Placing locked hopper no longer send NC updates
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index 1bca7c6ca429ae3d58b802991464f62568a4d430..f31a48530e965f01507c335f50d898ed72767e3c 100644
index 48eca978dc58c3c2045c5746aac5d7f5b732ff89..07ab2907bb9e4de5810889bec6d2b08f9abfec0c 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -1210,7 +1210,11 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -1164,7 +1164,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
}
if ((flags & 1) != 0) {
@@ -18,6 +18,6 @@ index 1bca7c6ca429ae3d58b802991464f62568a4d430..f31a48530e965f01507c335f50d898ed
+ this.updateNeighborsAt(pos, blockState.getBlock());
+ }
+ // Leaves end - Placing locked hopper doesn't send NC updates.
if (!this.isClientSide && state.hasAnalogOutputSignal()) {
if (!this.isClientSide() && state.hasAnalogOutputSignal()) {
this.updateNeighbourForOutputSignal(pos, newState.getBlock());
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Renewable deepslate
diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java
index 7320b416e8d660419018b0699f49ab6f45a3373b..553c6b298ec5929dba6acd859bd38bfbe293838b 100644
index 70cb8b2cf79833d8b5f9cee6d9c5495e5b706078..24e0484f0570d071c9ccdc67250a2b5ecd112dfd 100644
--- a/net/minecraft/world/level/block/LiquidBlock.java
+++ b/net/minecraft/world/level/block/LiquidBlock.java
@@ -190,7 +190,7 @@ public class LiquidBlock extends Block implements BucketPickup {
@@ -196,7 +196,7 @@ public class LiquidBlock extends Block implements BucketPickup {
for (Direction direction : POSSIBLE_FLOW_DIRECTIONS) {
BlockPos blockPos = pos.relative(direction.getOpposite());
if (level.getFluidState(blockPos).is(FluidTags.WATER)) {
@@ -18,12 +18,12 @@ index 7320b416e8d660419018b0699f49ab6f45a3373b..553c6b298ec5929dba6acd859bd38bfb
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(level, pos, block.defaultBlockState(), 3)) {
this.fizz(level, pos);
diff --git a/net/minecraft/world/level/material/LavaFluid.java b/net/minecraft/world/level/material/LavaFluid.java
index 033f252248b671e35135269dd2df6e7ca4585604..5bea04f4d70566e6791bef49e32c775cc5546d6c 100644
index 6f9e277f8ec94169e2ff8b70b63d5ef52729b069..371b864b85da51a0444cafc4b127ff8f036c7f1b 100644
--- a/net/minecraft/world/level/material/LavaFluid.java
+++ b/net/minecraft/world/level/material/LavaFluid.java
@@ -223,7 +223,7 @@ public abstract class LavaFluid extends FlowingFluid {
@@ -226,7 +226,7 @@ public abstract class LavaFluid extends FlowingFluid {
if (this.is(FluidTags.LAVA) && fluidState1.is(FluidTags.WATER)) {
if (blockState.getBlock() instanceof LiquidBlock) {
if (state.getBlock() instanceof LiquidBlock) {
// CraftBukkit start
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(level.getMinecraftWorld(), pos, Blocks.STONE.defaultBlockState(), 3)) {
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(level.getMinecraftWorld(), pos, org.leavesmc.leaves.LeavesConfig.modify.renewableDeepslate && level.getMinecraftWorld().dimension() == Level.OVERWORLD && pos.getY() < 0 ? Blocks.DEEPSLATE.defaultBlockState() : Blocks.STONE.defaultBlockState(), 3)) { // Leaves - renewable deepslate

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Renewable sponges
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
index a36f0181e1aa24538d6c868a8675da89427bdeae..b9c08ae9579ab5867adff4e0c5e7824b56203b3c 100644
index c907feb2ab6862d980f89f6341402131a8a966f2..daad38e533360501529f2f7a0bdfee213ac56ca6 100644
--- a/net/minecraft/world/entity/monster/Guardian.java
+++ b/net/minecraft/world/entity/monster/Guardian.java
@@ -452,6 +452,28 @@ public class Guardian extends Monster {
@@ -453,6 +453,28 @@ public class Guardian extends Monster {
}
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Vanilla hopper
This is a temporary solution designed to attempt to restore the vanilla behavior of the funnel while preserving optimizations as much as possible. It should ultimately be replaced by the optimization solution provided by lithium.
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 84092e0182dc2c20e57b4c14a52c3a9622318fd4..a6776df02ec71470696836cf89b942cc34c782ec 100644
index 6781a1362f4318e37cb298c232bffde5d0fe7a67..6b432c555d380098b07ba53039a9b148b2571de2 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -307,36 +307,58 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -308,36 +308,58 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
ItemStack movedItem = origItemStack;
final int originalItemCount = origItemStack.getCount();
final int movedItemCount = Math.min(level.spigotConfig.hopperAmount, originalItemCount);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Old hopper suckin behavior
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index deb67f1636d7fcb24946019d36fbdf97c022e764..09083d971ffc6e8af17cac9e71acbead2e666fc4 100644
index 6b432c555d380098b07ba53039a9b148b2571de2..a7ade5f683e43463f9ea42ad6843e9c80f2fa46c 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -629,7 +629,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -630,7 +630,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
return false;
} else {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix falling block's block location
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 6cf6e63d5c298b61d6cbb03c085530ca290ca57e..4952bfcb1414e9cc71587a40fefc715e87b73ae0 100644
index d2fafdbce9fe1db0451bb4ad819d8e075122530e..a18f2f0d1df0fecb6f8b22a252d7a6d715eb8439 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -5026,6 +5026,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5052,6 +5052,15 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
int floor = Mth.floor(x);
int floor1 = Mth.floor(y);
int floor2 = Mth.floor(z);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bytebuf API
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 95cb24f44412e2aad5f15f8256e3506366c1412d..d4eb10d3734930a43b8270cdc7eb78bf40907c94 100644
index c8628c6d505a7599b0765decfcd037c8b3212054..f376b03e267ae9c3acc9636b6ccee733497027d2 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -384,6 +384,13 @@ public abstract class PlayerList {
@@ -290,6 +290,13 @@ public abstract class PlayerList {
boolean _boolean = gameRules.getBoolean(GameRules.RULE_DO_IMMEDIATE_RESPAWN);
boolean _boolean1 = gameRules.getBoolean(GameRules.RULE_REDUCEDDEBUGINFO);
boolean _boolean2 = gameRules.getBoolean(GameRules.RULE_LIMITED_CRAFTING);

View File

@@ -22,7 +22,7 @@ index 75170c8d3be477a6ea2a1d62018a6ab630b0e54e..e5f348daf1ae9e604ae12928e5c8618c
this.setChanged();
}
diff --git a/net/minecraft/world/entity/vehicle/ContainerEntity.java b/net/minecraft/world/entity/vehicle/ContainerEntity.java
index 99f109e2653eff10c011f380694bd77a76381cee..3d7ea706747a6bcd8db8dd62139989669acb9c08 100644
index 358de981544b220bde770410c24e5f6b10520d91..d079513d0fcafc1f9d0b6384602d0d3f4093b9db 100644
--- a/net/minecraft/world/entity/vehicle/ContainerEntity.java
+++ b/net/minecraft/world/entity/vehicle/ContainerEntity.java
@@ -163,6 +163,11 @@ public interface ContainerEntity extends Container, MenuProvider {
@@ -38,7 +38,7 @@ index 99f109e2653eff10c011f380694bd77a76381cee..3d7ea706747a6bcd8db8dd6213998966
}
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index 47963968763cbee60016853d617f159c0761d282..c1ca84cf0dbb4fd091cfab517721c87e0f9074a0 100644
index e78baa9433b6f5cb32142fe583fe95831b173d5a..509d368f7fa9e6330da02615d7bf78debb932623 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -607,7 +607,7 @@ public abstract class AbstractContainerMenu {
@@ -91,10 +91,10 @@ index 47963968763cbee60016853d617f159c0761d282..c1ca84cf0dbb4fd091cfab517721c87e
if (isCheck) {
stack.shrink(Math.min(stack.getCount(), i1));
diff --git a/net/minecraft/world/inventory/GrindstoneMenu.java b/net/minecraft/world/inventory/GrindstoneMenu.java
index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..00a0ce28632a7f515a94087c2752e8787212f0d9 100644
index ad70a0f7debee27d9f3b2ff39cb0429b39485190..c8d3a8b9087460b20547dc49c1bf70bda87c218d 100644
--- a/net/minecraft/world/inventory/GrindstoneMenu.java
+++ b/net/minecraft/world/inventory/GrindstoneMenu.java
@@ -178,7 +178,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -179,7 +179,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
int i2 = i + i1 + max * 5 / 100;
int i3 = 1;
if (!inputItem.isDamageableItem()) {
@@ -103,20 +103,20 @@ index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..00a0ce28632a7f515a94087c2752e878
return ItemStack.EMPTY;
}
@@ -247,7 +247,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -248,7 +248,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
ItemStack item1 = this.repairSlots.getItem(0);
ItemStack item2 = this.repairSlots.getItem(1);
if (index == 2) {
if (slotIndex == 2) {
- if (!this.moveItemStackTo(item, 3, 39, true)) {
+ if (!this.moveItemStackTo(item, 3, 39, true, false, org.leavesmc.leaves.LeavesConfig.modify.oldMC.allowGrindstoneOverstacking)) { // Leaves - allowGrindstoneOverstacking: Disable stack check
return ItemStack.EMPTY;
}
diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index 4fdb3c36b39213f01f86ba281c7b62af99f5dcce..646d4c26870bb03f6d397b5e03ad97923d0928b2 100644
index 8a93c4b9571b3088dc92317544d209603880d3fa..005fd35dcae20d404922ef797cf22ef69ecd6c3a 100644
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -409,7 +409,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -410,7 +410,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
ItemStack itemStack = this.items.get(index);
boolean flag = !stack.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, stack);
this.items.set(index, stack);
@@ -130,10 +130,10 @@ index 4fdb3c36b39213f01f86ba281c7b62af99f5dcce..646d4c26870bb03f6d397b5e03ad9792
this.cookingTotalTime = getTotalCookTime(serverLevel, this, this.recipeType, this.cookSpeedMultiplier); // Paper - cook speed multiplier API
this.cookingTimer = 0;
diff --git a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
index 63d6a43dab067aa4c8fb67095c455130196eef9f..561acadcf81dc219d88e8ec8bdbd4f5f8fcbadc3 100644
index 701a12db0c342c9ff2c974e581b112182dec2ea6..1e6819928ffab524197003bd9469adb3976dce3a 100644
--- a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
@@ -145,6 +145,12 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
@@ -149,6 +149,12 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
@Override
public void setItem(int slot, ItemStack stack) {
this.getItems().set(slot, stack);
@@ -147,10 +147,10 @@ index 63d6a43dab067aa4c8fb67095c455130196eef9f..561acadcf81dc219d88e8ec8bdbd4f5f
this.setChanged();
}
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 4dca615d263f1b0dacf574cfaa00ea23abee2714..d9969741bb8efbf83df51692ebcd12e3d77c10f6 100644
index a7ade5f683e43463f9ea42ad6843e9c80f2fa46c..83a8dc51d0346fb5b28922e7b54d5ee58b315228 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -113,6 +113,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -114,6 +114,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
public void setItem(int index, ItemStack stack) {
this.unpackLootTable(null);
this.getItems().set(index, stack);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable MC-67
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 4952bfcb1414e9cc71587a40fefc715e87b73ae0..e09eb2612eb3943c9d108885bf189b04e050f459 100644
index a18f2f0d1df0fecb6f8b22a252d7a6d715eb8439..8bd5f957d61c429cf75e5a14296f735c33149e39 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -4200,6 +4200,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4245,6 +4245,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
}
public boolean canTeleport(Level fromLevel, Level toLevel) {

View File

@@ -27,10 +27,10 @@ index 05ec512839898f96d9769bb0d00f6ba11dda0c4b..27b225344c34e561d4913b3a6ca1c4a4
}
diff --git a/net/minecraft/world/level/dimension/end/EndDragonFight.java b/net/minecraft/world/level/dimension/end/EndDragonFight.java
index 37d74a98689166355e7ed6165f1611cdb8cd1db7..7d7656cf8fdec9073ad3a1d026cbeb1f2f297d6a 100644
index d2e49f8490bff739a3726e73a303b2c24c47617f..5a616d89522aacd1230e356197dec49abcfef872 100644
--- a/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/net/minecraft/world/level/dimension/end/EndDragonFight.java
@@ -576,12 +576,14 @@ public class EndDragonFight {
@@ -577,12 +577,14 @@ public class EndDragonFight {
}
public boolean tryRespawn() { // CraftBukkit - return boolean
@@ -45,7 +45,7 @@ index 37d74a98689166355e7ed6165f1611cdb8cd1db7..7d7656cf8fdec9073ad3a1d026cbeb1f
if (this.dragonKilled && this.respawnStage == null) {
BlockPos blockPos = this.portalLocation;
if (blockPos == null) {
@@ -596,6 +598,7 @@ public class EndDragonFight {
@@ -597,6 +599,7 @@ public class EndDragonFight {
blockPos = this.portalLocation;
}
@@ -53,7 +53,7 @@ index 37d74a98689166355e7ed6165f1611cdb8cd1db7..7d7656cf8fdec9073ad3a1d026cbeb1f
// Paper start - Perf: Do crystal-portal proximity check before entity lookup
if (placedEndCrystalPos != null && !level.paperConfig().misc.allowRemoteEnderDragonRespawning) {
// The end crystal must be 0 or 1 higher than the portal origin
@@ -611,7 +614,7 @@ public class EndDragonFight {
@@ -612,7 +615,7 @@ public class EndDragonFight {
}
}
// Paper end - Perf: Do crystal-portal proximity check before entity lookup

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Can disable LivingEntity aiStep alive check
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 1bf4cda041189aa5ac67be4a1bda312620788388..59a352427b8d6445f3da3c6033bae4826277ed60 100644
index 1a7135f2fda41265c75448e8ca9fec1c64de8e97..0f2a3002ec01451e92b3e4869373a910be6ccab2 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -3285,7 +3285,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -3325,7 +3325,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
}
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix FallingBlockEntity Duplicate
diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java
index 595dee03e3a7d98d703e48fb53d82d7f392a2b3d..0fd2c522a5fb038a8c002970af6feebd9dc9c436 100644
index 308af61031070d57556532645f73b41517d696e9..387f7a48499421858ea024bca01e372d3dbcdb57 100644
--- a/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -387,7 +387,7 @@ public class FallingBlockEntity extends Entity {
@@ -386,7 +386,7 @@ public class FallingBlockEntity extends Entity {
ResourceKey<Level> resourceKey1 = this.level().dimension();
boolean flag = (resourceKey1 == Level.END || resourceKey == Level.END) && resourceKey1 != resourceKey;
Entity entity = super.teleport(teleportTransition);

View File

@@ -25,7 +25,7 @@ index da10ca5ef12be1a834adda9243c082dadde24ec0..f682930f765d04f0a278b0648c2773ab
+ // Leaves end - behaviour 1.21.1-
}
diff --git a/net/minecraft/world/level/block/AbstractFurnaceBlock.java b/net/minecraft/world/level/block/AbstractFurnaceBlock.java
index d52eeff0d564a24bddb873750c81e3fe999f16f0..aa2597d825f93b0b0623ab7fae29e45de3f3ebcc 100644
index 9cbc52312c065cc1e7a01368f3c3bd6f374f4e16..271a71aab53e206798c5e3a7be385da4e4f01e12 100644
--- a/net/minecraft/world/level/block/AbstractFurnaceBlock.java
+++ b/net/minecraft/world/level/block/AbstractFurnaceBlock.java
@@ -51,6 +51,26 @@ public abstract class AbstractFurnaceBlock extends BaseEntityBlock {
@@ -56,7 +56,7 @@ index d52eeff0d564a24bddb873750c81e3fe999f16f0..aa2597d825f93b0b0623ab7fae29e45d
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/BarrelBlock.java b/net/minecraft/world/level/block/BarrelBlock.java
index f7820265f10b78674acd13e6204b9212fd27b038..700bd0f6a4f4fd6cd85b3e666fff1b3fd0a96b8e 100644
index 95a1e4c332becb284af0e71c55f02e8e6338fdce..0597ec660c85c2ae5c50588016b2c15e951e2d56 100644
--- a/net/minecraft/world/level/block/BarrelBlock.java
+++ b/net/minecraft/world/level/block/BarrelBlock.java
@@ -49,6 +49,14 @@ public class BarrelBlock extends BaseEntityBlock {
@@ -75,7 +75,7 @@ index f7820265f10b78674acd13e6204b9212fd27b038..700bd0f6a4f4fd6cd85b3e666fff1b3f
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/BasePressurePlateBlock.java b/net/minecraft/world/level/block/BasePressurePlateBlock.java
index 42ee3f32fe44c1f0680c994a69201f7bd7792673..19214c236bca4e454e3bbe7dc50e00b66398c119 100644
index a9c511e7debb8d47125d31291a0867791d9ab41b..aace49e366d2723c552d2efb082ab53b786fb5c5 100644
--- a/net/minecraft/world/level/block/BasePressurePlateBlock.java
+++ b/net/minecraft/world/level/block/BasePressurePlateBlock.java
@@ -125,6 +125,19 @@ public abstract class BasePressurePlateBlock extends Block {
@@ -99,7 +99,7 @@ index 42ee3f32fe44c1f0680c994a69201f7bd7792673..19214c236bca4e454e3bbe7dc50e00b6
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston && this.getSignalForState(state) > 0) {
diff --git a/net/minecraft/world/level/block/BaseRailBlock.java b/net/minecraft/world/level/block/BaseRailBlock.java
index 5f99e18244501ed2d85be77b71f48cc93058cdb7..6bf50d9c3921b15f40b4fba273abeb4c2e0f30b3 100644
index 37705ccc6b12113d22a1b7c2d8f8a05e4c812604..e6c732e29b0d3c7217e80e287483ce15fa29c043 100644
--- a/net/minecraft/world/level/block/BaseRailBlock.java
+++ b/net/minecraft/world/level/block/BaseRailBlock.java
@@ -121,6 +121,23 @@ public abstract class BaseRailBlock extends Block implements SimpleWaterloggedBl
@@ -127,10 +127,10 @@ index 5f99e18244501ed2d85be77b71f48cc93058cdb7..6bf50d9c3921b15f40b4fba273abeb4c
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston) {
diff --git a/net/minecraft/world/level/block/BrewingStandBlock.java b/net/minecraft/world/level/block/BrewingStandBlock.java
index f563f8ea63e67f808802baa4c6a700e803c045a0..0cc4479d9d3f6aea280c9f88997d141dc24917a9 100644
index 265736cb7b96dae60e9c6c7911d10f9a430a548c..687ea91d4e18adf97a5277340af976d07bb4d13a 100644
--- a/net/minecraft/world/level/block/BrewingStandBlock.java
+++ b/net/minecraft/world/level/block/BrewingStandBlock.java
@@ -78,6 +78,14 @@ public class BrewingStandBlock extends BaseEntityBlock {
@@ -79,6 +79,14 @@ public class BrewingStandBlock extends BaseEntityBlock {
level.addParticle(ParticleTypes.SMOKE, d, d1, d2, 0.0, 0.0, 0.0);
}
@@ -146,7 +146,7 @@ index f563f8ea63e67f808802baa4c6a700e803c045a0..0cc4479d9d3f6aea280c9f88997d141d
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/ButtonBlock.java b/net/minecraft/world/level/block/ButtonBlock.java
index 66c589bc633d32ebf36b1ab55ba6250ca2ddd6f6..f96d3c7b7ec15973aca3aabe056608fd5efb856b 100644
index a0d4f27ec05a18fcd460a01507a004897abb1e4f..924b11ed548bd069c21c411f4ec1ec0d5ee573e5 100644
--- a/net/minecraft/world/level/block/ButtonBlock.java
+++ b/net/minecraft/world/level/block/ButtonBlock.java
@@ -132,6 +132,19 @@ public class ButtonBlock extends FaceAttachedHorizontalDirectionalBlock {
@@ -170,7 +170,7 @@ index 66c589bc633d32ebf36b1ab55ba6250ca2ddd6f6..f96d3c7b7ec15973aca3aabe056608fd
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston && state.getValue(POWERED)) {
diff --git a/net/minecraft/world/level/block/CampfireBlock.java b/net/minecraft/world/level/block/CampfireBlock.java
index 028e2ad8bcb23b3f9f80a5ec551204bb2d7db1ae..c9e2becc0644de707e0bd251318813c50fc82be2 100644
index d6aaebacfb9b713dafb718d1e7ade8da8111ebb5..99fd2486c16c8d9d299862002cd82decc7442410 100644
--- a/net/minecraft/world/level/block/CampfireBlock.java
+++ b/net/minecraft/world/level/block/CampfireBlock.java
@@ -105,6 +105,20 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB
@@ -192,14 +192,14 @@ index 028e2ad8bcb23b3f9f80a5ec551204bb2d7db1ae..c9e2becc0644de707e0bd251318813c5
+ // Leaves end - behaviour 1.21.1-
+
@Override
protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) {
protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean pastEdges) {
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
diff --git a/net/minecraft/world/level/block/ChestBlock.java b/net/minecraft/world/level/block/ChestBlock.java
index c4937d1b482e2ec60961bda62ad6cc155f0ce8f7..818b1a5df0e9a0566210e4b3512ad856515e385f 100644
index 3cce87fd6e1d9d65d6b28bf44dd218541e815788..2b4260aef5bc56a9b2a5834f16c7d3ef2c8c2d2f 100644
--- a/net/minecraft/world/level/block/ChestBlock.java
+++ b/net/minecraft/world/level/block/ChestBlock.java
@@ -244,6 +244,14 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
return blockState.is(this) && blockState.getValue(TYPE) == ChestType.SINGLE ? blockState.getValue(FACING) : null;
@@ -276,6 +276,14 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
return this.chestCanConnectTo(blockState) && blockState.getValue(TYPE) == ChestType.SINGLE ? blockState.getValue(FACING) : null;
}
+ // Leaves start - behaviour 1.21.1-
@@ -214,10 +214,10 @@ index c4937d1b482e2ec60961bda62ad6cc155f0ce8f7..818b1a5df0e9a0566210e4b3512ad856
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/ChiseledBookShelfBlock.java b/net/minecraft/world/level/block/ChiseledBookShelfBlock.java
index eb315a50a83dc7230d7ad66f4daeb0d632679941..7bccf15310f6851875bfd77d4c66f4ce863b65e1 100644
index 77eee6728ecb0d5cb035a6a7969d5b3498a19b62..899508fbf9f59287d6ece9635e9cf071231d87b4 100644
--- a/net/minecraft/world/level/block/ChiseledBookShelfBlock.java
+++ b/net/minecraft/world/level/block/ChiseledBookShelfBlock.java
@@ -180,6 +180,27 @@ public class ChiseledBookShelfBlock extends BaseEntityBlock {
@@ -150,6 +150,27 @@ public class ChiseledBookShelfBlock extends BaseEntityBlock implements Selectabl
SLOT_OCCUPIED_PROPERTIES.forEach(property -> builder.add(property));
}
@@ -246,7 +246,7 @@ index eb315a50a83dc7230d7ad66f4daeb0d632679941..7bccf15310f6851875bfd77d4c66f4ce
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/CrafterBlock.java b/net/minecraft/world/level/block/CrafterBlock.java
index a073188275456ee2eee776b149a14f68e4557f4a..89e69eb87d43d35002a352bdb187f503033f6630 100644
index 9ff207acba5584480481e0df63ad3ca9bced0354..3e011483a74bd45269b5623e5f423495d0300120 100644
--- a/net/minecraft/world/level/block/CrafterBlock.java
+++ b/net/minecraft/world/level/block/CrafterBlock.java
@@ -129,6 +129,14 @@ public class CrafterBlock extends BaseEntityBlock {
@@ -265,7 +265,7 @@ index a073188275456ee2eee776b149a14f68e4557f4a..89e69eb87d43d35002a352bdb187f503
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/CreakingHeartBlock.java b/net/minecraft/world/level/block/CreakingHeartBlock.java
index 73885449a3316face50292756de2a3f298d3d111..333e18e4ead0bb6ef9681ce27ec156f79821af7c 100644
index 80fe93eedad9ff6cd5308c8039f988d2635cd574..6c1f1a00ad32bf579643b37b932f6aa3db50d77c 100644
--- a/net/minecraft/world/level/block/CreakingHeartBlock.java
+++ b/net/minecraft/world/level/block/CreakingHeartBlock.java
@@ -152,6 +152,16 @@ public class CreakingHeartBlock extends BaseEntityBlock {
@@ -286,7 +286,7 @@ index 73885449a3316face50292756de2a3f298d3d111..333e18e4ead0bb6ef9681ce27ec156f7
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/DecoratedPotBlock.java b/net/minecraft/world/level/block/DecoratedPotBlock.java
index f1570f1f4f7e43aacbcffef8bcf8ef27d46899da..6afd1c618112234ce4940105582a4399e20ab34c 100644
index ba27d15c674582607f4be6a99541475f790aeb1a..b2a0d53f7480ec7e152d77b239345b21919678ed 100644
--- a/net/minecraft/world/level/block/DecoratedPotBlock.java
+++ b/net/minecraft/world/level/block/DecoratedPotBlock.java
@@ -165,6 +165,14 @@ public class DecoratedPotBlock extends BaseEntityBlock implements SimpleWaterlog
@@ -305,7 +305,7 @@ index f1570f1f4f7e43aacbcffef8bcf8ef27d46899da..6afd1c618112234ce4940105582a4399
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/DiodeBlock.java b/net/minecraft/world/level/block/DiodeBlock.java
index 558751ade918a92a1173096ccfeacf238f4260d0..94d35e4812705771756a0ee1a9b0255be75e3770 100644
index 1158bdc1993a1c8f907070d6190c5a7d02d4bdb6..b975297c0475049935c38554a8c736abbf9882de 100644
--- a/net/minecraft/world/level/block/DiodeBlock.java
+++ b/net/minecraft/world/level/block/DiodeBlock.java
@@ -175,6 +175,16 @@ public abstract class DiodeBlock extends HorizontalDirectionalBlock {
@@ -326,7 +326,7 @@ index 558751ade918a92a1173096ccfeacf238f4260d0..94d35e4812705771756a0ee1a9b0255b
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston) {
diff --git a/net/minecraft/world/level/block/DispenserBlock.java b/net/minecraft/world/level/block/DispenserBlock.java
index 7ff6255fcd50344cd6ac7f8a67d61fd59c85e413..7a23d27ce76ae6b90d01c4dc7af416bb6b6516ea 100644
index 78375f2ec7e62db803961f4b9feb3e467db20477..58e65813461b76baa6ec01a691549650e65468a2 100644
--- a/net/minecraft/world/level/block/DispenserBlock.java
+++ b/net/minecraft/world/level/block/DispenserBlock.java
@@ -147,6 +147,14 @@ public class DispenserBlock extends BaseEntityBlock {
@@ -345,7 +345,7 @@ index 7ff6255fcd50344cd6ac7f8a67d61fd59c85e413..7a23d27ce76ae6b90d01c4dc7af416bb
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/HopperBlock.java b/net/minecraft/world/level/block/HopperBlock.java
index 46a27f60ba407dacdac190b5e292ab3f1db5a078..d3535a9dc462d92a306aea981d7799d8d975f59d 100644
index 3140269761935201882173e568004488147a4110..32b2f73d371b4dd53cdadfc94ff5e4d7bdaf7e37 100644
--- a/net/minecraft/world/level/block/HopperBlock.java
+++ b/net/minecraft/world/level/block/HopperBlock.java
@@ -125,6 +125,14 @@ public class HopperBlock extends BaseEntityBlock {
@@ -364,7 +364,7 @@ index 46a27f60ba407dacdac190b5e292ab3f1db5a078..d3535a9dc462d92a306aea981d7799d8
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/JukeboxBlock.java b/net/minecraft/world/level/block/JukeboxBlock.java
index 56cf6528f0cd9b8528490d7cee9a1f0e54108ef9..955854e5b3a18b8f1441145554a97c5454a65d12 100644
index c48ffdca3adb53005af18a743fc368a0e9e78f0a..5a095afc88f31cab4be59f2bd5962b67d9236b27 100644
--- a/net/minecraft/world/level/block/JukeboxBlock.java
+++ b/net/minecraft/world/level/block/JukeboxBlock.java
@@ -73,6 +73,19 @@ public class JukeboxBlock extends BaseEntityBlock {
@@ -388,10 +388,10 @@ index 56cf6528f0cd9b8528490d7cee9a1f0e54108ef9..955854e5b3a18b8f1441145554a97c54
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/LecternBlock.java b/net/minecraft/world/level/block/LecternBlock.java
index 5a9b601b7bf7e80b04ebd8f5c8b7d121031132c7..b714d3c7649384a8fdbe0a713e2193e241c80618 100644
index 8e18ff02e9773a76ec27e2f62b75a05ec0241dc0..c2615055354ef2539052096ef9ff042ac52460ba 100644
--- a/net/minecraft/world/level/block/LecternBlock.java
+++ b/net/minecraft/world/level/block/LecternBlock.java
@@ -197,6 +197,36 @@ public class LecternBlock extends BaseEntityBlock {
@@ -198,6 +198,36 @@ public class LecternBlock extends BaseEntityBlock {
changePowered(level, pos, state, false);
}
@@ -429,7 +429,7 @@ index 5a9b601b7bf7e80b04ebd8f5c8b7d121031132c7..b714d3c7649384a8fdbe0a713e2193e2
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (state.getValue(POWERED)) {
diff --git a/net/minecraft/world/level/block/LeverBlock.java b/net/minecraft/world/level/block/LeverBlock.java
index 76f2a29f37187344324d68941307d58e6343b6ae..3645ca9589aa1a74134180c9918a6f67bc64ce7a 100644
index 20207bcd2a9def5d94e994e2b7807d18df551015..358abfa6f4e4cfc648923caa4fa26e0fab9986bc 100644
--- a/net/minecraft/world/level/block/LeverBlock.java
+++ b/net/minecraft/world/level/block/LeverBlock.java
@@ -125,6 +125,19 @@ public class LeverBlock extends FaceAttachedHorizontalDirectionalBlock {
@@ -453,7 +453,7 @@ index 76f2a29f37187344324d68941307d58e6343b6ae..3645ca9589aa1a74134180c9918a6f67
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston && state.getValue(POWERED)) {
diff --git a/net/minecraft/world/level/block/LightningRodBlock.java b/net/minecraft/world/level/block/LightningRodBlock.java
index 13b92472d50a41446b86c62ec31919fe0a953374..d567a7c303bf1baa92fc24ff47870d56c70907af 100644
index 622f28a3661eec0487179aa9798f5771c0d957f7..4175957f56ddaaaa6e7fd7639f8173e39ce92d71 100644
--- a/net/minecraft/world/level/block/LightningRodBlock.java
+++ b/net/minecraft/world/level/block/LightningRodBlock.java
@@ -120,6 +120,18 @@ public class LightningRodBlock extends RodBlock implements SimpleWaterloggedBloc
@@ -476,7 +476,7 @@ index 13b92472d50a41446b86c62ec31919fe0a953374..d567a7c303bf1baa92fc24ff47870d56
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (state.getValue(POWERED)) {
diff --git a/net/minecraft/world/level/block/ObserverBlock.java b/net/minecraft/world/level/block/ObserverBlock.java
index bd2aa00ce8b78c16f6107064dd00bfbb072df0df..6db3a21bcc37ae79f82b19ee0a851f539d4a654d 100644
index 3c12d8e23f20b666b0005e597ba2e803c02d5d78..17c371f4c24e8a81705bdd322b1de5de4b8be8b7 100644
--- a/net/minecraft/world/level/block/ObserverBlock.java
+++ b/net/minecraft/world/level/block/ObserverBlock.java
@@ -127,6 +127,17 @@ public class ObserverBlock extends DirectionalBlock {
@@ -498,7 +498,7 @@ index bd2aa00ce8b78c16f6107064dd00bfbb072df0df..6db3a21bcc37ae79f82b19ee0a851f53
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (state.getValue(POWERED) && level.getBlockTicks().hasScheduledTick(pos, this)) {
diff --git a/net/minecraft/world/level/block/RedStoneWireBlock.java b/net/minecraft/world/level/block/RedStoneWireBlock.java
index 35dc47d5ba1a2659304ccc08010611438ccf04d8..04cc3c5a6ae0bea5f3a47ff7f9a7fe1f486294eb 100644
index 6f9ab1b41222832c29949bca1bdfb717ceecf5fa..6e6d10b0a9c2cf4516d29fb747f7e6e7f6063666 100644
--- a/net/minecraft/world/level/block/RedStoneWireBlock.java
+++ b/net/minecraft/world/level/block/RedStoneWireBlock.java
@@ -363,6 +363,27 @@ public class RedStoneWireBlock extends Block {
@@ -530,7 +530,7 @@ index 35dc47d5ba1a2659304ccc08010611438ccf04d8..04cc3c5a6ae0bea5f3a47ff7f9a7fe1f
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston) {
diff --git a/net/minecraft/world/level/block/RedstoneTorchBlock.java b/net/minecraft/world/level/block/RedstoneTorchBlock.java
index 33e2f2de19208b7af6551132887e310744b4b702..d36c3bdb59bf9b9467d1a9807ab789b4c180010d 100644
index 1ecf736ceeca45bb91dbe31a1dcb0262cbb9c1c7..52cc39babc8b884d01e6e50f04d113130b87eaa8 100644
--- a/net/minecraft/world/level/block/RedstoneTorchBlock.java
+++ b/net/minecraft/world/level/block/RedstoneTorchBlock.java
@@ -53,6 +53,15 @@ public class RedstoneTorchBlock extends BaseTorchBlock {
@@ -550,7 +550,7 @@ index 33e2f2de19208b7af6551132887e310744b4b702..d36c3bdb59bf9b9467d1a9807ab789b4
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston) {
diff --git a/net/minecraft/world/level/block/SculkSensorBlock.java b/net/minecraft/world/level/block/SculkSensorBlock.java
index f0101e88140f480c1a94f899744991f78c9e3756..fa9cb4c40a41eea7fd63a4513d0b0f39067de9ba 100644
index 957f019773d5c042086c1f7c3887ac85b97960ed..de3d5e6eb82c13667f21a3af95b1d2dca02bea94 100644
--- a/net/minecraft/world/level/block/SculkSensorBlock.java
+++ b/net/minecraft/world/level/block/SculkSensorBlock.java
@@ -129,6 +129,18 @@ public class SculkSensorBlock extends BaseEntityBlock implements SimpleWaterlogg
@@ -573,7 +573,7 @@ index f0101e88140f480c1a94f899744991f78c9e3756..fa9cb4c40a41eea7fd63a4513d0b0f39
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (getPhase(state) == SculkSensorPhase.ACTIVE) {
diff --git a/net/minecraft/world/level/block/SculkShriekerBlock.java b/net/minecraft/world/level/block/SculkShriekerBlock.java
index 757f8453e147875ab9f14d9726bb734ef27447c9..d0558d0e33f3d6e25af2dd71650d723e8997dae6 100644
index 465d13a748b5b6773bc0ee26ac3eda582c9f5bcd..484b97494ff45f9d1bc1ca80d01b74995dc220f9 100644
--- a/net/minecraft/world/level/block/SculkShriekerBlock.java
+++ b/net/minecraft/world/level/block/SculkShriekerBlock.java
@@ -68,6 +68,16 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo
@@ -594,7 +594,7 @@ index 757f8453e147875ab9f14d9726bb734ef27447c9..d0558d0e33f3d6e25af2dd71650d723e
protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) {
if (state.getValue(SHRIEKING)) {
diff --git a/net/minecraft/world/level/block/ShulkerBoxBlock.java b/net/minecraft/world/level/block/ShulkerBoxBlock.java
index 45e48e6d225a2741cd615345711072610d728474..80520260ccb52935f3c1564c2f161bb148ba7baa 100644
index c64685c9aef0ec3c95dc27d631318d2293c1a361..f69f9fa1ec89baafeef9e6a0f01a108c2f443259 100644
--- a/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -152,6 +152,19 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@@ -618,7 +618,7 @@ index 45e48e6d225a2741cd615345711072610d728474..80520260ccb52935f3c1564c2f161bb1
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
Containers.updateNeighboursAfterDestroy(state, level, pos);
diff --git a/net/minecraft/world/level/block/TripWireBlock.java b/net/minecraft/world/level/block/TripWireBlock.java
index c8f793d1cdeef7e3e0d5fceb45a4507d542e4b33..27f382f6c663b2954a6fb966ece05ba021fcd6b1 100644
index 9d005c3db8f0c784cdd7217e7b110daa703a9cf3..190d7cd818f768bd44fc1b4e62af2c9b3aacbe4d 100644
--- a/net/minecraft/world/level/block/TripWireBlock.java
+++ b/net/minecraft/world/level/block/TripWireBlock.java
@@ -108,6 +108,16 @@ public class TripWireBlock extends Block {
@@ -639,7 +639,7 @@ index c8f793d1cdeef7e3e0d5fceb45a4507d542e4b33..27f382f6c663b2954a6fb966ece05ba0
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating
diff --git a/net/minecraft/world/level/block/TripWireHookBlock.java b/net/minecraft/world/level/block/TripWireHookBlock.java
index a92462c76a648e6c175b8c2ef3e925aba81ba774..b32760f1096581059418f479b060019f7dccbd67 100644
index 219cbb38de6452fcc0a7b4db1cf648bbf2f1feac..dbefb8bbcc84ee910287d80ddc5d9abe46721f8f 100644
--- a/net/minecraft/world/level/block/TripWireHookBlock.java
+++ b/net/minecraft/world/level/block/TripWireHookBlock.java
@@ -245,6 +245,25 @@ public class TripWireHookBlock extends Block {
@@ -669,10 +669,10 @@ index a92462c76a648e6c175b8c2ef3e925aba81ba774..b32760f1096581059418f479b060019f
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
if (!movedByPiston) {
diff --git a/net/minecraft/world/level/block/entity/BlockEntityType.java b/net/minecraft/world/level/block/entity/BlockEntityType.java
index 386e6a48701b4c9256e33174123381a93d61e292..abade114c5b5051ce96b6489f08feb7e1cc774ee 100644
index 33e8479f20d1a07c518ba736322517c422cd2763..caaf5a1324e1a3d8447145b8deb55e6c8cf8c56a 100644
--- a/net/minecraft/world/level/block/entity/BlockEntityType.java
+++ b/net/minecraft/world/level/block/entity/BlockEntityType.java
@@ -263,7 +263,7 @@ public class BlockEntityType<T extends BlockEntity> {
@@ -303,7 +303,7 @@ public class BlockEntityType<T extends BlockEntity> {
}
public boolean isValid(BlockState state) {
@@ -682,7 +682,7 @@ index 386e6a48701b4c9256e33174123381a93d61e292..abade114c5b5051ce96b6489f08feb7e
@Deprecated
diff --git a/net/minecraft/world/level/block/piston/MovingPistonBlock.java b/net/minecraft/world/level/block/piston/MovingPistonBlock.java
index 05bbc2e59384702439548a988e128a85f1adbe82..af516d5b6bd31de2c6a388ec8001126e2a351cf3 100644
index 9f013b6a87a18f83188d6efec9f84d8895876f24..3594d97bd7e233bd418e0763db75330a27759c7a 100644
--- a/net/minecraft/world/level/block/piston/MovingPistonBlock.java
+++ b/net/minecraft/world/level/block/piston/MovingPistonBlock.java
@@ -67,6 +67,18 @@ public class MovingPistonBlock extends BaseEntityBlock {
@@ -705,7 +705,7 @@ index 05bbc2e59384702439548a988e128a85f1adbe82..af516d5b6bd31de2c6a388ec8001126e
public void destroy(LevelAccessor level, BlockPos pos, BlockState state) {
BlockPos blockPos = pos.relative(state.getValue(FACING).getOpposite());
diff --git a/net/minecraft/world/level/block/piston/PistonHeadBlock.java b/net/minecraft/world/level/block/piston/PistonHeadBlock.java
index 6c789e56f21f01252c21786cfeb48d88485b5636..e24a61a4e2dac0159d52f07c93ddf860f4bfb8f7 100644
index 8c35c7e54373f8be187a84bd4b4a9ce9d6341dff..894e0532cf4cdc0a92300b5ead2398da3a836d8e 100644
--- a/net/minecraft/world/level/block/piston/PistonHeadBlock.java
+++ b/net/minecraft/world/level/block/piston/PistonHeadBlock.java
@@ -78,6 +78,19 @@ public class PistonHeadBlock extends DirectionalBlock {
@@ -729,10 +729,10 @@ index 6c789e56f21f01252c21786cfeb48d88485b5636..e24a61a4e2dac0159d52f07c93ddf860
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
BlockPos blockPos = pos.relative(state.getValue(FACING).getOpposite());
diff --git a/net/minecraft/world/level/block/state/BlockBehaviour.java b/net/minecraft/world/level/block/state/BlockBehaviour.java
index be66f0f1cb1b0bcec8f9489a1fdd8777df1adb6b..67719dce9017a4c86a70b62fb660bddc636d5582 100644
index a38618c28819405f0fb35aa686d1f3f0e94e5da2..683a6a48593218b7504d6c99a0357278fb380665 100644
--- a/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -171,6 +171,15 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -170,6 +170,15 @@ public abstract class BlockBehaviour implements FeatureElement {
org.spigotmc.AsyncCatcher.catchOp("block onPlace"); // Spigot
}
@@ -748,7 +748,7 @@ index be66f0f1cb1b0bcec8f9489a1fdd8777df1adb6b..67719dce9017a4c86a70b62fb660bddc
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
}
@@ -867,6 +876,12 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -869,6 +878,12 @@ public abstract class BlockBehaviour implements FeatureElement {
// CraftBukkit end
}
@@ -762,22 +762,22 @@ index be66f0f1cb1b0bcec8f9489a1fdd8777df1adb6b..67719dce9017a4c86a70b62fb660bddc
this.getBlock().affectNeighborsAfterRemoval(this.asState(), level, pos, movedByPiston);
}
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index 0e22116fefcbdbf2049b7ec285b35fd03c723dc5..45386818312fbd99bbcb72d14ad9e54cd864a2a8 100644
index 7c5f827134e0fa81031660a78d4d404c21840cb6..479723aaee1cf9ea6be8606a63f721236b3e2424 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -396,20 +396,26 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -403,22 +403,28 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot
boolean flag = !blockState.is(block);
boolean flag1 = (flags & 64) != 0;
boolean flag2 = (flags & 256) == 0;
- if (flag && blockState.hasBlockEntity()) {
- if (!this.level.isClientSide && flag2) {
boolean flag1 = (flags & Block.UPDATE_MOVE_BY_PISTON) != 0;
boolean flag2 = (flags & Block.UPDATE_SKIP_BLOCK_ENTITY_SIDEEFFECTS) == 0;
- if (flag && blockState.hasBlockEntity() && !state.shouldChangedStateKeepBlockEntity(blockState)) {
- if (!this.level.isClientSide() && flag2) {
- BlockEntity blockEntity = this.level.getBlockEntity(pos);
- if (blockEntity != null) {
- blockEntity.preRemoveSideEffects(pos, blockState);
+ // Leaves start - behaviour 1.21.1-
+ if (!org.leavesmc.leaves.LeavesConfig.modify.oldMC.updater.oldBlockRemoveBehaviour) {
+ if (flag && blockState.hasBlockEntity()) {
+ if (!this.level.isClientSide && flag2) {
+ if (!this.level.isClientSide() && flag2) {
+ BlockEntity blockEntity = this.level.getBlockEntity(pos);
+ if (blockEntity != null) {
+ blockEntity.preRemoveSideEffects(pos, blockState);
@@ -790,9 +790,13 @@ index 0e22116fefcbdbf2049b7ec285b35fd03c723dc5..45386818312fbd99bbcb72d14ad9e54c
+ this.removeBlockEntity(pos);
+ }
- if ((flag || block instanceof BaseRailBlock) && this.level instanceof ServerLevel serverLevel && ((flags & 1) != 0 || flag1)) {
- if ((flag || block instanceof BaseRailBlock)
- && this.level instanceof ServerLevel serverLevel
- && ((flags & Block.UPDATE_NEIGHBORS) != 0 || flag1)) {
- blockState.affectNeighborsAfterRemoval(serverLevel, pos, flag1);
+ if ((flag || block instanceof BaseRailBlock) && this.level instanceof ServerLevel serverLevel && ((flags & 1) != 0 || flag1)) {
+ if ((flag || block instanceof BaseRailBlock)
+ && this.level instanceof ServerLevel serverLevel
+ && ((flags & Block.UPDATE_NEIGHBORS) != 0 || flag1)) {
+ blockState.affectNeighborsAfterRemoval(serverLevel, pos, flag1);
+ }
+ } else {

View File

@@ -21,10 +21,10 @@ index 80f17f33f670018240c854df589cf90cdeab6e70..d7f443bcf91ac7817fe79881122960f4
if (raidAt == null || raidAt.getRaidOmenLevel() < raidAt.getMaxRaidOmenLevel()) {
serverPlayer.addEffect(new MobEffectInstance(MobEffects.RAID_OMEN, 600, amplifier));
diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java
index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93835dfc06 100644
index 5181a9334066a15e0d502d3522c23337e5eef2b5..36b4aeeb63319d28d637541c3b97a481a8673fd7 100644
--- a/net/minecraft/world/entity/raid/Raid.java
+++ b/net/minecraft/world/entity/raid/Raid.java
@@ -256,7 +256,7 @@ public class Raid {
@@ -258,7 +258,7 @@ public class Raid {
}
public boolean absorbRaidOmen(ServerPlayer player) {
@@ -33,7 +33,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
if (effect == null) {
return false;
} else {
@@ -333,7 +333,13 @@ public class Raid {
@@ -335,7 +335,13 @@ public class Raid {
}
if (flag1) {
@@ -48,7 +48,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
}
if (this.raidCooldownTicks == 300 || this.raidCooldownTicks % 20 == 0) {
@@ -368,7 +374,14 @@ public class Raid {
@@ -390,7 +396,14 @@ public class Raid {
int i = 0;
while (this.shouldSpawnGroup()) {
@@ -64,7 +64,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
if (blockPos != null) {
this.started = true;
this.spawnGroup(level, blockPos);
@@ -380,7 +393,7 @@ public class Raid {
@@ -402,7 +415,7 @@ public class Raid {
i++;
}
@@ -73,7 +73,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
org.bukkit.craftbukkit.event.CraftEventFactory.callRaidStopEvent(level, this, org.bukkit.event.raid.RaidStopEvent.Reason.UNSPAWNABLE); // CraftBukkit
this.stop();
break;
@@ -667,7 +680,7 @@ public class Raid {
@@ -689,7 +702,7 @@ public class Raid {
int i2 = this.center.getX() + Mth.floor(Mth.cos(f2) * 32.0F * f) + level.random.nextInt(3) * Mth.floor(f);
int i3 = this.center.getZ() + Mth.floor(Mth.sin(f2) * 32.0F * f) + level.random.nextInt(3) * Mth.floor(f);
int height = level.getHeight(Heightmap.Types.WORLD_SURFACE, i2, i3);
@@ -82,7 +82,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
mutableBlockPos.set(i2, height, i3);
if (!level.isVillage(mutableBlockPos) || i <= 7) {
int i4 = 10;
@@ -686,6 +699,36 @@ public class Raid {
@@ -708,6 +721,36 @@ public class Raid {
return null;
}
@@ -119,7 +119,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
private boolean addWaveMob(ServerLevel level, int wave, Raider raider) {
return this.addWaveMob(level, wave, raider, true);
}
@@ -843,4 +886,43 @@ public class Raid {
@@ -865,4 +908,43 @@ public class Raid {
this.spawnsPerWaveBeforeBonus = spawnsPerWaveBeforeBonus;
}
}
@@ -164,7 +164,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..8f90f3234c9b80b7a194d5dbffd8ea93
+ // Leaves end - old FindSpawnPosition
}
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
index a495789b2d21fa9a24d5dca4ecfa196ddce49466..86e8ca07a1163094b14c55fe8913c7312eeff124 100644
index 8d8315edfb69b062ed5e3d957f4043ec411dd5d7..1c668b9dd246d29c37fc0de9d27e320d6b899a3f 100644
--- a/net/minecraft/world/entity/raid/Raider.java
+++ b/net/minecraft/world/entity/raid/Raider.java
@@ -128,6 +128,43 @@ public abstract class Raider extends PatrollingMonster {
@@ -210,4 +210,4 @@ index a495789b2d21fa9a24d5dca4ecfa196ddce49466..86e8ca07a1163094b14c55fe8913c731
+ // Leaves end - Revert raid changes
}
super.die(cause);
super.die(damageSource);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow anvil destroy item entities
diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java
index 0fd2c522a5fb038a8c002970af6feebd9dc9c436..2d0d6ad8c37c3187fbf35e5c7ff9a509da59c648 100644
index 387f7a48499421858ea024bca01e372d3dbcdb57..9395301f25d2b525d1412b7b79b82fa06c2bebbb 100644
--- a/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -282,7 +282,7 @@ public class FallingBlockEntity extends Entity {
@@ -281,7 +281,7 @@ public class FallingBlockEntity extends Entity {
if (ceil < 0) {
return false;
} else {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix EntityPortalExitEvent logic
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index e09eb2612eb3943c9d108885bf189b04e050f459..9309ef573407cbdf6bb1859021939798bbcf4669 100644
index 8bd5f957d61c429cf75e5a14296f735c33149e39..7376b7f56009865ba2db24b68f008b077bcf34d3 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -3990,19 +3990,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4052,19 +4052,21 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
);
event.callEvent();

View File

@@ -5,18 +5,19 @@ Subject: [PATCH] Fix CraftPortalEvent logic
diff --git a/net/minecraft/world/level/block/EndPortalBlock.java b/net/minecraft/world/level/block/EndPortalBlock.java
index f6c64277c3d6e16250e2bf963b6427404e27aa9b..2d908255439ea548aa7679219b5092334243a641 100644
index fb51a78e16fd461d95f670eae43ef93c64b46843..dca30a02110181bf45306ca6b2f9508e20cd643f 100644
--- a/net/minecraft/world/level/block/EndPortalBlock.java
+++ b/net/minecraft/world/level/block/EndPortalBlock.java
@@ -105,9 +105,9 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
@@ -111,10 +111,10 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
}
// CraftBukkit start
- set.removeAll(Relative.ROTATION); // remove relative rotation flags to simplify event mutation
+ // set.removeAll(Relative.ROTATION); // remove relative rotation flags to simplify event mutation // Leaves - no
float absoluteYaw = flag ? f : entity.getYRot() + f;
- org.bukkit.craftbukkit.event.CraftPortalEvent event = entity.callPortalEvent(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1.getWorld(), absoluteYaw, entity.getXRot()), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.END_PORTAL, 0, 0);
+ org.bukkit.craftbukkit.event.CraftPortalEvent event = entity.callPortalEvent(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1.getWorld(), absoluteYaw, 0.0F), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.END_PORTAL, 0, 0); // Leaves - fix
if (event == null) {
float absoluteYaw = !flag ? f : entity.getYRot() + f;
float absolutePitch = entity.getXRot() + f1;
- org.bukkit.craftbukkit.event.PortalEventResult result = org.bukkit.craftbukkit.event.CraftEventFactory.handlePortalEvents(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1, absoluteYaw, absolutePitch), org.bukkit.PortalType.ENDER, 0, 0);
+ org.bukkit.craftbukkit.event.PortalEventResult result = org.bukkit.craftbukkit.event.CraftEventFactory.handlePortalEvents(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1.getWorld(), absoluteYaw, 0.0F), org.bukkit.PortalType.ENDER, 0, 0);
if (result == null) {
return null;
}

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Xaero Map Protocol
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index d4eb10d3734930a43b8270cdc7eb78bf40907c94..81a6b4d9c35056b3eda889800f61964ab522a8b9 100644
index f376b03e267ae9c3acc9636b6ccee733497027d2..5661e05cc1ffbfc7015ca45cf0820e0ba616bcc6 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -1318,6 +1318,7 @@ public abstract class PlayerList {
player.connection.send(new ClientboundInitializeBorderPacket(worldBorder));
player.connection.send(new ClientboundSetTimePacket(level.getGameTime(), level.getDayTime(), level.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)));
player.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle()));
@@ -1204,6 +1204,7 @@ public abstract class PlayerList {
player.connection.send(new ClientboundSetChunkCacheRadiusPacket(level.spigotConfig.viewDistance));
player.connection.send(new ClientboundSetSimulationDistancePacket(level.spigotConfig.simulationDistance));
// Paper end
+ org.leavesmc.leaves.protocol.XaeroMapProtocol.onSendWorldInfo(player); // Leaves - xaero map protocol
if (level.isRaining()) {
// CraftBukkit start - handle player weather

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Skip negligible planar movement multiplication
This patch is Powered by Gale(https://github.com/Dreeam-qwq/Gale)
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 9309ef573407cbdf6bb1859021939798bbcf4669..d7eea7b8b5836b4aba510cfbbdb3788cf21c2abc 100644
index 7376b7f56009865ba2db24b68f008b077bcf34d3..0260ccee26a4dad7c7ea53504a45c645abe3c28f 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1234,8 +1234,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1246,8 +1246,17 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
}
}

Some files were not shown because too many files have changed in this diff Show More