mirror of
https://github.com/LeavesMC/Leaves.git
synced 2025-12-19 14:59:32 +00:00
1.21.7/8 (#587)
--------- Co-authored-by: MC-XiaoHei <xor7xiaohei@gmail.com> Co-authored-by: violetc <58360096+s-yh-china@users.noreply.github.com> Co-authored-by: Fortern <blueten.ki@gmail.com> Co-authored-by: Helvetica Volubi <88063803+Suisuroru@users.noreply.github.com>
This commit is contained in:
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
@@ -23,7 +23,6 @@ jobs:
|
|||||||
uses: gradle/actions/setup-gradle@v4
|
uses: gradle/actions/setup-gradle@v4
|
||||||
with:
|
with:
|
||||||
add-job-summary: never
|
add-job-summary: never
|
||||||
generate-job-summary: false
|
|
||||||
cache-read-only: false
|
cache-read-only: false
|
||||||
- name: Setup Git Config
|
- name: Setup Git Config
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
3
.github/workflows/test.yml
vendored
3
.github/workflows/test.yml
vendored
@@ -21,7 +21,6 @@ jobs:
|
|||||||
uses: gradle/actions/setup-gradle@v4
|
uses: gradle/actions/setup-gradle@v4
|
||||||
with:
|
with:
|
||||||
add-job-summary: never
|
add-job-summary: never
|
||||||
generate-job-summary: false
|
|
||||||
cache-read-only: false
|
cache-read-only: false
|
||||||
- name: Setup Git Config
|
- name: Setup Git Config
|
||||||
run: |
|
run: |
|
||||||
@@ -34,7 +33,7 @@ jobs:
|
|||||||
- name: Move Jar
|
- name: Move Jar
|
||||||
run: |
|
run: |
|
||||||
prop() {
|
prop() {
|
||||||
grep "${1}" gradle.properties | cut -d'=' -f2 | sed 's/\r//'
|
awk -F= -v key="$1" '$1 == key { val = $2; sub(/[[:space:]]*#.*$/, "", val); gsub(/^[[:space:]]+|[[:space:]]+$/, "", val); print val }' gradle.properties
|
||||||
}
|
}
|
||||||
|
|
||||||
jarName="leaves-$(prop mcVersion).jar"
|
jarName="leaves-$(prop mcVersion).jar"
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ maven {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("org.leavesmc.leaves:leaves-api:1.21.5-R0.1-SNAPSHOT")
|
compileOnly("org.leavesmc.leaves:leaves-api:1.21.8-R0.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ Each time you want to update your dependency, you must re-build Leaves.
|
|||||||
Leaves-Server:
|
Leaves-Server:
|
||||||
```kotlin
|
```kotlin
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("org.leavesmc.leaves:leaves:1.21.5-R0.1-SNAPSHOT")
|
compileOnly("org.leavesmc.leaves:leaves:1.21.8-R0.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ maven {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("org.leavesmc.leaves:leaves-api:1.21.5-R0.1-SNAPSHOT")
|
compileOnly("org.leavesmc.leaves:leaves-api:1.21.8-R0.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ dependencies {
|
|||||||
Leaves-Server:
|
Leaves-Server:
|
||||||
```kotlin
|
```kotlin
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("org.leavesmc.leaves:leaves:1.21.5-R0.1-SNAPSHOT")
|
compileOnly("org.leavesmc.leaves:leaves:1.21.8-R0.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ subprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven("https://repo.papermc.io/repository/maven-public/")
|
maven("https://repo.papermc.io/repository/maven-public/")
|
||||||
maven("https://repo.leavesmc.org/releases") {
|
maven("https://repo.leavesmc.org/releases") {
|
||||||
@@ -251,6 +250,7 @@ tasks.register("applyNextPatch") {
|
|||||||
|
|
||||||
if (failedIndex >= 0) {
|
if (failedIndex >= 0) {
|
||||||
val directory = project.projectDir.resolve(patchDir[failedIndex])
|
val directory = project.projectDir.resolve(patchDir[failedIndex])
|
||||||
|
executeCommand(listOf("git", "add", "."), directory)
|
||||||
|
|
||||||
val gitCommand = if (hasGitChanges(directory)) {
|
val gitCommand = if (hasGitChanges(directory)) {
|
||||||
listOf("git", "am", "--continue")
|
listOf("git", "am", "--continue")
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
group=org.leavesmc.leaves
|
group=org.leavesmc.leaves
|
||||||
version=1.21.5-R0.1-SNAPSHOT
|
version=1.21.8-R0.1-SNAPSHOT
|
||||||
mcVersion=1.21.5
|
mcVersion=1.21.8
|
||||||
paperRef=2ba1675c7506cadd8a540ea452e5dafb79ae8947
|
paperRef=c8a8c0ef8910c809913a00e2d9bdffaec51ff1f4
|
||||||
|
|
||||||
preVersion=true
|
preVersion=true
|
||||||
org.gradle.caching=true
|
org.gradle.caching=true
|
||||||
org.gradle.parallel=true
|
org.gradle.parallel=true
|
||||||
|
|
||||||
|
paper.runDisableWatchdog=true
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,7 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
9
gradlew
vendored
9
gradlew
vendored
@@ -86,8 +86,7 @@ done
|
|||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
APP_BASE_NAME=${0##*/}
|
APP_BASE_NAME=${0##*/}
|
||||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
|
||||||
' "$PWD" ) || exit
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD=maximum
|
MAX_FD=maximum
|
||||||
@@ -115,7 +114,7 @@ case "$( uname )" in #(
|
|||||||
NONSTOP* ) nonstop=true ;;
|
NONSTOP* ) nonstop=true ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH="\\\"\\\""
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
@@ -206,7 +205,7 @@ fi
|
|||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Collect all arguments for the java command:
|
# Collect all arguments for the java command:
|
||||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
# and any embedded shellness will be escaped.
|
# and any embedded shellness will be escaped.
|
||||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
# treated as '${Hostname}' itself on the command line.
|
# treated as '${Hostname}' itself on the command line.
|
||||||
@@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
|||||||
set -- \
|
set -- \
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
-classpath "$CLASSPATH" \
|
-classpath "$CLASSPATH" \
|
||||||
org.gradle.wrapper.GradleWrapperMain \
|
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||||
"$@"
|
"$@"
|
||||||
|
|
||||||
# Stop when "xargs" is not available.
|
# Stop when "xargs" is not available.
|
||||||
|
|||||||
4
gradlew.bat
vendored
4
gradlew.bat
vendored
@@ -70,11 +70,11 @@ goto fail
|
|||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
into("META-INF/maven/${project.group}/${project.name}")
|
into("META-INF/maven/${project.group}/${project.name}")
|
||||||
@@ -166,7 +_,7 @@
|
@@ -166,7 +_,7 @@
|
||||||
|
|
||||||
tasks.withType<Javadoc> {
|
tasks.withType<Javadoc>().configureEach {
|
||||||
val options = options as StandardJavadocDocletOptions
|
val options = options as StandardJavadocDocletOptions
|
||||||
- options.overview = "src/main/javadoc/overview.html"
|
- options.overview = "src/main/javadoc/overview.html"
|
||||||
+ options.overview = "../paper-api/src/main/javadoc/overview.html" // Leaves - build change
|
+ options.overview = "../paper-api/src/main/javadoc/overview.html" // Leaves - build change
|
||||||
|
|||||||
@@ -2904,18 +2904,18 @@ index 59fada9b1eb78238d280c6bbb711f52facba52c6..eb4d78c6111a530d015a0b91d14c40ad
|
|||||||
return i >= j && i <= k;
|
return i >= j && i <= k;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
||||||
index 4acda947b7d69ab4133b4cc94e76d945e4d148d5..d356f1895e8f3fae14bbbe1f60e589af3856b9ec 100644
|
index ad1330d87223dfcf3c9da40aa5ece8c21141f0d6..f561ac4ebd8d40266ae9f066e79045bb93113a53 100644
|
||||||
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
||||||
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
||||||
@@ -32,7 +32,6 @@ public class SimpleCommandMap implements CommandMap {
|
@@ -34,7 +34,6 @@ public class SimpleCommandMap implements CommandMap {
|
||||||
|
final ReloadCommand reload = new ReloadCommand("reload");
|
||||||
private void setDefaultCommands() {
|
this.knownCommands.put("bukkit:reload", reload);
|
||||||
register("bukkit", new ReloadCommand("reload"));
|
this.knownCommands.put("bukkit:rl", reload);
|
||||||
- register("bukkit", new co.aikar.timings.TimingsCommand("timings"));
|
- register("bukkit", new co.aikar.timings.TimingsCommand("timings"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFallbackCommands() {
|
public void setFallbackCommands() {
|
||||||
@@ -64,7 +63,6 @@ public class SimpleCommandMap implements CommandMap {
|
@@ -66,7 +65,6 @@ public class SimpleCommandMap implements CommandMap {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean register(@NotNull String label, @NotNull String fallbackPrefix, @NotNull Command command) {
|
public boolean register(@NotNull String label, @NotNull String fallbackPrefix, @NotNull Command command) {
|
||||||
@@ -2923,7 +2923,7 @@ index 4acda947b7d69ab4133b4cc94e76d945e4d148d5..d356f1895e8f3fae14bbbe1f60e589af
|
|||||||
label = label.toLowerCase(Locale.ROOT).trim();
|
label = label.toLowerCase(Locale.ROOT).trim();
|
||||||
fallbackPrefix = fallbackPrefix.toLowerCase(Locale.ROOT).trim();
|
fallbackPrefix = fallbackPrefix.toLowerCase(Locale.ROOT).trim();
|
||||||
boolean registered = register(label, command, false, fallbackPrefix);
|
boolean registered = register(label, command, false, fallbackPrefix);
|
||||||
@@ -146,17 +144,9 @@ public class SimpleCommandMap implements CommandMap {
|
@@ -148,17 +146,9 @@ public class SimpleCommandMap implements CommandMap {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2942,7 +2942,7 @@ index 4acda947b7d69ab4133b4cc94e76d945e4d148d5..d356f1895e8f3fae14bbbe1f60e589af
|
|||||||
server.getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper
|
server.getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper
|
||||||
//target.timings.stopTiming(); // Spigot // Paper
|
//target.timings.stopTiming(); // Spigot // Paper
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
index 001465eedafa51ac027a4db51cba6223edfe1171..dd98b4886d21ac92d9f9139450258754e985fb85 100644
|
index dfc2d76403993640e6283f25f9f3647bb6d1a30c..cc2a208b7cb118134ca4088c622644b5d2fac1c0 100644
|
||||||
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
@@ -720,7 +720,6 @@ public final class SimplePluginManager implements PluginManager {
|
@@ -720,7 +720,6 @@ public final class SimplePluginManager implements PluginManager {
|
||||||
|
|||||||
@@ -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
|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||||
index c9ea6559f809a6732588b8908001807be3d91196..fe30de1f0a7fc7112466b6eb2e5813f39259c3b6 100644
|
index 3bde4ad79ade5aae18e9073307f637717e8dd9e3..9971ed1347f0f37800911c6cd9d0f8ae1a4f100c 100644
|
||||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||||
@@ -3007,4 +3007,15 @@ public final class Bukkit {
|
@@ -3016,4 +3016,15 @@ public final class Bukkit {
|
||||||
public static void restart() {
|
public static void restart() {
|
||||||
server.restart();
|
server.restart();
|
||||||
}
|
}
|
||||||
@@ -19,16 +19,16 @@ index c9ea6559f809a6732588b8908001807be3d91196..fe30de1f0a7fc7112466b6eb2e5813f3
|
|||||||
+ *
|
+ *
|
||||||
+ * @return Bot Manager
|
+ * @return Bot Manager
|
||||||
+ */
|
+ */
|
||||||
+ public static @NotNull org.leavesmc.leaves.entity.BotManager getBotManager() {
|
+ public static @NotNull org.leavesmc.leaves.entity.bot.BotManager getBotManager() {
|
||||||
+ return server.getBotManager();
|
+ return server.getBotManager();
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - Bot API
|
+ // Leaves end - Bot API
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||||
index ed899c4cb4b5261ceff56bbc9ca806e20904508e..a5370832380e93cf029588caeb8e29e03cc52db8 100644
|
index 9bab00ab10c78908090c8a1a12d4c84e9324b08b..3e7aad4ddf573f7c868b7824c4f0f34fa08cb1fe 100644
|
||||||
--- a/src/main/java/org/bukkit/Server.java
|
--- a/src/main/java/org/bukkit/Server.java
|
||||||
+++ b/src/main/java/org/bukkit/Server.java
|
+++ b/src/main/java/org/bukkit/Server.java
|
||||||
@@ -2716,4 +2716,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2723,4 +2723,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||||
*/
|
*/
|
||||||
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
|
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
|
||||||
// Paper end - API to check if the server is sleeping
|
// Paper end - API to check if the server is sleeping
|
||||||
@@ -39,6 +39,6 @@ index ed899c4cb4b5261ceff56bbc9ca806e20904508e..a5370832380e93cf029588caeb8e29e0
|
|||||||
+ *
|
+ *
|
||||||
+ * @return Bot Manager
|
+ * @return Bot Manager
|
||||||
+ */
|
+ */
|
||||||
+ @NotNull org.leavesmc.leaves.entity.BotManager getBotManager();
|
+ @NotNull org.leavesmc.leaves.entity.bot.BotManager getBotManager();
|
||||||
+ // Leaves end - Bot API
|
+ // Leaves end - Bot API
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,30 +5,30 @@ Subject: [PATCH] Replay Mod API
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||||
index fe30de1f0a7fc7112466b6eb2e5813f39259c3b6..23f3ab31bbc9d197f9a82f4ed5003e6de814fad7 100644
|
index 9971ed1347f0f37800911c6cd9d0f8ae1a4f100c..803611b793daed2d51ef6ab34d01fc8b0a3ecd23 100644
|
||||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||||
@@ -3018,4 +3018,10 @@ public final class Bukkit {
|
@@ -3027,4 +3027,10 @@ public final class Bukkit {
|
||||||
return server.getBotManager();
|
return server.getBotManager();
|
||||||
}
|
}
|
||||||
// Leaves end - Bot API
|
// Leaves end - Bot API
|
||||||
+
|
+
|
||||||
+ // Leaves start - Photographer API
|
+ // Leaves start - Photographer API
|
||||||
+ public static @NotNull org.leavesmc.leaves.entity.PhotographerManager getPhotographerManager() {
|
+ public static @NotNull org.leavesmc.leaves.entity.photographer.PhotographerManager getPhotographerManager() {
|
||||||
+ return server.getPhotographerManager();
|
+ return server.getPhotographerManager();
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - Photographer API
|
+ // Leaves end - Photographer API
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||||
index a5370832380e93cf029588caeb8e29e03cc52db8..2531e82464e54e0c1b707e7c5a62ff0fd5ed8637 100644
|
index 3e7aad4ddf573f7c868b7824c4f0f34fa08cb1fe..ce128dd8120b75884cb208d7ba7d316ee110333b 100644
|
||||||
--- a/src/main/java/org/bukkit/Server.java
|
--- a/src/main/java/org/bukkit/Server.java
|
||||||
+++ b/src/main/java/org/bukkit/Server.java
|
+++ b/src/main/java/org/bukkit/Server.java
|
||||||
@@ -2725,4 +2725,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2732,4 +2732,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||||
*/
|
*/
|
||||||
@NotNull org.leavesmc.leaves.entity.BotManager getBotManager();
|
@NotNull org.leavesmc.leaves.entity.bot.BotManager getBotManager();
|
||||||
// Leaves end - Bot API
|
// Leaves end - Bot API
|
||||||
+
|
+
|
||||||
+ // Leaves start - Photographer API
|
+ // Leaves start - Photographer API
|
||||||
+ @NotNull org.leavesmc.leaves.entity.PhotographerManager getPhotographerManager();
|
+ @NotNull org.leavesmc.leaves.entity.photographer.PhotographerManager getPhotographerManager();
|
||||||
+ // Leaves end - Photographer API
|
+ // Leaves end - Photographer API
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||||
index 23f3ab31bbc9d197f9a82f4ed5003e6de814fad7..30488f80b98d1dba485e53601edb5cb0e23b7591 100644
|
index 803611b793daed2d51ef6ab34d01fc8b0a3ecd23..0149af5bd4234f925e12d78251766be5a16e5060 100644
|
||||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||||
@@ -3024,4 +3024,10 @@ public final class Bukkit {
|
@@ -3033,4 +3033,10 @@ public final class Bukkit {
|
||||||
return server.getPhotographerManager();
|
return server.getPhotographerManager();
|
||||||
}
|
}
|
||||||
// Leaves end - Photographer API
|
// Leaves end - Photographer API
|
||||||
@@ -20,12 +20,12 @@ index 23f3ab31bbc9d197f9a82f4ed5003e6de814fad7..30488f80b98d1dba485e53601edb5cb0
|
|||||||
+ // Leaves end - Bytebuf API
|
+ // Leaves end - Bytebuf API
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||||
index 2531e82464e54e0c1b707e7c5a62ff0fd5ed8637..a1742e64232c949dc88deb5d6083c4bf62e6aae9 100644
|
index ce128dd8120b75884cb208d7ba7d316ee110333b..e63fb4e0c55929f2721e16f69e0c0a4b455477fa 100644
|
||||||
--- a/src/main/java/org/bukkit/Server.java
|
--- a/src/main/java/org/bukkit/Server.java
|
||||||
+++ b/src/main/java/org/bukkit/Server.java
|
+++ b/src/main/java/org/bukkit/Server.java
|
||||||
@@ -2729,4 +2729,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2736,4 +2736,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||||
// Leaves start - Photographer API
|
// Leaves start - Photographer API
|
||||||
@NotNull org.leavesmc.leaves.entity.PhotographerManager getPhotographerManager();
|
@NotNull org.leavesmc.leaves.entity.photographer.PhotographerManager getPhotographerManager();
|
||||||
// Leaves end - Photographer API
|
// Leaves end - Photographer API
|
||||||
+
|
+
|
||||||
+ // Leaves start - Bytebuf API
|
+ // Leaves start - Bytebuf API
|
||||||
@@ -33,10 +33,10 @@ index 2531e82464e54e0c1b707e7c5a62ff0fd5ed8637..a1742e64232c949dc88deb5d6083c4bf
|
|||||||
+ // Leaves end - Bytebuf API
|
+ // Leaves end - Bytebuf API
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||||
index d34419693fc78b3f7e8f6bbf115f17f29e5e3377..ab45edbc10398d92ddfcfd16d12d49f5b4e87c4c 100644
|
index 3584ca0a89f59e391ab6d5be8f2274a6801d025f..4171ac88c491c071af9def920084292e108587f0 100644
|
||||||
--- a/src/main/java/org/bukkit/entity/Player.java
|
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||||
+++ b/src/main/java/org/bukkit/entity/Player.java
|
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||||
@@ -3860,6 +3860,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
@@ -3859,6 +3859,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||||
boolean isChunkSent(long chunkKey);
|
boolean isChunkSent(long chunkKey);
|
||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||||
index 30488f80b98d1dba485e53601edb5cb0e23b7591..91fa30c1713795007faef73280713a33d2518487 100644
|
index 0149af5bd4234f925e12d78251766be5a16e5060..3c019280bc751e0710f1d34478b56986bc6000fc 100644
|
||||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||||
@@ -3030,4 +3030,10 @@ public final class Bukkit {
|
@@ -3039,4 +3039,10 @@ public final class Bukkit {
|
||||||
return server.getBytebufManager();
|
return server.getBytebufManager();
|
||||||
}
|
}
|
||||||
// Leaves end - Bytebuf API
|
// Leaves end - Bytebuf API
|
||||||
@@ -20,10 +20,10 @@ index 30488f80b98d1dba485e53601edb5cb0e23b7591..91fa30c1713795007faef73280713a33
|
|||||||
+ // Leaves end - Config API
|
+ // Leaves end - Config API
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||||
index a1742e64232c949dc88deb5d6083c4bf62e6aae9..75a1917d998bf8aa0b86a67ca0f0836804fad012 100644
|
index e63fb4e0c55929f2721e16f69e0c0a4b455477fa..37ff5eabaf0fd3ab72eb37a1f21904b5a1adebe0 100644
|
||||||
--- a/src/main/java/org/bukkit/Server.java
|
--- a/src/main/java/org/bukkit/Server.java
|
||||||
+++ b/src/main/java/org/bukkit/Server.java
|
+++ b/src/main/java/org/bukkit/Server.java
|
||||||
@@ -2733,4 +2733,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2740,4 +2740,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||||
// Leaves start - Bytebuf API
|
// Leaves start - Bytebuf API
|
||||||
org.leavesmc.leaves.bytebuf.BytebufManager getBytebufManager();
|
org.leavesmc.leaves.bytebuf.BytebufManager getBytebufManager();
|
||||||
// Leaves end - Bytebuf API
|
// Leaves end - Bytebuf API
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[*.java]
|
||||||
|
ij_java_if_brace_force = always
|
||||||
|
ij_java_do_while_brace_force = always
|
||||||
|
ij_java_for_brace_force = always
|
||||||
|
ij_java_while_brace_force = always
|
||||||
|
ij_java_use_fq_class_names = false
|
||||||
@@ -140,6 +140,8 @@ public enum PacketType {
|
|||||||
ServerboundMoveVehicle,
|
ServerboundMoveVehicle,
|
||||||
ServerboundPaddleBoat,
|
ServerboundPaddleBoat,
|
||||||
ServerboundPickItem,
|
ServerboundPickItem,
|
||||||
|
ServerboundPickItemFromBlock,
|
||||||
|
ServerboundPickItemFromEntity,
|
||||||
ServerboundPlaceRecipe,
|
ServerboundPlaceRecipe,
|
||||||
ServerboundPlayerAbilities,
|
ServerboundPlayerAbilities,
|
||||||
ServerboundPlayerAction,
|
ServerboundPlayerAction,
|
||||||
@@ -188,5 +190,7 @@ public enum PacketType {
|
|||||||
ServerboundPong,
|
ServerboundPong,
|
||||||
ServerboundResourcePack,
|
ServerboundResourcePack,
|
||||||
ServerboundPingRequest,
|
ServerboundPingRequest,
|
||||||
ClientboundPongResponse
|
ClientboundPongResponse,
|
||||||
|
ClientboundShowDialog,
|
||||||
|
ClientboundClearDialog
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package org.leavesmc.leaves.entity;
|
package org.leavesmc.leaves.entity.bot;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.botaction.LeavesBotAction;
|
import org.leavesmc.leaves.entity.bot.action.BotAction;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -38,8 +38,7 @@ public interface Bot extends Player {
|
|||||||
*
|
*
|
||||||
* @param action bot action
|
* @param action bot action
|
||||||
*/
|
*/
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
<T extends BotAction<T>> void addAction(@NotNull T action);
|
||||||
void addAction(@NotNull LeavesBotAction action);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the copy action in giving index
|
* Get the copy action in giving index
|
||||||
@@ -47,8 +46,7 @@ public interface Bot extends Player {
|
|||||||
* @param index index of actions
|
* @param index index of actions
|
||||||
* @return Action of that index
|
* @return Action of that index
|
||||||
*/
|
*/
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
BotAction<?> getAction(int index);
|
||||||
LeavesBotAction getAction(int index);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get action size
|
* Get action size
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.leavesmc.leaves.entity;
|
package org.leavesmc.leaves.entity.bot;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package org.leavesmc.leaves.entity;
|
package org.leavesmc.leaves.entity.bot;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.botaction.CustomBotAction;
|
import org.leavesmc.leaves.entity.bot.action.BotAction;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -37,23 +37,12 @@ public interface BotManager {
|
|||||||
Collection<Bot> getBots();
|
Collection<Bot> getBots();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a custom bot action.
|
* Create a bot action by class.
|
||||||
*
|
*
|
||||||
* @param name action name
|
* @param type action class
|
||||||
* @param action action executor
|
* @return a bot action instance if one was found, null otherwise
|
||||||
* @return true if success, or false
|
|
||||||
*/
|
*/
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
<T extends BotAction<T>> T newAction(@NotNull Class<T> type);
|
||||||
boolean registerCustomBotAction(String name, CustomBotAction action);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregister a custom bot action.
|
|
||||||
*
|
|
||||||
* @param name action name
|
|
||||||
* @return true if success, or false
|
|
||||||
*/
|
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
||||||
boolean unregisterCustomBotAction(String name);
|
|
||||||
|
|
||||||
BotCreator botCreator(@NotNull String realName, @NotNull Location location);
|
BotCreator botCreator(@NotNull String realName, @NotNull Location location);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to attack entities.
|
||||||
|
*/
|
||||||
|
public interface AttackAction extends TimerBotAction<AttackAction> {
|
||||||
|
static AttackAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(AttackAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action that can be performed by a Bot.
|
||||||
|
* <p>
|
||||||
|
* This interface defines the basic properties of an action (such as name and UUID)
|
||||||
|
* and lifecycle event callbacks (success, failure, stop).
|
||||||
|
*
|
||||||
|
* @param <T> the type of the callback parameter, usually a context object related to the action
|
||||||
|
*/
|
||||||
|
public interface BotAction<T> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the name of this action.
|
||||||
|
*
|
||||||
|
* @return the action name
|
||||||
|
*/
|
||||||
|
String getName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the UUID of this action.
|
||||||
|
*
|
||||||
|
* @return the UUID of the action
|
||||||
|
*/
|
||||||
|
UUID getUUID();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether this action is cancelled.
|
||||||
|
*
|
||||||
|
* @param cancel true to cancel the action, false otherwise
|
||||||
|
*/
|
||||||
|
void setCancelled(boolean cancel);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether this action has been cancelled.
|
||||||
|
*
|
||||||
|
* @return true if cancelled, false otherwise
|
||||||
|
*/
|
||||||
|
boolean isCancelled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the callback to be executed when the action fails.
|
||||||
|
*
|
||||||
|
* @param onFail the callback to execute on failure, with a parameter of type T
|
||||||
|
*/
|
||||||
|
void setOnFail(Consumer<T> onFail);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the callback to be executed when the action fails.
|
||||||
|
*
|
||||||
|
* @return the failure callback
|
||||||
|
*/
|
||||||
|
Consumer<T> getOnFail();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the callback to be executed when the action succeeds.
|
||||||
|
*
|
||||||
|
* @param onSuccess the callback to execute on success, with a parameter of type T
|
||||||
|
*/
|
||||||
|
void setOnSuccess(Consumer<T> onSuccess);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the callback to be executed when the action succeeds.
|
||||||
|
*
|
||||||
|
* @return the success callback
|
||||||
|
*/
|
||||||
|
Consumer<T> getOnSuccess();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the callback to be executed when the action is stopped.
|
||||||
|
*
|
||||||
|
* @param onStop the callback to execute on stop, with a parameter of type T
|
||||||
|
*/
|
||||||
|
void setOnStop(Consumer<T> onStop);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the callback to be executed when the action is stopped.
|
||||||
|
*
|
||||||
|
* @return the stop callback
|
||||||
|
*/
|
||||||
|
Consumer<T> getOnStop();
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to break a block.
|
||||||
|
*/
|
||||||
|
public interface BreakBlockAction extends TimerBotAction<BreakBlockAction> {
|
||||||
|
static BreakBlockAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(BreakBlockAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to drop all items in its inventory.
|
||||||
|
*/
|
||||||
|
public interface DropAction extends TimerBotAction<DropAction> {
|
||||||
|
static DropAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(DropAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to perform auto fishing.
|
||||||
|
*/
|
||||||
|
public interface FishAction extends TimerBotAction<FishAction> {
|
||||||
|
static FishAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(FishAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to perform a jump.
|
||||||
|
*/
|
||||||
|
public interface JumpAction extends TimerBotAction<JumpAction> {
|
||||||
|
static JumpAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(JumpAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to look at a specific position or player.
|
||||||
|
* <p>
|
||||||
|
* If both a position and a player are set, the player target takes precedence.
|
||||||
|
*/
|
||||||
|
public interface LookAction extends BotAction<LookAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the position in the world for the bot to look at.
|
||||||
|
* <p>
|
||||||
|
* If a player target is set via {@link #setTarget(Player)}, the bot will look at the player instead of this position.
|
||||||
|
*
|
||||||
|
* @param pos the {@link Vector} representing the position to look at
|
||||||
|
* @return this {@code LookAction} instance for method chaining
|
||||||
|
*/
|
||||||
|
LookAction setPos(Vector pos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the position in the world that the bot is set to look at.
|
||||||
|
* <p>
|
||||||
|
* If a player target is set, this value may be ignored.
|
||||||
|
*
|
||||||
|
* @return the {@link Vector} position to look at, or {@code null} if not set
|
||||||
|
*/
|
||||||
|
Vector getPos();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the player for the bot to look at.
|
||||||
|
* <p>
|
||||||
|
* When a player is set as the target, the bot will continuously look at the player's current position,
|
||||||
|
* overriding any position set by {@link #setPos(Vector)}.
|
||||||
|
*
|
||||||
|
* @param player the {@link Player} to look at, or {@code null} to clear the target
|
||||||
|
* @return this {@code LookAction} instance for method chaining
|
||||||
|
*/
|
||||||
|
LookAction setTarget(Player player);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the player that the bot is set to look at.
|
||||||
|
*
|
||||||
|
* @return the {@link Player} target, or {@code null} if not set
|
||||||
|
*/
|
||||||
|
Player getTarget();
|
||||||
|
|
||||||
|
static LookAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(LookAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to move to a specific direction.
|
||||||
|
*/
|
||||||
|
public interface MoveAction extends StateBotAction<MoveAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the direction of the move action.
|
||||||
|
*
|
||||||
|
* @return the direction of the move action
|
||||||
|
*/
|
||||||
|
MoveDirection getDirection();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the direction of the move action.
|
||||||
|
*
|
||||||
|
* @param direction the direction to set
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
MoveAction setDirection(MoveDirection direction);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents possible movement directions for the bot.
|
||||||
|
*/
|
||||||
|
enum MoveDirection {
|
||||||
|
FORWARD("forward"),
|
||||||
|
BACKWARD("backward"),
|
||||||
|
LEFT("left"),
|
||||||
|
RIGHT("right");
|
||||||
|
|
||||||
|
public final String name;
|
||||||
|
|
||||||
|
MoveDirection(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static MoveAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(MoveAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to rotate to a specific yaw and pitch.
|
||||||
|
*/
|
||||||
|
public interface RotationAction extends BotAction<RotationAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the yaw of the rotation.
|
||||||
|
*
|
||||||
|
* @param yaw the yaw to set
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
RotationAction setYaw(float yaw);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the pitch of the rotation.
|
||||||
|
*
|
||||||
|
* @param pitch the pitch to set
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
RotationAction setPitch(float pitch);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the yaw of the rotation.
|
||||||
|
*
|
||||||
|
* @return the yaw
|
||||||
|
*/
|
||||||
|
float getYaw();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the pitch of the rotation.
|
||||||
|
*
|
||||||
|
* @return the pitch
|
||||||
|
*/
|
||||||
|
float getPitch();
|
||||||
|
|
||||||
|
static RotationAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(RotationAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to sneak.
|
||||||
|
*/
|
||||||
|
public interface SneakAction extends StateBotAction<SneakAction> {
|
||||||
|
static SneakAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(SneakAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a type of bot action that places the bot in a specific state while the action is active.
|
||||||
|
* When the action is stopped, the associated state is removed from the bot.
|
||||||
|
*
|
||||||
|
* @param <E> The type of entity that this action operates on.
|
||||||
|
*/
|
||||||
|
public interface StateBotAction<E> extends BotAction<E> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action for a bot to float up in water.
|
||||||
|
*/
|
||||||
|
public interface SwimAction extends StateBotAction<SwimAction> {
|
||||||
|
static SwimAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(SwimAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a scheduled bot task that runs periodically.
|
||||||
|
* <p>
|
||||||
|
* TimerBotAction allows configuration of start delay, execution interval, and the number of executions.
|
||||||
|
* It is intended for bot actions that need to be triggered at regular intervals.
|
||||||
|
*
|
||||||
|
* @param <E> the type of entity this action operates on
|
||||||
|
*/
|
||||||
|
public interface TimerBotAction<E> extends BotAction<E> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the delay in ticks before the task starts for the first time.
|
||||||
|
*
|
||||||
|
* @param delayTick the number of ticks to delay before the first execution
|
||||||
|
*/
|
||||||
|
void setStartDelayTick(int delayTick);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the delay in ticks before the task starts for the first time.
|
||||||
|
*
|
||||||
|
* @return the number of ticks to delay before the first execution
|
||||||
|
*/
|
||||||
|
int getStartDelayTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the interval in ticks between each execution of the task.
|
||||||
|
*
|
||||||
|
* @param intervalTick the number of ticks between executions
|
||||||
|
*/
|
||||||
|
void setDoIntervalTick(int intervalTick);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the interval in ticks between each execution of the task.
|
||||||
|
*
|
||||||
|
* @return the number of ticks between executions
|
||||||
|
*/
|
||||||
|
int getDoIntervalTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the total number of times the task should be executed.
|
||||||
|
*
|
||||||
|
* @param doNumber the total number of executions
|
||||||
|
*/
|
||||||
|
void setDoNumber(int doNumber);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the total number of times the task should be executed.
|
||||||
|
*
|
||||||
|
* @return the total number of executions
|
||||||
|
*/
|
||||||
|
int getDoNumber();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the number of ticks remaining until the next execution.
|
||||||
|
*
|
||||||
|
* @return the number of ticks until the next execution
|
||||||
|
*/
|
||||||
|
int getTickToNext();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the number of executions remaining for this task.
|
||||||
|
*
|
||||||
|
* @return the number of executions remaining
|
||||||
|
*/
|
||||||
|
int getDoNumberRemaining();
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot only uses an item, without using it on blocks or entities.
|
||||||
|
*/
|
||||||
|
public interface UseItemAction extends TimerBotAction<UseItemAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot uses an item, fully simulating the effect of a player right-clicking.
|
||||||
|
*/
|
||||||
|
public interface UseItemAutoAction extends TimerBotAction<UseItemAutoAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemAutoAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemAutoAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemAutoAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot only uses the item in its offhand, without using it on blocks or entities.
|
||||||
|
*/
|
||||||
|
public interface UseItemOffhandAction extends TimerBotAction<UseItemOffhandAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemOffhandAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemOffhandAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemOffhandAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot uses an item on a block.
|
||||||
|
*/
|
||||||
|
public interface UseItemOnAction extends TimerBotAction<UseItemOnAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemOnAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemOnAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemOnAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot uses an item in its offhand on a block.
|
||||||
|
*/
|
||||||
|
public interface UseItemOnOffhandAction extends TimerBotAction<UseItemOnOffhandAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemOnOffhandAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemOnOffhandAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemOnOffhandAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot uses an item to an entity.
|
||||||
|
*/
|
||||||
|
public interface UseItemToAction extends TimerBotAction<UseItemToAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemToAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemToAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemToAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.leavesmc.leaves.entity.bot.action;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an action where a bot uses an item in its offhand to an entity.
|
||||||
|
*/
|
||||||
|
public interface UseItemToOffhandAction extends TimerBotAction<UseItemToOffhandAction> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the equivalent right-click hold duration in ticks.
|
||||||
|
* Default is -1, which means will not be released.
|
||||||
|
*
|
||||||
|
* @return the equivalent right-click hold duration
|
||||||
|
*/
|
||||||
|
int getUseTick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the equivalent right-click hold duration in ticks.
|
||||||
|
*
|
||||||
|
* @param useTick the equivalent right-click hold duration
|
||||||
|
* @return this action instance
|
||||||
|
*/
|
||||||
|
UseItemToOffhandAction setUseTick(int useTick);
|
||||||
|
|
||||||
|
static UseItemToOffhandAction create() {
|
||||||
|
return Bukkit.getBotManager().newAction(UseItemToOffhandAction.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
package org.leavesmc.leaves.entity.botaction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A Leaves bot action enum
|
|
||||||
*/
|
|
||||||
|
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
||||||
public enum BotActionType {
|
|
||||||
ATTACK("attack"),
|
|
||||||
BREAK("break"),
|
|
||||||
DROP("drop"),
|
|
||||||
FISH("fish"),
|
|
||||||
JUMP("jump"),
|
|
||||||
LOOK("look"),
|
|
||||||
ROTATE("rotate"),
|
|
||||||
ROTATION("rotation"),
|
|
||||||
SNEAK("sneak"),
|
|
||||||
SWIM("swim"),
|
|
||||||
USE("use"),
|
|
||||||
USE_ON("use_on"),
|
|
||||||
USE_TO("use_to"),
|
|
||||||
USE_OFFHAND("use_offhand"),
|
|
||||||
USE_ON_OFFHAND("use_on_offhand"),
|
|
||||||
USE_TO_OFFHAND("use_to_offhand");
|
|
||||||
|
|
||||||
private final String name;
|
|
||||||
|
|
||||||
BotActionType(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
package org.leavesmc.leaves.entity.botaction;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a class which contains methods for a custom bot action
|
|
||||||
*/
|
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
||||||
public interface CustomBotAction {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Executes the action, returning its success.
|
|
||||||
*
|
|
||||||
* @param bot bot of the action
|
|
||||||
* @return true if once action finish, otherwise false
|
|
||||||
*/
|
|
||||||
boolean doTick(Bot bot);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created a new action instance.
|
|
||||||
*
|
|
||||||
* @param player player who create this action
|
|
||||||
* @param args passed action arguments
|
|
||||||
* @return a new action instance with given args
|
|
||||||
*/
|
|
||||||
@Nullable CustomBotAction getNew(@Nullable Player player, String[] args);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Requests a list of possible completions for a action argument.
|
|
||||||
*
|
|
||||||
* @return A List of a List of possible completions for the argument.
|
|
||||||
*/
|
|
||||||
@NotNull List<List<String>> getTabComplete();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the interval between {@link CustomBotAction#doTick(Bot)}
|
|
||||||
*
|
|
||||||
* @return the tick interval
|
|
||||||
*/
|
|
||||||
int getInitialTickInterval();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the tick delay to the first {@link CustomBotAction#doTick(Bot)}
|
|
||||||
*
|
|
||||||
* @return the tick delay
|
|
||||||
*/
|
|
||||||
int getInitialTickDelay();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return a number of times {@link CustomBotAction#doTick(Bot)} can return true
|
|
||||||
*
|
|
||||||
* @return the number of times an action can be executed
|
|
||||||
*/
|
|
||||||
int getInitialNumber();
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
package org.leavesmc.leaves.entity.botaction;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
||||||
public class LeavesBotAction {
|
|
||||||
|
|
||||||
private final String actionName;
|
|
||||||
private final UUID uuid;
|
|
||||||
private final int initialTickDelay;
|
|
||||||
private final int initialTickInterval;
|
|
||||||
private final int initialNumber;
|
|
||||||
|
|
||||||
private Player actionPlayer;
|
|
||||||
private int tickToNext;
|
|
||||||
private int numberRemaining;
|
|
||||||
private boolean cancel;
|
|
||||||
|
|
||||||
public LeavesBotAction(BotActionType type, int initialTickInterval, int initialNumber) {
|
|
||||||
this(type.getName(), UUID.randomUUID(), 0, initialTickInterval, initialNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
public LeavesBotAction(BotActionType type, int initialTickDelay, int initialTickInterval, int initialNumber) {
|
|
||||||
this(type.getName(), UUID.randomUUID(), initialTickDelay, initialTickInterval, initialNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected LeavesBotAction(String name, UUID actionUUID, int initialTickDelay, int initialTickInterval, int initialNumber) {
|
|
||||||
this.actionName = name;
|
|
||||||
this.uuid = actionUUID;
|
|
||||||
this.initialTickDelay = initialTickDelay;
|
|
||||||
this.initialTickInterval = initialTickInterval;
|
|
||||||
this.initialNumber = initialNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getActionName() {
|
|
||||||
return actionName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID getUuid() {
|
|
||||||
return uuid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInitialTickDelay() {
|
|
||||||
return initialTickDelay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInitialTickInterval() {
|
|
||||||
return initialTickInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInitialNumber() {
|
|
||||||
return initialNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public Player getActionPlayer() {
|
|
||||||
return actionPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setActionPlayer(@Nullable Player actionPlayer) {
|
|
||||||
this.actionPlayer = actionPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isCancel() {
|
|
||||||
return cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCancel(boolean cancel) {
|
|
||||||
this.cancel = cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getNumberRemaining() {
|
|
||||||
return numberRemaining;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumberRemaining(int numberRemaining) {
|
|
||||||
this.numberRemaining = numberRemaining;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTickToNext() {
|
|
||||||
return tickToNext;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTickToNext(int tickToNext) {
|
|
||||||
this.tickToNext = tickToNext;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.leavesmc.leaves.entity;
|
package org.leavesmc.leaves.entity.photographer;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.leavesmc.leaves.entity;
|
package org.leavesmc.leaves.entity.photographer;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.leavesmc.leaves.event.bot;
|
package org.leavesmc.leaves.event.bot;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.leavesmc.leaves.event.bot;
|
|||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.bukkit.event.Cancellable;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.bukkit.event.Cancellable;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
public class BotConfigModifyEvent extends BotEvent implements Cancellable {
|
public class BotConfigModifyEvent extends BotEvent implements Cancellable {
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ public class BotCreateEvent extends Event implements Cancellable {
|
|||||||
private final CommandSender creator;
|
private final CommandSender creator;
|
||||||
private Location createLocation;
|
private Location createLocation;
|
||||||
private boolean cancel = false;
|
private boolean cancel = false;
|
||||||
|
|
||||||
public BotCreateEvent(@NotNull final String who, @NotNull final String skin, @NotNull final Location createLocation, @NotNull CreateReason reason, @Nullable CommandSender creator) {
|
public BotCreateEvent(@NotNull final String who, @NotNull final String skin, @NotNull final Location createLocation, @NotNull CreateReason reason, @Nullable CommandSender creator) {
|
||||||
this.bot = who;
|
this.bot = who;
|
||||||
this.skin = skin;
|
this.skin = skin;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import org.bukkit.event.Cancellable;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
public class BotDeathEvent extends BotEvent implements Cancellable {
|
public class BotDeathEvent extends BotEvent implements Cancellable {
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package org.leavesmc.leaves.event.bot;
|
|||||||
|
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a fakeplayer related event
|
* Represents a fakeplayer related event
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.bukkit.event.Cancellable;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
public class BotInventoryOpenEvent extends BotEvent implements Cancellable {
|
public class BotInventoryOpenEvent extends BotEvent implements Cancellable {
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a fakeplayer joins a server
|
* Called when a fakeplayer joins a server
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import org.bukkit.event.Cancellable;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call when a fakeplayer removed
|
* Call when a fakeplayer removed
|
||||||
@@ -20,6 +20,7 @@ public class BotRemoveEvent extends BotEvent implements Cancellable {
|
|||||||
private Component removeMessage;
|
private Component removeMessage;
|
||||||
private boolean save;
|
private boolean save;
|
||||||
private boolean cancel = false;
|
private boolean cancel = false;
|
||||||
|
|
||||||
public BotRemoveEvent(@NotNull final Bot who, @NotNull RemoveReason reason, @Nullable CommandSender remover, @Nullable Component removeMessage, boolean save) {
|
public BotRemoveEvent(@NotNull final Bot who, @NotNull RemoveReason reason, @Nullable CommandSender remover, @Nullable Component removeMessage, boolean save) {
|
||||||
super(who);
|
super(who);
|
||||||
this.reason = reason;
|
this.reason = reason;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.leavesmc.leaves.event.bot;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.leavesmc.leaves.entity.Bot;
|
import org.leavesmc.leaves.entity.bot.Bot;
|
||||||
|
|
||||||
public class BotSpawnLocationEvent extends BotEvent {
|
public class BotSpawnLocationEvent extends BotEvent {
|
||||||
|
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ public class Features {
|
|||||||
public static final String MIXIN = "mixin";
|
public static final String MIXIN = "mixin";
|
||||||
public static final String FAKEPLAYER = "fakeplayer";
|
public static final String FAKEPLAYER = "fakeplayer";
|
||||||
public static final String PHOTOGRAPHER = "photographer";
|
public static final String PHOTOGRAPHER = "photographer";
|
||||||
public static final String RECORDER = "recorder";
|
public static final String RECORDER = "recorder";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
--- a/paper-server/build.gradle.kts
|
--- a/paper-server/build.gradle.kts
|
||||||
+++ b/paper-server/build.gradle.kts
|
+++ b/paper-server/build.gradle.kts
|
||||||
@@ -9,25 +_,38 @@
|
@@ -1,4 +_,3 @@
|
||||||
|
-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 @@
|
||||||
`java-library`
|
`java-library`
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
idea
|
idea
|
||||||
- id("io.papermc.paperweight.core")
|
- id("io.papermc.paperweight.core")
|
||||||
|
- id("io.papermc.fill.gradle") version "1.0.7"
|
||||||
+ id("org.leavesmc.leavesweight.core") // Leaves - build change
|
+ id("org.leavesmc.leavesweight.core") // Leaves - build change
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12,9 +18,9 @@
|
|||||||
+val leavesMavenPublicUrl = "https://repo.leavesmc.com/snapshots/" // Leaves - build change
|
+val leavesMavenPublicUrl = "https://repo.leavesmc.com/snapshots/" // Leaves - build change
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
mache("io.papermc:mache:1.21.5+build.2")
|
mache("io.papermc:mache:1.21.8+build.1")
|
||||||
- paperclip("io.papermc:paperclip:3.0.3")
|
- paperclip("io.papermc:paperclip:3.0.3")
|
||||||
+ leavesclip("org.leavesmc:leavesclip:3.0.0") // Leaves - build change
|
+ leavesclip("org.leavesmc:leavesclip:3.0.4") // Leaves - build change
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,10 +29,6 @@
|
|||||||
+ minecraftVersion = rootProject.providers.gradleProperty("mcVersion") // Leaves - build change
|
+ minecraftVersion = rootProject.providers.gradleProperty("mcVersion") // Leaves - build change
|
||||||
gitFilePatches = false
|
gitFilePatches = false
|
||||||
|
|
||||||
//updatingMinecraft {
|
|
||||||
// oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365"
|
|
||||||
//}
|
|
||||||
|
|
||||||
+ // Leaves start - build change
|
+ // Leaves start - build change
|
||||||
+ val leaves = forks.register("leaves") {
|
+ val leaves = forks.register("leaves") {
|
||||||
+ upstream.patchDir("paperServer") {
|
+ upstream.patchDir("paperServer") {
|
||||||
@@ -40,9 +42,12 @@
|
|||||||
+ // Leaves end - build change
|
+ // Leaves end - build change
|
||||||
+
|
+
|
||||||
spigot {
|
spigot {
|
||||||
buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc"
|
- enabled = true
|
||||||
packageVersion = "v1_21_R4" // also needs to be updated in MappingEnvironment
|
+ // enabled = true // Leaves - disable
|
||||||
@@ -50,6 +_,7 @@
|
buildDataRef = "436eac9815c211be1a2a6ca0702615f995e81c44"
|
||||||
|
packageVersion = "v1_21_R5" // also needs to be updated in MappingEnvironment
|
||||||
|
}
|
||||||
|
@@ -49,6 +_,7 @@
|
||||||
libraryRepositories.addAll(
|
libraryRepositories.addAll(
|
||||||
"https://repo.maven.apache.org/maven2/",
|
"https://repo.maven.apache.org/maven2/",
|
||||||
paperMavenPublicUrl,
|
paperMavenPublicUrl,
|
||||||
@@ -50,7 +55,7 @@
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +_,22 @@
|
@@ -107,7 +_,22 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,12 +79,13 @@
|
|||||||
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
|
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
|
||||||
extendsFrom(configurations.compileClasspath.get())
|
extendsFrom(configurations.compileClasspath.get())
|
||||||
}
|
}
|
||||||
@@ -130,7 +_,18 @@
|
@@ -129,7 +_,19 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
- implementation(project(":paper-api"))
|
- implementation(project(":paper-api"))
|
||||||
+ implementation(project(":leaves-api")) // Leaves - build change
|
+ implementation(project(":leaves-api")) // Leaves - build change
|
||||||
|
+ implementation("commons-lang:commons-lang:2.6") // Leaves - build change
|
||||||
+ // Leaves start - linear
|
+ // Leaves start - linear
|
||||||
+ implementation("com.github.luben:zstd-jni:1.5.4-1")
|
+ implementation("com.github.luben:zstd-jni:1.5.4-1")
|
||||||
+ implementation("org.lz4:lz4-java:1.8.0")
|
+ implementation("org.lz4:lz4-java:1.8.0")
|
||||||
@@ -94,18 +100,15 @@
|
|||||||
implementation("ca.spottedleaf:concurrentutil:0.0.3")
|
implementation("ca.spottedleaf:concurrentutil:0.0.3")
|
||||||
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
|
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
|
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
|
||||||
@@ -157,9 +_,9 @@
|
@@ -157,7 +_,6 @@
|
||||||
implementation("org.ow2.asm:asm-commons:9.8")
|
implementation("org.spongepowered:configurate-yaml:4.2.0")
|
||||||
implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199")
|
|
||||||
implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot.
|
|
||||||
+ implementation("commons-lang:commons-lang:2.6") // Leaves
|
|
||||||
|
|
||||||
// Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed
|
// Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed
|
||||||
- runtimeOnly("commons-lang:commons-lang:2.6")
|
- runtimeOnly("commons-lang:commons-lang:2.6")
|
||||||
runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0")
|
runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0")
|
||||||
runtimeOnly("com.mysql:mysql-connector-j:9.2.0")
|
runtimeOnly("com.mysql:mysql-connector-j:9.2.0")
|
||||||
runtimeOnly("com.lmax:disruptor:3.4.4")
|
runtimeOnly("com.lmax:disruptor:3.4.4")
|
||||||
@@ -194,6 +_,16 @@
|
@@ -188,26 +_,36 @@
|
||||||
implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1")
|
implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,7 +125,13 @@
|
|||||||
tasks.jar {
|
tasks.jar {
|
||||||
manifest {
|
manifest {
|
||||||
val git = Git(rootProject.layout.projectDirectory.path)
|
val git = Git(rootProject.layout.projectDirectory.path)
|
||||||
@@ -206,14 +_,14 @@
|
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 = 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"
|
||||||
|
val date = git.exec(providers, "show", "-s", "--format=%ci", gitHash).get().trim()
|
||||||
val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim()
|
val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim()
|
||||||
attributes(
|
attributes(
|
||||||
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
||||||
@@ -142,16 +151,27 @@
|
|||||||
"Build-Number" to (build ?: ""),
|
"Build-Number" to (build ?: ""),
|
||||||
"Build-Time" to buildTime.toString(),
|
"Build-Time" to buildTime.toString(),
|
||||||
"Git-Branch" to gitBranch,
|
"Git-Branch" to gitBranch,
|
||||||
@@ -267,7 +_,7 @@
|
@@ -266,7 +_,7 @@
|
||||||
jvmArgumentProviders.add(provider)
|
jvmArgumentProviders.add(provider)
|
||||||
}
|
}
|
||||||
|
|
||||||
-val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath()
|
-val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath()
|
||||||
+val generatedDir: java.nio.file.Path = rootProject.layout.projectDirectory.dir("paper-server/src/generated/java").asFile.toPath()
|
+val generatedDir: java.nio.file.Path = rootProject.layout.projectDirectory.dir("paper-server/src/generated/java").asFile.toPath() // Leaves - build change
|
||||||
idea {
|
idea {
|
||||||
module {
|
module {
|
||||||
generatedSourceDirs.add(generatedDir.toFile())
|
generatedSourceDirs.add(generatedDir.toFile())
|
||||||
@@ -360,13 +_,26 @@
|
@@ -315,6 +_,10 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
args("--nogui")
|
||||||
|
+ systemProperty("stdout.encoding", "UTF-8") // Leaves - fix utf8
|
||||||
|
+ systemProperty("stderr.encoding", "UTF-8") // Leaves - fix utf8
|
||||||
|
+ systemProperty("net.kyori.ansi.colorLevel", "truecolor") // Leaves - fix utf8
|
||||||
|
+ systemProperty("terminal.jline", true) // Leaves - fix utf8
|
||||||
|
systemProperty("net.kyori.adventure.text.warnWhenLegacyFormattingDetected", true)
|
||||||
|
if (providers.gradleProperty("paper.runDisableWatchdog").getOrElse("false") == "true") {
|
||||||
|
systemProperty("disable.watchdog", true)
|
||||||
|
@@ -359,30 +_,26 @@
|
||||||
classpath(tasks.createReobfBundlerJar.flatMap { it.outputZip })
|
classpath(tasks.createReobfBundlerJar.flatMap { it.outputZip })
|
||||||
mainClass.set(null as String?)
|
mainClass.set(null as String?)
|
||||||
}
|
}
|
||||||
@@ -165,6 +185,23 @@
|
|||||||
- classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip })
|
- classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip })
|
||||||
- mainClass.set(null as String?)
|
- mainClass.set(null as String?)
|
||||||
-}
|
-}
|
||||||
|
-
|
||||||
|
-fill {
|
||||||
|
- project("paper")
|
||||||
|
- versionFamily(paperweight.minecraftVersion.map { it.split(".", "-").takeWhile { part -> part.toIntOrNull() != null }.take(2).joinToString(".") })
|
||||||
|
- version(paperweight.minecraftVersion)
|
||||||
|
-
|
||||||
|
- build {
|
||||||
|
- channel = BuildChannel.STABLE
|
||||||
|
-
|
||||||
|
- downloads {
|
||||||
|
- register("server:default") {
|
||||||
|
- file = tasks.createMojmapPaperclipJar.flatMap { it.outputZip }
|
||||||
|
- nameResolver.set { project, _, version, build -> "$project-$version-$build.jar" }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-}
|
||||||
+
|
+
|
||||||
+// Leaves start - build change
|
+// Leaves start - build change
|
||||||
+tasks.registerRunTask("runLeavesclip") {
|
+tasks.registerRunTask("runLeavesclip") {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Build changes
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/ca/spottedleaf/moonrise/paper/PaperHooks.java b/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
diff --git a/ca/spottedleaf/moonrise/paper/PaperHooks.java b/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
||||||
index b9b774a3ca600cee3d0e967063ea2f72c7ab184f..dfc582444cd7273afb78b250d9fa12317591d8aa 100644
|
index 42899a91b9061b85985fbbd0de4032c757f4aa8f..a93f00d1a64e4deb9b89435bab258f3bad487e2f 100644
|
||||||
--- a/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
--- a/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
||||||
+++ b/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
+++ b/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
||||||
@@ -29,7 +29,7 @@ import net.minecraft.world.phys.AABB;
|
@@ -29,7 +29,7 @@ import net.minecraft.world.phys.AABB;
|
||||||
@@ -15,13 +15,13 @@ index b9b774a3ca600cee3d0e967063ea2f72c7ab184f..dfc582444cd7273afb78b250d9fa1231
|
|||||||
-public final class PaperHooks extends BaseChunkSystemHooks implements PlatformHooks {
|
-public final class PaperHooks extends BaseChunkSystemHooks implements PlatformHooks {
|
||||||
+public class PaperHooks extends BaseChunkSystemHooks implements PlatformHooks { // Leaves - not final
|
+public class PaperHooks extends BaseChunkSystemHooks implements PlatformHooks { // Leaves - not final
|
||||||
|
|
||||||
@Override
|
private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger();
|
||||||
public String getBrand() {
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index f1373fd5fdebb9f4600ba7f32a5df6188de3a0e9..4e5b27f2d00a6be6da6db461471395a515dc9b38 100644
|
index 7aac2a6889af3edaebfaf94deecbf00d00758b68..d2895962ad3879632ff7a33eb3ce656097aebaec 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1190,7 +1190,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1193,7 +1193,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
LOGGER.info("*************************************************************************************");
|
LOGGER.info("*************************************************************************************");
|
||||||
LOGGER.info("This is the first time you're starting this server.");
|
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.");
|
LOGGER.info("It's recommended you read our 'Getting Started' documentation for guidance.");
|
||||||
@@ -30,7 +30,7 @@ index f1373fd5fdebb9f4600ba7f32a5df6188de3a0e9..4e5b27f2d00a6be6da6db461471395a5
|
|||||||
LOGGER.info("*************************************************************************************");
|
LOGGER.info("*************************************************************************************");
|
||||||
}
|
}
|
||||||
// Paper end - Add onboarding message for initial server start
|
// Paper end - Add onboarding message for initial server start
|
||||||
@@ -1853,7 +1853,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1855,7 +1855,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
public String getServerModName() {
|
public String getServerModName() {
|
||||||
@@ -40,7 +40,7 @@ index f1373fd5fdebb9f4600ba7f32a5df6188de3a0e9..4e5b27f2d00a6be6da6db461471395a5
|
|||||||
|
|
||||||
public SystemReport fillSystemReport(SystemReport systemReport) {
|
public SystemReport fillSystemReport(SystemReport systemReport) {
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..c22234df51a61954d1728b8406545f753dd8a3c2 100644
|
index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..461dc90ac9ae7f9af693653bc56a8cf448b7823e 100644
|
||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -182,9 +182,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -182,9 +182,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
|||||||
@@ -5,50 +5,81 @@ Subject: [PATCH] Leaves Utils
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||||
index 81a18b8e605bd4c28b48a32c80be231609182970..f8d45c1076852a0553c3dd7c5512f76a6891e2cb 100644
|
index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..ea616ff83c14dd582bdb49442bc0b9103fc8f1b3 100644
|
||||||
--- a/net/minecraft/world/entity/Entity.java
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -351,6 +351,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -372,6 +372,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
public boolean isTemporarilyActive;
|
public boolean isTemporarilyActive;
|
||||||
public long activatedImmunityTick = Integer.MIN_VALUE;
|
public long activatedImmunityTick = Integer.MIN_VALUE;
|
||||||
|
|
||||||
+ private CompoundTag leavesData = new CompoundTag(); // Leaves - Leaves ex data
|
+ private net.minecraft.nbt.CompoundTag leavesData = new net.minecraft.nbt.CompoundTag(); // Leaves - Leaves ex data
|
||||||
+
|
+
|
||||||
public void inactiveTick() {
|
public void inactiveTick() {
|
||||||
}
|
}
|
||||||
// Paper end - EAR 2
|
// Paper end - EAR 2
|
||||||
@@ -2516,6 +2518,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -2585,6 +2587,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
compound.putBoolean("Paper.FreezeLock", true);
|
output.putBoolean("Paper.FreezeLock", true);
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
+ compound.put("Leaves.Data", leavesData); // Leaves - leaves ex data
|
+ output.store("Leaves.Data", net.minecraft.nbt.CompoundTag.CODEC, leavesData); // Leaves - leaves ex data
|
||||||
return compound;
|
} catch (Throwable var7) {
|
||||||
} catch (Throwable var8) {
|
CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT");
|
||||||
CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT");
|
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved");
|
||||||
@@ -2646,6 +2649,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -2705,6 +2708,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false);
|
|
||||||
}
|
}
|
||||||
|
freezeLocked = input.getBooleanOr("Paper.FreezeLock", false);
|
||||||
// Paper end
|
// Paper end
|
||||||
+ // Leaves start - leaves ex data
|
+ leavesData = input.read("Leaves.Data", net.minecraft.nbt.CompoundTag.CODEC).orElse(new net.minecraft.nbt.CompoundTag());
|
||||||
+ if (compound.contains("Leaves.Data")) {
|
} catch (Throwable var7) {
|
||||||
+ leavesData = compound.getCompoundOrEmpty("Leaves.Data");
|
CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT");
|
||||||
+ }
|
|
||||||
+ // Leaves end - leaves ex data
|
|
||||||
} catch (Throwable var8) {
|
|
||||||
CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT");
|
|
||||||
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded");
|
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded");
|
||||||
@@ -5114,4 +5122,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -4422,7 +4426,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
|
return SlotAccess.NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- @Nullable
|
||||||
|
+ @org.jetbrains.annotations.NotNull // Leaves - notnull
|
||||||
|
public MinecraftServer getServer() {
|
||||||
|
return this.level().getServer();
|
||||||
|
}
|
||||||
|
@@ -5364,4 +5368,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition());
|
return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition());
|
||||||
}
|
}
|
||||||
// Paper end - Expose entity id counter
|
// Paper end - Expose entity id counter
|
||||||
+ // Leaves start - leaves ex data
|
+ // Leaves start - leaves ex data
|
||||||
+ public CompoundTag getLeavesData() {
|
+ public net.minecraft.nbt.CompoundTag getLeavesData() {
|
||||||
+ return leavesData;
|
+ return leavesData;
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - leaves ex data
|
+ // 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
|
||||||
|
--- 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
|
||||||
|
return this.isClientSide;
|
||||||
|
}
|
||||||
|
|
||||||
|
- @Nullable
|
||||||
|
+ @org.jetbrains.annotations.NotNull // Leaves - notnull
|
||||||
|
@Override
|
||||||
|
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
|
||||||
|
--- 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
|
||||||
|
|
||||||
|
DifficultyInstance getCurrentDifficultyAt(BlockPos pos);
|
||||||
|
|
||||||
|
- @Nullable
|
||||||
|
+ @org.jetbrains.annotations.NotNull // Leaves - notnull
|
||||||
|
MinecraftServer getServer();
|
||||||
|
|
||||||
|
default Difficulty getDifficulty() {
|
||||||
diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java
|
diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java
|
||||||
index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..f289e37f77e1c9d3b0f6c29da1b99f0d5f156e37 100644
|
index be6f37f91569c659c609e5e8d38671ca86f8cd95..958914e40fceda5d67a98154817b4c5ce478a62d 100644
|
||||||
--- a/net/minecraft/world/level/block/Block.java
|
--- a/net/minecraft/world/level/block/Block.java
|
||||||
+++ b/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 {
|
@@ -610,6 +610,13 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||||
|
|||||||
@@ -32,30 +32,11 @@ index fb263fa1f30a7dfcb7ec2656abfb38e5fe88eac9..56fd1ed7ccaf96e7eedea60fbdbf7f93
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/network/protocol/common/custom/DiscardedPayload.java b/net/minecraft/network/protocol/common/custom/DiscardedPayload.java
|
|
||||||
index 62b9d9486c15a1ec6527f786df4e9fc483390bcb..5384bbc6bb3dbe5481f9d8cb10282551a0f78ec1 100644
|
|
||||||
--- a/net/minecraft/network/protocol/common/custom/DiscardedPayload.java
|
|
||||||
+++ b/net/minecraft/network/protocol/common/custom/DiscardedPayload.java
|
|
||||||
@@ -4,12 +4,12 @@ import net.minecraft.network.FriendlyByteBuf;
|
|
||||||
import net.minecraft.network.codec.StreamCodec;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
|
|
||||||
-public record DiscardedPayload(ResourceLocation id, byte[] data) implements CustomPacketPayload { // Paper - store data
|
|
||||||
+public record DiscardedPayload(ResourceLocation id, byte @org.jetbrains.annotations.Nullable [] data) implements CustomPacketPayload { // Paper - store data // Leaves - nullable
|
|
||||||
public static <T extends FriendlyByteBuf> StreamCodec<T, DiscardedPayload> codec(ResourceLocation id, int maxSize) {
|
|
||||||
return CustomPacketPayload.codec((value, output) -> {
|
|
||||||
// Paper start
|
|
||||||
// Always write data
|
|
||||||
- output.writeBytes(value.data);
|
|
||||||
+ if (value.data != null) output.writeBytes(value.data); // Leaves - nullable
|
|
||||||
}, buffer -> {
|
|
||||||
int i = buffer.readableBytes();
|
|
||||||
if (i >= 0 && i <= maxSize) {
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 4e5b27f2d00a6be6da6db461471395a515dc9b38..d48581353661799e5e031a512227d5e651fa2996 100644
|
index d2895962ad3879632ff7a33eb3ce656097aebaec..4e2e84bbd389d926b8e6f45f2e37c80f4df1af41 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1742,6 +1742,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1744,6 +1744,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|
||||||
profilerFiller.popPush("server gui refresh");
|
profilerFiller.popPush("server gui refresh");
|
||||||
|
|
||||||
@@ -64,83 +45,108 @@ index 4e5b27f2d00a6be6da6db461471395a515dc9b38..d48581353661799e5e031a512227d5e6
|
|||||||
for (int i = 0; i < this.tickables.size(); i++) {
|
for (int i = 0; i < this.tickables.size(); i++) {
|
||||||
this.tickables.get(i).run();
|
this.tickables.get(i).run();
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..443bfb06951f0ffe6af8724b53e150cd0907e68d 100644
|
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
@@ -425,6 +425,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
|
||||||
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
|
||||||
private final ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.ViewDistanceHolder viewDistanceHolder = new ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.ViewDistanceHolder();
|
|
||||||
|
|
||||||
+ public net.minecraft.network.Connection internalConnection; // Leaves - protocol core
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public final boolean moonrise$isRealPlayer() {
|
|
||||||
return this.isRealPlayer;
|
|
||||||
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||||
index 186393485396cfe9b1baef29586198356e2d2600..ac5ef04fae4bc19bae9007c0ffd8f688434d22d7 100644
|
index 08c59d603fca038fc2dde36384eea1b6c971e659..2dd95aca955f19ce48be35b1ca9bcc94c3a1984d 100644
|
||||||
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||||
@@ -136,6 +136,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
@@ -57,6 +57,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||||
|
public @Nullable String playerBrand;
|
||||||
|
public final java.util.Set<String> pluginMessagerChannels;
|
||||||
|
// Paper end - retain certain values
|
||||||
|
+ public final GameProfile profile; // Leaves - protocol core
|
||||||
|
|
||||||
|
public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie) {
|
||||||
|
this.server = server;
|
||||||
|
@@ -70,6 +71,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||||
|
this.pluginMessagerChannels = cookie.channels();
|
||||||
|
this.keepAlive = cookie.keepAlive();
|
||||||
|
// Paper end
|
||||||
|
+ this.profile = cookie.gameProfile(); // Leaves - protocol core
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper start - configuration phase API
|
||||||
|
@@ -149,6 +151,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
|
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
|
||||||
+ // Leaves start - protocol
|
+ // Leaves start - protocol
|
||||||
+ if (packet.payload() instanceof org.leavesmc.leaves.protocol.core.LeavesCustomPayload leavesPayload) {
|
+ if (packet.payload() instanceof org.leavesmc.leaves.protocol.core.LeavesCustomPayload leavesPayload) {
|
||||||
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePayload(player, leavesPayload);
|
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePayload(org.leavesmc.leaves.protocol.core.ProtocolUtils.createSelector(this), leavesPayload);
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.DiscardedPayload(net.minecraft.resources.ResourceLocation id, byte[] data)) {
|
+ if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.DiscardedPayload(net.minecraft.resources.ResourceLocation id, byte[] data)) {
|
||||||
+ if (org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleBytebuf(player, id, io.netty.buffer.Unpooled.wrappedBuffer(data))) {
|
+ if (org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleBytebuf(org.leavesmc.leaves.protocol.core.ProtocolUtils.createSelector(this), id, io.netty.buffer.Unpooled.wrappedBuffer(data))) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - protocol
|
+ // Leaves end - protocol
|
||||||
+
|
+
|
||||||
// Paper start
|
// Paper start
|
||||||
if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.BrandPayload(String brand)) {
|
if (!(packet.payload() instanceof final net.minecraft.network.protocol.common.custom.DiscardedPayload discardedPayload)) {
|
||||||
this.player.clientBrandName = brand;
|
return;
|
||||||
@@ -189,6 +201,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
@@ -208,10 +222,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||||
final String channel = new String(data, from, length, java.nio.charset.StandardCharsets.US_ASCII);
|
final String channel = new String(data, from, length, java.nio.charset.StandardCharsets.US_ASCII);
|
||||||
if (register) {
|
if (register) {
|
||||||
this.getCraftPlayer().addChannel(channel);
|
bridge.addChannel(channel);
|
||||||
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleMinecraftRegister(channel, player); // Leaves - protocol
|
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleMinecraftRegister(channel, org.leavesmc.leaves.protocol.core.ProtocolUtils.createSelector(this)); // Leaves - protocol
|
||||||
} else {
|
} else {
|
||||||
this.getCraftPlayer().removeChannel(channel);
|
bridge.removeChannel(channel);
|
||||||
}
|
}
|
||||||
|
- // Paper end
|
||||||
|
+ // Paper end
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@@ -379,9 +394,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(
|
||||||
|
- player.getBukkitEntity(),
|
||||||
|
- io.papermc.paper.adventure.PaperAdventure.asAdventure(disconnectionDetails.reason()),
|
||||||
|
- rawLeaveMessage, cause
|
||||||
|
+ player.getBukkitEntity(),
|
||||||
|
+ io.papermc.paper.adventure.PaperAdventure.asAdventure(disconnectionDetails.reason()),
|
||||||
|
+ rawLeaveMessage, cause
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
@@ -414,10 +429,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||||
|
|
||||||
|
private void disconnect0(DisconnectionDetails disconnectionDetails) {
|
||||||
|
this.connection
|
||||||
|
- .send(
|
||||||
|
- new ClientboundDisconnectPacket(disconnectionDetails.reason()),
|
||||||
|
- PacketSendListener.thenRun(() -> this.connection.disconnect(disconnectionDetails))
|
||||||
|
- );
|
||||||
|
+ .send(
|
||||||
|
+ new ClientboundDisconnectPacket(disconnectionDetails.reason()),
|
||||||
|
+ PacketSendListener.thenRun(() -> this.connection.disconnect(disconnectionDetails))
|
||||||
|
+ );
|
||||||
|
this.onDisconnect(disconnectionDetails);
|
||||||
|
this.connection.setReadOnly();
|
||||||
|
// CraftBukkit - Don't wait
|
||||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||||
index 9ca3c55a3b5b1a532b86b08eb92460df4cb54f2a..722b4eb1eabe167233f75bd50bbf47e369670eaa 100644
|
index 2c2015bf19d5b30e945118661b7a9b474a1bddc8..87d6495738d27b2cc9ea8d5b402b7c222f624a5b 100644
|
||||||
--- a/net/minecraft/server/players/PlayerList.java
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -334,6 +334,11 @@ public abstract class PlayerList {
|
@@ -335,6 +335,8 @@ public abstract class PlayerList {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Leaves start - protocol core
|
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player);
|
||||||
+ if (player.internalConnection == null) player.internalConnection = connection;
|
|
||||||
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player);
|
|
||||||
+ // Leaves end - protocol core
|
|
||||||
+
|
+
|
||||||
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
|
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
|
||||||
|
|
||||||
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
|
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
|
||||||
@@ -504,6 +509,7 @@ public abstract class PlayerList {
|
@@ -507,6 +509,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())));
|
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) {
|
public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) {
|
||||||
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerLeave(player); // Leaves - protocol
|
+ org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerLeave(player); // Leaves - protocol
|
||||||
// Paper end - Fix kick event leave message not being sent
|
// Paper end - Fix kick event leave message not being sent
|
||||||
ServerLevel serverLevel = player.serverLevel();
|
ServerLevel serverLevel = player.level();
|
||||||
player.awardStat(Stats.LEAVE_GAME);
|
player.awardStat(Stats.LEAVE_GAME);
|
||||||
@@ -628,6 +634,7 @@ public abstract class PlayerList {
|
@@ -1398,6 +1401,7 @@ public abstract class PlayerList {
|
||||||
SocketAddress socketAddress = loginlistener.connection.getRemoteAddress();
|
|
||||||
|
|
||||||
ServerPlayer entity = new ServerPlayer(this.server, this.server.getLevel(Level.OVERWORLD), gameProfile, ClientInformation.createDefault());
|
|
||||||
+ entity.internalConnection = loginlistener.connection; // Leaves - protocol core
|
|
||||||
entity.transferCookieConnection = loginlistener;
|
|
||||||
org.bukkit.entity.Player player = entity.getBukkitEntity();
|
|
||||||
org.bukkit.event.player.PlayerLoginEvent event = new org.bukkit.event.player.PlayerLoginEvent(player, loginlistener.connection.hostname, ((java.net.InetSocketAddress) socketAddress).getAddress(), ((java.net.InetSocketAddress) loginlistener.connection.channel.remoteAddress()).getAddress());
|
|
||||||
@@ -1418,6 +1425,7 @@ public abstract class PlayerList {
|
|
||||||
serverPlayer.connection.send(clientboundUpdateRecipesPacket);
|
serverPlayer.connection.send(clientboundUpdateRecipesPacket);
|
||||||
serverPlayer.getRecipeBook().sendInitialRecipeBook(serverPlayer);
|
serverPlayer.getRecipeBook().sendInitialRecipeBook(serverPlayer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..4797e001122097f55f33729b3b20f79d75b20fb2 100644
|
index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..364d5e28646ea341034921622354c7b19644b343 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -2674,7 +2674,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2727,7 +2727,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
// Spigot start
|
// Spigot start
|
||||||
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
|
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
|
// Paper start - Fix merchant inventory not closing on entity removal
|
||||||
@@ -17,6 +17,19 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..4797e001122097f55f33729b3b20f79d
|
|||||||
merchant.getTrader().closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED);
|
merchant.getTrader().closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED);
|
||||||
}
|
}
|
||||||
// Paper end - Fix merchant inventory not closing on entity removal
|
// 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
|
||||||
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
|
@@ -551,7 +551,7 @@ public abstract class PlayerList {
|
||||||
|
player.stopRiding();
|
||||||
|
rootVehicle.getPassengersAndSelf().forEach(entity -> {
|
||||||
|
// Paper start - Fix villager boat exploit
|
||||||
|
- if (entity instanceof net.minecraft.world.entity.npc.AbstractVillager villager) {
|
||||||
|
+ if (!org.leavesmc.leaves.LeavesConfig.modify.oldMC.voidTrade && entity instanceof net.minecraft.world.entity.npc.AbstractVillager villager) { // Leaves - Configurable trading with the void
|
||||||
|
final net.minecraft.world.entity.player.Player human = villager.getTradingPlayer();
|
||||||
|
if (human != null) {
|
||||||
|
villager.setTradingPlayer(null);
|
||||||
diff --git a/net/minecraft/world/inventory/MerchantMenu.java b/net/minecraft/world/inventory/MerchantMenu.java
|
diff --git a/net/minecraft/world/inventory/MerchantMenu.java b/net/minecraft/world/inventory/MerchantMenu.java
|
||||||
index d59f67ffe34201c63e3d9706a4434f33b6732edb..1bf2a015fa35981328c098f2fec363c84b85b2a7 100644
|
index d59f67ffe34201c63e3d9706a4434f33b6732edb..1bf2a015fa35981328c098f2fec363c84b85b2a7 100644
|
||||||
--- a/net/minecraft/world/inventory/MerchantMenu.java
|
--- a/net/minecraft/world/inventory/MerchantMenu.java
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Leaves Fakeplayer
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java b/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
|
diff --git a/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java b/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
|
||||||
index 4b2ae046413146b11912e7aa4a9a3d643de6afd1..c5733fe17b4dd5dfe4bce461a305a13a188b2f77 100644
|
index a82d84283632342bd30bc3449983431ba43583e0..f59526f6bfa1b4af5b474f0b438513c96afb491c 100644
|
||||||
--- a/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
|
--- a/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
|
||||||
+++ b/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
|
+++ b/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
|
||||||
@@ -39,6 +39,7 @@ public abstract class SimpleCriterionTrigger<T extends SimpleCriterionTrigger.Si
|
@@ -39,6 +39,7 @@ public abstract class SimpleCriterionTrigger<T extends SimpleCriterionTrigger.Si
|
||||||
@@ -17,7 +17,7 @@ index 4b2ae046413146b11912e7aa4a9a3d643de6afd1..c5733fe17b4dd5dfe4bce461a305a13a
|
|||||||
Set<CriterionTrigger.Listener<T>> set = (Set) advancements.criterionData.get(this); // Paper - fix PlayerAdvancements leak
|
Set<CriterionTrigger.Listener<T>> set = (Set) advancements.criterionData.get(this); // Paper - fix PlayerAdvancements leak
|
||||||
if (set != null && !set.isEmpty()) {
|
if (set != null && !set.isEmpty()) {
|
||||||
diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java
|
diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java
|
||||||
index 4ed9611994c5c8da01fede690197527c5b3a5731..364ddf9f25ef3cb97ba788c469fee9dd495b84a7 100644
|
index 41005f6b9f53a9c1125ad5e08538d9f5aacb3571..3e9b8c5fb2157f767de8bddc3e767512c5f7651f 100644
|
||||||
--- a/net/minecraft/network/Connection.java
|
--- a/net/minecraft/network/Connection.java
|
||||||
+++ b/net/minecraft/network/Connection.java
|
+++ b/net/minecraft/network/Connection.java
|
||||||
@@ -96,7 +96,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
|
@@ -96,7 +96,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
|
||||||
@@ -30,28 +30,19 @@ index 4ed9611994c5c8da01fede690197527c5b3a5731..364ddf9f25ef3cb97ba788c469fee9dd
|
|||||||
private DisconnectionDetails disconnectionDetails;
|
private DisconnectionDetails disconnectionDetails;
|
||||||
private boolean encrypted;
|
private boolean encrypted;
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index d48581353661799e5e031a512227d5e651fa2996..b0881eaf3484560740d2d53b3957cf3f4d829360 100644
|
index 4e2e84bbd389d926b8e6f45f2e37c80f4df1af41..83b81e990fccebad35c67712d0d497537c4e3670 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -303,6 +303,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -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
|
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
|
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
|
||||||
|
|
||||||
+ private org.leavesmc.leaves.bot.BotList botList; // Leaves - fakeplayer
|
+ private org.leavesmc.leaves.bot.BotList botList; // Leaves - fakeplayer
|
||||||
+
|
+
|
||||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
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<>();
|
AtomicReference<S> atomicReference = new AtomicReference<>();
|
||||||
Thread thread = new ca.spottedleaf.moonrise.common.util.TickThread(() -> atomicReference.get().runServer(), "Server thread");
|
@@ -996,6 +998,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -738,6 +740,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
||||||
}
|
|
||||||
// Paper end - Configurable player collision
|
|
||||||
|
|
||||||
+ this.getBotList().loadResume(); // Leaves - load resident bot
|
|
||||||
+
|
|
||||||
this.server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD);
|
|
||||||
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
|
|
||||||
this.server.spark.enableAfterPlugins(this.server); // Paper - spark
|
|
||||||
@@ -993,6 +997,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
||||||
|
|
||||||
LOGGER.info("Stopping server");
|
LOGGER.info("Stopping server");
|
||||||
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
|
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
|
||||||
@@ -59,7 +50,7 @@ index d48581353661799e5e031a512227d5e651fa2996..b0881eaf3484560740d2d53b3957cf3f
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
if (this.server != null) {
|
if (this.server != null) {
|
||||||
this.server.spark.disable(); // Paper - spark
|
this.server.spark.disable(); // Paper - spark
|
||||||
@@ -1760,6 +1765,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1762,6 +1765,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|
||||||
public void tickConnection() {
|
public void tickConnection() {
|
||||||
this.getConnection().tick();
|
this.getConnection().tick();
|
||||||
@@ -67,7 +58,7 @@ index d48581353661799e5e031a512227d5e651fa2996..b0881eaf3484560740d2d53b3957cf3f
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void synchronizeTime(ServerLevel level) {
|
private void synchronizeTime(ServerLevel level) {
|
||||||
@@ -2805,6 +2811,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -2811,6 +2815,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,10 +76,10 @@ index d48581353661799e5e031a512227d5e651fa2996..b0881eaf3484560740d2d53b3957cf3f
|
|||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java
|
diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java
|
||||||
index 52e0ae233a7b1c88bfbbc27707ef5f18453ec865..f56a3fb47aa34c39cbd0e0e4e47d924da1488d7a 100644
|
index fdeca41d40705f28864ce4443d01cd872c9d51b0..5c0e338dc1b0eb5724d10a73d6fc7975f9d2e5e5 100644
|
||||||
--- a/net/minecraft/server/PlayerAdvancements.java
|
--- a/net/minecraft/server/PlayerAdvancements.java
|
||||||
+++ b/net/minecraft/server/PlayerAdvancements.java
|
+++ b/net/minecraft/server/PlayerAdvancements.java
|
||||||
@@ -168,6 +168,11 @@ public class PlayerAdvancements {
|
@@ -167,6 +167,11 @@ public class PlayerAdvancements {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean award(AdvancementHolder advancement, String criterionKey) {
|
public boolean award(AdvancementHolder advancement, String criterionKey) {
|
||||||
@@ -101,7 +92,7 @@ index 52e0ae233a7b1c88bfbbc27707ef5f18453ec865..f56a3fb47aa34c39cbd0e0e4e47d924d
|
|||||||
AdvancementProgress orStartProgress = this.getOrStartProgress(advancement);
|
AdvancementProgress orStartProgress = this.getOrStartProgress(advancement);
|
||||||
boolean isDone = orStartProgress.isDone();
|
boolean isDone = orStartProgress.isDone();
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 4924acb972ee2c9d5d1aa32e4969d4932629273b..e56f26fc504538d88bfa1954e929ee44fd31d657 100644
|
index 414a8357a7498c69341fa634ada2e664e18ca03a..f85993fc507d699728e058b12bb49dcb7aaea44b 100644
|
||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -162,6 +162,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -162,6 +162,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
@@ -112,8 +103,16 @@ index 4924acb972ee2c9d5d1aa32e4969d4932629273b..e56f26fc504538d88bfa1954e929ee44
|
|||||||
this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage));
|
this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage));
|
||||||
org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings"));
|
org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings"));
|
||||||
org.spigotmc.SpigotConfig.registerCommands();
|
org.spigotmc.SpigotConfig.registerCommands();
|
||||||
|
@@ -185,6 +186,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
|
||||||
|
|
||||||
|
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
|
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
||||||
index 0d8aefe8c886eaa4c33cbab53b0ad1c016f0531f..4785f9d6c53e18419a3df4a1be9c8a4f9d8cadfb 100644
|
index eb352aa4296abc3ed4cf31c590bc0be66daf4de3..019886669966c69936ae6591598c97a8afbfd3db 100644
|
||||||
--- a/net/minecraft/server/level/ChunkMap.java
|
--- a/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/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
|
@@ -1317,6 +1317,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
@@ -131,10 +130,10 @@ index 0d8aefe8c886eaa4c33cbab53b0ad1c016f0531f..4785f9d6c53e18419a3df4a1be9c8a4f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index 4797e001122097f55f33729b3b20f79d75b20fb2..9c32960a14916f3b032c6ae323d6efc9bdd9682c 100644
|
index 364d5e28646ea341034921622354c7b19644b343..c61c0b6d58f96955bfbdad0caaeb56f073a95181 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -211,6 +211,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -214,6 +214,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent
|
public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent
|
||||||
public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent
|
public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent
|
||||||
private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current)
|
private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current)
|
||||||
@@ -142,7 +141,7 @@ index 4797e001122097f55f33729b3b20f79d75b20fb2..9c32960a14916f3b032c6ae323d6efc9
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable LevelChunk getChunkIfLoaded(int x, int z) {
|
public @Nullable LevelChunk getChunkIfLoaded(int x, int z) {
|
||||||
@@ -671,6 +672,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -675,6 +676,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);
|
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
|
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
|
||||||
@@ -150,7 +149,7 @@ index 4797e001122097f55f33729b3b20f79d75b20fb2..9c32960a14916f3b032c6ae323d6efc9
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Paper start
|
// Paper start
|
||||||
@@ -2204,6 +2206,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2226,6 +2228,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
return this.players;
|
return this.players;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,7 +162,7 @@ index 4797e001122097f55f33729b3b20f79d75b20fb2..9c32960a14916f3b032c6ae323d6efc9
|
|||||||
@Override
|
@Override
|
||||||
public void updatePOIOnBlockStateChange(BlockPos pos, BlockState oldState, BlockState newState) {
|
public void updatePOIOnBlockStateChange(BlockPos pos, BlockState oldState, BlockState newState) {
|
||||||
Optional<Holder<PoiType>> optional = PoiTypes.forState(oldState);
|
Optional<Holder<PoiType>> optional = PoiTypes.forState(oldState);
|
||||||
@@ -2616,6 +2624,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2661,6 +2669,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
|
// 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) {
|
if (entity instanceof ServerPlayer serverPlayer) {
|
||||||
ServerLevel.this.players.add(serverPlayer);
|
ServerLevel.this.players.add(serverPlayer);
|
||||||
@@ -172,10 +171,10 @@ index 4797e001122097f55f33729b3b20f79d75b20fb2..9c32960a14916f3b032c6ae323d6efc9
|
|||||||
+ ServerLevel.this.realPlayers.add(serverPlayer);
|
+ ServerLevel.this.realPlayers.add(serverPlayer);
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - skip
|
+ // Leaves end - skip
|
||||||
ServerLevel.this.updateSleepingPlayerList();
|
if (serverPlayer.isReceivingWaypoints()) {
|
||||||
}
|
ServerLevel.this.getWaypointManager().addPlayer(serverPlayer);
|
||||||
|
}
|
||||||
@@ -2686,6 +2699,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2739,6 +2752,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
ServerLevel.this.getChunkSource().removeEntity(entity);
|
ServerLevel.this.getChunkSource().removeEntity(entity);
|
||||||
if (entity instanceof ServerPlayer serverPlayer) {
|
if (entity instanceof ServerPlayer serverPlayer) {
|
||||||
ServerLevel.this.players.remove(serverPlayer);
|
ServerLevel.this.players.remove(serverPlayer);
|
||||||
@@ -184,59 +183,59 @@ index 4797e001122097f55f33729b3b20f79d75b20fb2..9c32960a14916f3b032c6ae323d6efc9
|
|||||||
+ ServerLevel.this.realPlayers.remove(serverPlayer);
|
+ ServerLevel.this.realPlayers.remove(serverPlayer);
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - skip
|
+ // Leaves end - skip
|
||||||
|
ServerLevel.this.getWaypointManager().removePlayer(serverPlayer);
|
||||||
ServerLevel.this.updateSleepingPlayerList();
|
ServerLevel.this.updateSleepingPlayerList();
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 443bfb06951f0ffe6af8724b53e150cd0907e68d..01687ea3acf449c49cbc615887a7dbdd3a693613 100644
|
index 37c0a84758a1526791913898358659de202fa19f..7e4bf7ddc26fc087832f802856f14e268b0ca32b 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -208,7 +208,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -219,7 +219,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
private static final boolean DEFAULT_SPAWN_EXTRA_PARTICLES_ON_FALL = false;
|
private static final boolean DEFAULT_SPAWN_EXTRA_PARTICLES_ON_FALL = false;
|
||||||
public ServerGamePacketListenerImpl connection;
|
public ServerGamePacketListenerImpl connection;
|
||||||
public final MinecraftServer server;
|
private final MinecraftServer server;
|
||||||
- public final ServerPlayerGameMode gameMode;
|
- public final ServerPlayerGameMode gameMode;
|
||||||
+ public ServerPlayerGameMode gameMode; // Leaves - not final
|
+ public ServerPlayerGameMode gameMode; // Leaves - not final
|
||||||
private final PlayerAdvancements advancements;
|
private final PlayerAdvancements advancements;
|
||||||
private final ServerStatsCounter stats;
|
private final ServerStatsCounter stats;
|
||||||
private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE;
|
private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE;
|
||||||
@@ -1413,6 +1413,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -1450,6 +1450,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
this.lastSentHealth = -1.0F;
|
this.lastSentHealth = -1.0F;
|
||||||
this.lastSentFood = -1;
|
this.lastSentFood = -1;
|
||||||
|
this.teleportSpectators(teleportTransition, serverLevel);
|
||||||
+ // Leaves start - bot support
|
+ // Leaves start - bot support
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
|
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
|
||||||
+ this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(this, true)); // Leaves - render bot
|
+ this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(this, true)); // Leaves - render bot
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - bot support
|
+ // Leaves end - bot support
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), serverLevel.getWorld());
|
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/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||||
index 722b4eb1eabe167233f75bd50bbf47e369670eaa..0cf30681a9e3d68f3abe1d87b9fd4220083685a9 100644
|
index bd3cb8d68ac2940cd6f3b28a91c17ebc64147f2d..204c25d33e86a736f091848a277ea882f129e468 100644
|
||||||
--- a/net/minecraft/server/players/PlayerList.java
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -339,6 +339,19 @@ public abstract class PlayerList {
|
@@ -337,6 +337,19 @@ public abstract class PlayerList {
|
||||||
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player);
|
|
||||||
// Leaves end - protocol core
|
|
||||||
|
|
||||||
+ // Leaves start - bot support
|
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player);
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
|
|
||||||
+ org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName());
|
+ // Leaves start - bot support
|
||||||
+ if (bot != null) {
|
+ if (org.leavesmc.leaves.LeavesConfig.modify.fakeplayer.enable) {
|
||||||
+ this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false);
|
+ 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().bots.forEach(bot1 -> {
|
||||||
|
+ bot1.sendPlayerInfo(player);
|
||||||
|
+ bot1.sendFakeDataIfNeed(player, true);
|
||||||
|
+ }); // Leaves - render bot
|
||||||
+ }
|
+ }
|
||||||
+ this.server.getBotList().bots.forEach(bot1 -> {
|
+ // Leaves end - bot support
|
||||||
+ bot1.sendPlayerInfo(player);
|
|
||||||
+ bot1.sendFakeDataIfNeed(player, true);
|
|
||||||
+ }); // Leaves - render bot
|
|
||||||
+ }
|
|
||||||
+ // Leaves end - bot support
|
|
||||||
+
|
+
|
||||||
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
|
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
|
||||||
|
|
||||||
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
|
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
|
||||||
@@ -870,6 +883,12 @@ public abstract class PlayerList {
|
@@ -829,6 +842,12 @@ public abstract class PlayerList {
|
||||||
}
|
}
|
||||||
// Paper end - Add PlayerPostRespawnEvent
|
// Paper end - Add PlayerPostRespawnEvent
|
||||||
|
|
||||||
@@ -249,7 +248,7 @@ index 722b4eb1eabe167233f75bd50bbf47e369670eaa..0cf30681a9e3d68f3abe1d87b9fd4220
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
return serverPlayer;
|
return serverPlayer;
|
||||||
@@ -974,11 +993,16 @@ public abstract class PlayerList {
|
@@ -933,11 +952,16 @@ public abstract class PlayerList {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getPlayerNamesArray() {
|
public String[] getPlayerNamesArray() {
|
||||||
@@ -267,7 +266,7 @@ index 722b4eb1eabe167233f75bd50bbf47e369670eaa..0cf30681a9e3d68f3abe1d87b9fd4220
|
|||||||
|
|
||||||
return strings;
|
return strings;
|
||||||
}
|
}
|
||||||
@@ -1064,7 +1088,14 @@ public abstract class PlayerList {
|
@@ -1040,7 +1064,14 @@ public abstract class PlayerList {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public ServerPlayer getPlayerByName(String username) {
|
public ServerPlayer getPlayerByName(String username) {
|
||||||
@@ -283,7 +282,7 @@ index 722b4eb1eabe167233f75bd50bbf47e369670eaa..0cf30681a9e3d68f3abe1d87b9fd4220
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void broadcast(@Nullable Player except, double x, double y, double z, double radius, ResourceKey<Level> dimension, Packet<?> packet) {
|
public void broadcast(@Nullable Player except, double x, double y, double z, double radius, ResourceKey<Level> dimension, Packet<?> packet) {
|
||||||
@@ -1380,7 +1411,13 @@ public abstract class PlayerList {
|
@@ -1356,7 +1387,13 @@ public abstract class PlayerList {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public ServerPlayer getPlayer(UUID playerUUID) {
|
public ServerPlayer getPlayer(UUID playerUUID) {
|
||||||
@@ -298,11 +297,48 @@ index 722b4eb1eabe167233f75bd50bbf47e369670eaa..0cf30681a9e3d68f3abe1d87b9fd4220
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBypassPlayerLimit(GameProfile profile) {
|
public boolean canBypassPlayerLimit(GameProfile profile) {
|
||||||
|
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
|
||||||
|
+++ b/net/minecraft/server/waypoints/ServerWaypointManager.java
|
||||||
|
@@ -22,6 +22,11 @@ public class ServerWaypointManager implements WaypointManager<WaypointTransmitte
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void trackWaypoint(WaypointTransmitter waypoint) {
|
||||||
|
+ // Leaves start - fakeplayer
|
||||||
|
+ if (waypoint instanceof org.leavesmc.leaves.bot.ServerBot bot && !bot.getConfigValue(org.leavesmc.leaves.bot.agent.Configs.ENABLE_LOCATOR_BAR)) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ // Leaves end - fakeplayer
|
||||||
|
this.waypoints.add(waypoint);
|
||||||
|
|
||||||
|
for (ServerPlayer serverPlayer : this.players) {
|
||||||
|
@@ -53,6 +58,11 @@ public class ServerWaypointManager implements WaypointManager<WaypointTransmitte
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPlayer(ServerPlayer player) {
|
||||||
|
+ // Leaves start - fakeplayer
|
||||||
|
+ if (player instanceof org.leavesmc.leaves.bot.ServerBot) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ // Leaves end - fakeplayer
|
||||||
|
this.players.add(player);
|
||||||
|
|
||||||
|
for (WaypointTransmitter waypointTransmitter : this.waypoints) {
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||||
index f8d45c1076852a0553c3dd7c5512f76a6891e2cb..1f50aca05ff1adf8f2e16cab2fac757a7094e1b8 100644
|
index ea616ff83c14dd582bdb49442bc0b9103fc8f1b3..843cbeb5d125ff1964a9e2c5a29215c738a98f76 100644
|
||||||
--- a/net/minecraft/world/entity/Entity.java
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -1454,7 +1454,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -1173,7 +1173,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
|
|
||||||
|
BlockPos onPosLegacy = this.getOnPosLegacy();
|
||||||
|
BlockState blockState = this.level().getBlockState(onPosLegacy);
|
||||||
|
- if (this.isLocalInstanceAuthoritative()) {
|
||||||
|
+ if (this.isLocalInstanceAuthoritative() || this instanceof org.leavesmc.leaves.bot.ServerBot) { // Leaves - ServerBot needs check fall damage
|
||||||
|
this.checkFallDamage(vec3.y, this.onGround(), blockState, onPosLegacy);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1487,7 +1487,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paper start - optimise collisions
|
// Paper start - optimise collisions
|
||||||
@@ -312,10 +348,10 @@ index f8d45c1076852a0553c3dd7c5512f76a6891e2cb..1f50aca05ff1adf8f2e16cab2fac757a
|
|||||||
final boolean yZero = movement.y == 0.0;
|
final boolean yZero = movement.y == 0.0;
|
||||||
final boolean zZero = movement.z == 0.0;
|
final boolean zZero = movement.z == 0.0;
|
||||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||||
index 2046c4d3ad5ea3254ad6bc83e6437e5c237c92b6..2fe76bc1c26423ed5e39453ac1b27a2cc66b1f2e 100644
|
index 8f4c45fbea2d7c1317aff36031bb834b07b23a82..8ec6f52f58bcc985fdc758a692798a35d6c86378 100644
|
||||||
--- a/net/minecraft/world/entity/player/Player.java
|
--- a/net/minecraft/world/entity/player/Player.java
|
||||||
+++ b/net/minecraft/world/entity/player/Player.java
|
+++ b/net/minecraft/world/entity/player/Player.java
|
||||||
@@ -196,7 +196,7 @@ public abstract class Player extends LivingEntity {
|
@@ -205,7 +205,7 @@ public abstract class Player extends LivingEntity {
|
||||||
private int lastLevelUpTime;
|
private int lastLevelUpTime;
|
||||||
public GameProfile gameProfile;
|
public GameProfile gameProfile;
|
||||||
private boolean reducedDebugInfo;
|
private boolean reducedDebugInfo;
|
||||||
@@ -324,7 +360,7 @@ index 2046c4d3ad5ea3254ad6bc83e6437e5c237c92b6..2fe76bc1c26423ed5e39453ac1b27a2c
|
|||||||
private final ItemCooldowns cooldowns = this.createItemCooldowns();
|
private final ItemCooldowns cooldowns = this.createItemCooldowns();
|
||||||
private Optional<GlobalPos> lastDeathLocation = Optional.empty();
|
private Optional<GlobalPos> lastDeathLocation = Optional.empty();
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -362,6 +362,12 @@ public abstract class Player extends LivingEntity {
|
@@ -372,6 +372,12 @@ public abstract class Player extends LivingEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,7 +373,7 @@ index 2046c4d3ad5ea3254ad6bc83e6437e5c237c92b6..2fe76bc1c26423ed5e39453ac1b27a2c
|
|||||||
@Override
|
@Override
|
||||||
protected float getMaxHeadRotationRelativeToBody() {
|
protected float getMaxHeadRotationRelativeToBody() {
|
||||||
return this.isBlocking() ? 15.0F : super.getMaxHeadRotationRelativeToBody();
|
return this.isBlocking() ? 15.0F : super.getMaxHeadRotationRelativeToBody();
|
||||||
@@ -664,7 +670,7 @@ public abstract class Player extends LivingEntity {
|
@@ -674,7 +680,7 @@ public abstract class Player extends LivingEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,7 +382,7 @@ index 2046c4d3ad5ea3254ad6bc83e6437e5c237c92b6..2fe76bc1c26423ed5e39453ac1b27a2c
|
|||||||
entity.playerTouch(this);
|
entity.playerTouch(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1287,7 +1293,7 @@ public abstract class Player extends LivingEntity {
|
@@ -1299,7 +1305,7 @@ public abstract class Player extends LivingEntity {
|
||||||
this.sweepAttack();
|
this.sweepAttack();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,10 +392,10 @@ index 2046c4d3ad5ea3254ad6bc83e6437e5c237c92b6..2fe76bc1c26423ed5e39453ac1b27a2c
|
|||||||
boolean cancelled = false;
|
boolean cancelled = false;
|
||||||
org.bukkit.entity.Player player = (org.bukkit.entity.Player) target.getBukkitEntity();
|
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
|
diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
index ca5cd9354d53c6c05bd7ba50c6e1dbd1ed548f67..f82f37d498f99ce38f72a63d051721c6dab9f2ca 100644
|
index 5f3abbe943be394e9cb987945a238208940b5015..8c139d572bd3c44b8e2b6205e28ab09f82c9abfe 100644
|
||||||
--- a/net/minecraft/world/entity/projectile/FishingHook.java
|
--- a/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
+++ b/net/minecraft/world/entity/projectile/FishingHook.java
|
+++ b/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
@@ -55,7 +55,7 @@ public class FishingHook extends Projectile {
|
@@ -58,7 +58,7 @@ public class FishingHook extends Projectile {
|
||||||
public static final EntityDataAccessor<Integer> DATA_HOOKED_ENTITY = SynchedEntityData.defineId(FishingHook.class, EntityDataSerializers.INT);
|
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 static final EntityDataAccessor<Boolean> DATA_BITING = SynchedEntityData.defineId(FishingHook.class, EntityDataSerializers.BOOLEAN);
|
||||||
private int life;
|
private int life;
|
||||||
@@ -369,10 +405,10 @@ index ca5cd9354d53c6c05bd7ba50c6e1dbd1ed548f67..f82f37d498f99ce38f72a63d051721c6
|
|||||||
public int timeUntilHooked;
|
public int timeUntilHooked;
|
||||||
public float fishAngle;
|
public float fishAngle;
|
||||||
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
index 813417a09b4acc7d57e80a53d970767e230d75b1..2a4763c951ddc78c9d8a39e661e59bbffc5cf109 100644
|
index 96da9b8e3556e58365dc6742f44d6dfd608e2953..e5811924577fb04fd2d67fb4a32a9de1dbe3c7b1 100644
|
||||||
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
@@ -376,6 +376,7 @@ public abstract class AbstractContainerMenu {
|
@@ -400,6 +400,7 @@ public abstract class AbstractContainerMenu {
|
||||||
|
|
||||||
private void doClick(int slotId, int button, ClickType clickType, Player player) {
|
private void doClick(int slotId, int button, ClickType clickType, Player player) {
|
||||||
Inventory inventory = player.getInventory();
|
Inventory inventory = player.getInventory();
|
||||||
@@ -380,7 +416,7 @@ index 813417a09b4acc7d57e80a53d970767e230d75b1..2a4763c951ddc78c9d8a39e661e59bbf
|
|||||||
if (clickType == ClickType.QUICK_CRAFT) {
|
if (clickType == ClickType.QUICK_CRAFT) {
|
||||||
int i = this.quickcraftStatus;
|
int i = this.quickcraftStatus;
|
||||||
this.quickcraftStatus = getQuickcraftHeader(button);
|
this.quickcraftStatus = getQuickcraftHeader(button);
|
||||||
@@ -652,6 +653,22 @@ public abstract class AbstractContainerMenu {
|
@@ -674,6 +675,22 @@ public abstract class AbstractContainerMenu {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -404,10 +440,10 @@ index 813417a09b4acc7d57e80a53d970767e230d75b1..2a4763c951ddc78c9d8a39e661e59bbf
|
|||||||
FeatureFlagSet featureFlagSet = player.level().enabledFeatures();
|
FeatureFlagSet featureFlagSet = player.level().enabledFeatures();
|
||||||
return carriedItem.isItemEnabled(featureFlagSet) && carriedItem.overrideStackedOnOther(slot, action, player)
|
return carriedItem.isItemEnabled(featureFlagSet) && carriedItem.overrideStackedOnOther(slot, action, player)
|
||||||
diff --git a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
||||||
index 1669b76800756000a2f620610b3c8c8b6c48dd4a..8449545bd5278f5558567dd6b7c1522f63045f22 100644
|
index f1ce4cff1c03a0037ade2c8ef989cf327c973a7e..0976aef81b950a062152094501372d00c20bb2b7 100644
|
||||||
--- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
--- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
||||||
+++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
+++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
||||||
@@ -136,7 +136,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
|
@@ -135,7 +135,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,10 +482,10 @@ index bef794c3f58c41d910aa0bcc63fbdeea7225fddf..a601da588e6973cc5b87d3e3eeba49b5
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/level/storage/PlayerDataStorage.java b/net/minecraft/world/level/storage/PlayerDataStorage.java
|
diff --git a/net/minecraft/world/level/storage/PlayerDataStorage.java b/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||||
index ab9282c04c1996b037567d07f95e2b150bcfcd38..91f2e0abd1e6d5ad1613b8f750a900bfc39b2f9e 100644
|
index fe44d8d17d2622b3d6021c11579af85ef96737bb..0aae211dc2048f8cd14213c2a868394d1ed16070 100644
|
||||||
--- a/net/minecraft/world/level/storage/PlayerDataStorage.java
|
--- a/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||||
+++ b/net/minecraft/world/level/storage/PlayerDataStorage.java
|
+++ b/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||||
@@ -18,7 +18,7 @@ import net.minecraft.util.datafix.DataFixTypes;
|
@@ -19,7 +19,7 @@ import net.minecraft.util.datafix.DataFixTypes;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
|
||||||
index c1bd6d91cf9828ccc7275efe0f5c959c0f457c13..310e4bd5bd0c447adc70cff6d414f88be1966d04 100644
|
index b4a9be09452a889c228612a466b8925cb3768102..38442a054bbe87db8dcfab20147d19b2c758d225 100644
|
||||||
--- a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
|
--- a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
|
||||||
+++ b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
|
+++ b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
|
||||||
@@ -45,7 +45,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior {
|
@@ -45,7 +45,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior {
|
||||||
BlockPos blockPos = blockSource.pos().relative(blockSource.state().getValue(DispenserBlock.FACING));
|
BlockPos blockPos = blockSource.pos().relative(blockSource.state().getValue(DispenserBlock.FACING));
|
||||||
this.setSuccess(tryShearBeehive(serverLevel, blockPos) || tryShearLivingEntity(serverLevel, blockPos, item, bukkitBlock, craftItem)); // CraftBukkit
|
this.setSuccess(tryShearBeehive(serverLevel, blockPos) || tryShearEntity(serverLevel, blockPos, item, bukkitBlock, craftItem)); // CraftBukkit
|
||||||
if (this.isSuccess()) {
|
if (this.isSuccess()) {
|
||||||
- item.hurtAndBreak(1, serverLevel, null, item1 -> {});
|
- 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
|
+ 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
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Redstone Shears Wrench
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/item/ShearsItem.java b/net/minecraft/world/item/ShearsItem.java
|
diff --git a/net/minecraft/world/item/ShearsItem.java b/net/minecraft/world/item/ShearsItem.java
|
||||||
index 8cf3e51e12f9cf98836657e722edb23943f9e866..813a6d2bfe99ad8ddf81d7dfca51a7544b5fef0d 100644
|
index 8cf3e51e12f9cf98836657e722edb23943f9e866..4705004e4a7c36836e3a4c82412e54d0015cfef6 100644
|
||||||
--- a/net/minecraft/world/item/ShearsItem.java
|
--- a/net/minecraft/world/item/ShearsItem.java
|
||||||
+++ b/net/minecraft/world/item/ShearsItem.java
|
+++ b/net/minecraft/world/item/ShearsItem.java
|
||||||
@@ -24,6 +24,22 @@ import net.minecraft.world.level.block.GrowingPlantHeadBlock;
|
@@ -24,6 +24,30 @@ import net.minecraft.world.level.block.GrowingPlantHeadBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.gameevent.GameEvent;
|
import net.minecraft.world.level.gameevent.GameEvent;
|
||||||
|
|
||||||
@@ -23,31 +23,70 @@ index 8cf3e51e12f9cf98836657e722edb23943f9e866..813a6d2bfe99ad8ddf81d7dfca51a754
|
|||||||
+import net.minecraft.world.level.block.CrafterBlock;
|
+import net.minecraft.world.level.block.CrafterBlock;
|
||||||
+import net.minecraft.world.level.block.LeverBlock;
|
+import net.minecraft.world.level.block.LeverBlock;
|
||||||
+import net.minecraft.world.level.block.CocoaBlock;
|
+import net.minecraft.world.level.block.CocoaBlock;
|
||||||
|
+import net.minecraft.world.level.block.TrapDoorBlock;
|
||||||
|
+import net.minecraft.world.level.block.FenceGateBlock;
|
||||||
|
+import net.minecraft.world.level.block.LightningRodBlock;
|
||||||
|
+import net.minecraft.world.level.block.RailBlock;
|
||||||
|
+import net.minecraft.world.level.block.BaseRailBlock;
|
||||||
|
+import net.minecraft.world.level.block.PoweredRailBlock;
|
||||||
|
+import net.minecraft.world.level.block.CalibratedSculkSensorBlock;
|
||||||
+import net.minecraft.world.level.block.piston.PistonBaseBlock;
|
+import net.minecraft.world.level.block.piston.PistonBaseBlock;
|
||||||
+import net.minecraft.world.level.block.state.StateDefinition;
|
+import net.minecraft.world.level.block.state.StateDefinition;
|
||||||
|
+import net.minecraft.world.level.block.state.properties.RailShape;
|
||||||
+import net.minecraft.world.level.block.state.properties.Property;
|
+import net.minecraft.world.level.block.state.properties.Property;
|
||||||
+// Leaves end - shears wrench
|
+// Leaves end - shears wrench
|
||||||
+
|
+
|
||||||
public class ShearsItem extends Item {
|
public class ShearsItem extends Item {
|
||||||
public ShearsItem(Item.Properties properties) {
|
public ShearsItem(Item.Properties properties) {
|
||||||
super(properties);
|
super(properties);
|
||||||
@@ -80,7 +96,68 @@ public class ShearsItem extends Item {
|
@@ -80,7 +104,108 @@ public class ShearsItem extends Item {
|
||||||
|
|
||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
+ // Leaves start - shears wrench
|
+ // Leaves start - shears wrench
|
||||||
+ Block block = blockState.getBlock();
|
+ Block block = blockState.getBlock();
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.redstoneShearsWrench && block instanceof ObserverBlock || block instanceof DispenserBlock ||
|
+ if (org.leavesmc.leaves.LeavesConfig.modify.redstoneShearsWrench &&
|
||||||
+ block instanceof PistonBaseBlock || block instanceof HopperBlock || block instanceof RepeaterBlock || block instanceof ComparatorBlock ||
|
+ block instanceof ObserverBlock ||
|
||||||
+ block instanceof CrafterBlock || block instanceof LeverBlock || block instanceof CocoaBlock) {
|
+ block instanceof DispenserBlock ||
|
||||||
|
+ block instanceof PistonBaseBlock ||
|
||||||
|
+ block instanceof HopperBlock ||
|
||||||
|
+ block instanceof RepeaterBlock ||
|
||||||
|
+ block instanceof ComparatorBlock ||
|
||||||
|
+ block instanceof CrafterBlock ||
|
||||||
|
+ block instanceof LeverBlock ||
|
||||||
|
+ block instanceof CocoaBlock ||
|
||||||
|
+ block instanceof TrapDoorBlock ||
|
||||||
|
+ block instanceof FenceGateBlock ||
|
||||||
|
+ block instanceof LightningRodBlock ||
|
||||||
|
+ block instanceof CalibratedSculkSensorBlock ||
|
||||||
|
+ block instanceof BaseRailBlock
|
||||||
|
+ ) {
|
||||||
+ StateDefinition<Block, BlockState> blockstatelist = block.getStateDefinition();
|
+ StateDefinition<Block, BlockState> blockstatelist = block.getStateDefinition();
|
||||||
+ Property<?> iblockstate = block instanceof CrafterBlock ? blockstatelist.getProperty("orientation") : blockstatelist.getProperty("facing");
|
+ Property<?> iblockstate;
|
||||||
|
+ if (block instanceof CrafterBlock) iblockstate = blockstatelist.getProperty("orientation");
|
||||||
|
+ else if (block instanceof BaseRailBlock) iblockstate = blockstatelist.getProperty("shape");
|
||||||
|
+ else iblockstate = blockstatelist.getProperty("facing");
|
||||||
+ Player player = context.getPlayer();
|
+ Player player = context.getPlayer();
|
||||||
+
|
+
|
||||||
+ if (iblockstate == null || player == null) {
|
+ if (iblockstate == null || player == null) {
|
||||||
+ return InteractionResult.FAIL;
|
+ return InteractionResult.FAIL;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ if (block instanceof BaseRailBlock) {
|
||||||
|
+ if (block instanceof RailBlock) {
|
||||||
|
+ if (blockState.getValue(RailBlock.SHAPE).isSlope()) {
|
||||||
|
+ return InteractionResult.FAIL;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ if (getNameHelper(blockState, PoweredRailBlock.POWERED).equals("true")) {
|
||||||
|
+ return InteractionResult.FAIL;
|
||||||
|
+ }
|
||||||
|
+ if (blockState.getValue(PoweredRailBlock.SHAPE).isSlope()) {
|
||||||
|
+ return InteractionResult.FAIL;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ if (block instanceof PistonBaseBlock) {
|
+ if (block instanceof PistonBaseBlock) {
|
||||||
+ if (getNameHelper(blockState, PistonBaseBlock.EXTENDED).equals("true")) {
|
+ if (getNameHelper(blockState, PistonBaseBlock.EXTENDED).equals("true")) {
|
||||||
+ return InteractionResult.FAIL;
|
+ return InteractionResult.FAIL;
|
||||||
@@ -84,7 +123,16 @@ index 8cf3e51e12f9cf98836657e722edb23943f9e866..813a6d2bfe99ad8ddf81d7dfca51a754
|
|||||||
+
|
+
|
||||||
+ // Leaves start - shears wrench
|
+ // Leaves start - shears wrench
|
||||||
+ private static <T extends Comparable<T>> BlockState cycleState(BlockState state, Property<T> property, boolean inverse) {
|
+ private static <T extends Comparable<T>> BlockState cycleState(BlockState state, Property<T> property, boolean inverse) {
|
||||||
+ return state.setValue(property, ShearsItem.getRelative(property.getPossibleValues(), state.getValue(property), inverse)); // CraftBukkit - decompile error
|
+ List<T> possibleValues = property.getPossibleValues();
|
||||||
|
+ if (possibleValues.getFirst() instanceof RailShape) {
|
||||||
|
+ boolean isRailBlock = state.getBlock() instanceof RailBlock;
|
||||||
|
+ possibleValues = possibleValues.stream().filter(possibleValue -> {
|
||||||
|
+ RailShape shape = (RailShape) possibleValue;
|
||||||
|
+ if (isRailBlock) return !shape.isSlope();
|
||||||
|
+ return !shape.isSlope() && shape != RailShape.NORTH_EAST && shape != RailShape.NORTH_WEST && shape != RailShape.SOUTH_EAST && shape != RailShape.SOUTH_WEST;
|
||||||
|
+ }).toList();
|
||||||
|
+ }
|
||||||
|
+ return state.setValue(property, ShearsItem.getRelative(possibleValues, state.getValue(property), inverse)); // CraftBukkit - decompile error
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private static <T> T getRelative(Iterable<T> elements, T current, boolean inverse) {
|
+ private static <T> T getRelative(Iterable<T> elements, T current, boolean inverse) {
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index 3e8f4f3c3d43c6875108295187023c48eece2788..5fc4d97ef421a37158b01864b035385bb7bf5f5f 100644
|
index 1ba342a1a60951f828034d3ed535b577b3990bf6..7a7971ec03fcdf72ecaa1e934d5ab3c62113c251 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -1701,14 +1701,14 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -1733,14 +1733,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;
|
final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Spectator dont get Advancement
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java
|
diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java
|
||||||
index f56a3fb47aa34c39cbd0e0e4e47d924da1488d7a..82fb9c61ce97c2e88a3252068bb28eb40bda0273 100644
|
index 5c0e338dc1b0eb5724d10a73d6fc7975f9d2e5e5..a14401edec04964e6c596c16ba58643b835ef9c1 100644
|
||||||
--- a/net/minecraft/server/PlayerAdvancements.java
|
--- a/net/minecraft/server/PlayerAdvancements.java
|
||||||
+++ b/net/minecraft/server/PlayerAdvancements.java
|
+++ b/net/minecraft/server/PlayerAdvancements.java
|
||||||
@@ -168,6 +168,11 @@ public class PlayerAdvancements {
|
@@ -167,6 +167,11 @@ public class PlayerAdvancements {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean award(AdvancementHolder advancement, String criterionKey) {
|
public boolean award(AdvancementHolder advancement, String criterionKey) {
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||||
index 6f601a0a300bbf01f77d835576d15e25c8ba10b8..9ef422c34a70367f4dcee50b51a17143d14f131c 100644
|
index 46369e554be8c72e6fc2e6d58374dbfc77d94879..d7725b5ca689e3d5b512baab04e113be77c0b2ee 100644
|
||||||
--- a/net/minecraft/world/entity/decoration/ArmorStand.java
|
--- a/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||||
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java
|
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||||
@@ -270,6 +270,13 @@ public class ArmorStand extends LivingEntity {
|
@@ -228,6 +228,13 @@ public class ArmorStand extends LivingEntity {
|
||||||
return InteractionResult.SUCCESS_SERVER;
|
return InteractionResult.SUCCESS_SERVER;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -27,25 +27,6 @@ index 47cb25aa9c37bd84d156288c397321009f1d9ae2..a94981882ac37ea215df3a71117d4a9b
|
|||||||
public void write(FriendlyByteBuf buffer) {
|
public void write(FriendlyByteBuf buffer) {
|
||||||
buffer.writeCollection(this.entries, (buffer1, entry) -> entry.write(buffer1));
|
buffer.writeCollection(this.entries, (buffer1, entry) -> entry.write(buffer1));
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/network/FriendlyByteBuf.java b/net/minecraft/network/FriendlyByteBuf.java
|
|
||||||
index 7da7d645f83f351e8c964da01734f3074a877ca1..a9d37c540397b5e24721b3eba47e2d5b2577579f 100644
|
|
||||||
--- a/net/minecraft/network/FriendlyByteBuf.java
|
|
||||||
+++ b/net/minecraft/network/FriendlyByteBuf.java
|
|
||||||
@@ -118,6 +118,14 @@ public class FriendlyByteBuf extends ByteBuf {
|
|
||||||
public <T> void writeJsonWithCodec(Codec<T> codec, T value, int maxLength) {
|
|
||||||
// Paper end - Adventure; add max length parameter
|
|
||||||
DataResult<JsonElement> dataResult = codec.encodeStart(JsonOps.INSTANCE, value);
|
|
||||||
+ // Leaves start - no chat sign
|
|
||||||
+ if (codec == net.minecraft.network.protocol.status.ServerStatus.CODEC) {
|
|
||||||
+ JsonElement element = dataResult.getOrThrow(string -> new EncoderException("Failed to encode: " + string + " " + value));
|
|
||||||
+ element.getAsJsonObject().addProperty("preventsChatReports", org.leavesmc.leaves.LeavesConfig.mics.noChatSign);
|
|
||||||
+ this.writeUtf(GSON.toJson(element));
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ // Leaves end - no chat sign
|
|
||||||
this.writeUtf(GSON.toJson(dataResult.getOrThrow(exception -> new EncoderException("Failed to encode: " + exception + " " + value))), maxLength); // Paper - Adventure; add max length parameter
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
diff --git a/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
||||||
index b5afc05924ae899e020c303c8b86398e1d4ab8a0..4479634e577913372faf87138b5ba26ba02ea4f7 100644
|
index b5afc05924ae899e020c303c8b86398e1d4ab8a0..4479634e577913372faf87138b5ba26ba02ea4f7 100644
|
||||||
--- a/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
--- a/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
||||||
@@ -90,11 +71,45 @@ index 1df628ac0b414511aaed6e09d78f884c4170f730..b92081d70ffeec47c304e553ce1aea0a
|
|||||||
handler.handleChatSessionUpdate(this);
|
handler.handleChatSessionUpdate(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
diff --git a/net/minecraft/network/protocol/status/ServerStatus.java b/net/minecraft/network/protocol/status/ServerStatus.java
|
||||||
|
index a491be4250de3199c3e1aa9e5482b568692bd2f5..9844b19020ef6e4fa5a3008dcd768bb674657d2f 100644
|
||||||
|
--- a/net/minecraft/network/protocol/status/ServerStatus.java
|
||||||
|
+++ b/net/minecraft/network/protocol/status/ServerStatus.java
|
||||||
|
@@ -20,7 +20,8 @@ public record ServerStatus(
|
||||||
|
Optional<ServerStatus.Players> players,
|
||||||
|
Optional<ServerStatus.Version> version,
|
||||||
|
Optional<ServerStatus.Favicon> favicon,
|
||||||
|
- boolean enforcesSecureChat
|
||||||
|
+ boolean enforcesSecureChat, // Leaves - no chat sign
|
||||||
|
+ boolean preventsChatReports // Leaves - no chat sign
|
||||||
|
) {
|
||||||
|
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
|
||||||
|
instance -> instance.group(
|
||||||
|
@@ -28,11 +29,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),
|
||||||
|
- Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", false).forGetter(ServerStatus::enforcesSecureChat)
|
||||||
|
+ Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", false).forGetter(ServerStatus::enforcesSecureChat), // Leaves - no chat sign
|
||||||
|
+ Codec.BOOL.lenientOptionalFieldOf("preventsChatReports", false).forGetter(ServerStatus::preventsChatReports) // Leaves - no chat sign
|
||||||
|
)
|
||||||
|
.apply(instance, ServerStatus::new)
|
||||||
|
);
|
||||||
|
|
||||||
|
+ // Leaves start - no chat sign
|
||||||
|
+ public ServerStatus(Component description, Optional<ServerStatus.Players> players, Optional<ServerStatus.Version> version, Optional<ServerStatus.Favicon> favicon, boolean enforcesSecureChat) {
|
||||||
|
+ this(description, players, version, favicon, enforcesSecureChat, org.leavesmc.leaves.LeavesConfig.mics.noChatSign);
|
||||||
|
+ }
|
||||||
|
+ // Leaves end - no chat sign
|
||||||
|
+
|
||||||
|
public record Favicon(byte[] iconBytes) {
|
||||||
|
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
|
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index e56f26fc504538d88bfa1954e929ee44fd31d657..e4946438d0c1fb9d2be616cb95768f890b32f286 100644
|
index f85993fc507d699728e058b12bb49dcb7aaea44b..91babab6152bb12768399ef6f2ea6afcb5e644b7 100644
|
||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -574,7 +574,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -573,7 +573,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
// Paper start - Add setting for proxy online mode status
|
// Paper start - Add setting for proxy online mode status
|
||||||
return properties.enforceSecureProfile
|
return properties.enforceSecureProfile
|
||||||
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
|
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
|
||||||
@@ -104,10 +119,10 @@ index e56f26fc504538d88bfa1954e929ee44fd31d657..e4946438d0c1fb9d2be616cb95768f89
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||||
index ac5ef04fae4bc19bae9007c0ffd8f688434d22d7..649aeec6954d26cb67827e99c4b5b736f4f5bef4 100644
|
index 2dd95aca955f19ce48be35b1ca9bcc94c3a1984d..e9d328dacdc23eea792ab350ec2ea9f8337ae008 100644
|
||||||
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||||
@@ -294,10 +294,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
@@ -322,10 +322,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(Packet<?> packet) {
|
public void send(Packet<?> packet) {
|
||||||
@@ -121,11 +136,11 @@ index ac5ef04fae4bc19bae9007c0ffd8f688434d22d7..649aeec6954d26cb67827e99c4b5b736
|
|||||||
this.send(packet, null);
|
this.send(packet, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(Packet<?> packet, @Nullable PacketSendListener listener) {
|
public void send(Packet<?> packet, @Nullable ChannelFutureListener channelFutureListener) {
|
||||||
+ // Leaves start - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
+ // Leaves start - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.mics.noChatSign) {
|
+ if (org.leavesmc.leaves.LeavesConfig.mics.noChatSign) {
|
||||||
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket && listener != null) {
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket && channelFutureListener != null) {
|
||||||
+ listener = null;
|
+ channelFutureListener = null;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
+ // Leaves end - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
||||||
@@ -133,10 +148,10 @@ index ac5ef04fae4bc19bae9007c0ffd8f688434d22d7..649aeec6954d26cb67827e99c4b5b736
|
|||||||
if (packet == null || this.processedDisconnect) { // Spigot
|
if (packet == null || this.processedDisconnect) { // Spigot
|
||||||
return;
|
return;
|
||||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||||
index 0cf30681a9e3d68f3abe1d87b9fd4220083685a9..491d7b5a0cc099a3eb658e19cbe9d97b4419382c 100644
|
index 204c25d33e86a736f091848a277ea882f129e468..742a49c9f1cec6a7ed343b1f0072fc36bb3df26b 100644
|
||||||
--- a/net/minecraft/server/players/PlayerList.java
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -1339,7 +1339,7 @@ public abstract class PlayerList {
|
@@ -1315,7 +1315,7 @@ public abstract class PlayerList {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean verifyChatTrusted(PlayerChatMessage message) {
|
public boolean verifyChatTrusted(PlayerChatMessage message) {
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Dont send useless entity packets
|
|||||||
This patch is Powered by Purpur(https://github.com/PurpurMC/Purpur)
|
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
|
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
|
||||||
index b118e91f1e0b5a8b8c0b2a4a32faabc5a34a5954..7681195587d361acf524d09ad3958e628aad73b6 100644
|
index e96d4dee14c05f2fa329bfb1588ec795d4e3d730..f6b2d541fdfd11c6ff6033fbf4cd5153796634e3 100644
|
||||||
--- a/net/minecraft/server/level/ServerEntity.java
|
--- a/net/minecraft/server/level/ServerEntity.java
|
||||||
+++ b/net/minecraft/server/level/ServerEntity.java
|
+++ b/net/minecraft/server/level/ServerEntity.java
|
||||||
@@ -196,6 +196,11 @@ public class ServerEntity {
|
@@ -200,6 +200,11 @@ public class ServerEntity {
|
||||||
} else if (flag) {
|
} else if (flag) {
|
||||||
packet = new ClientboundMoveEntityPacket.Rot(this.entity.getId(), b, b1, this.entity.onGround());
|
packet = new ClientboundMoveEntityPacket.Rot(this.entity.getId(), b, b1, this.entity.onGround());
|
||||||
flag4 = true;
|
flag4 = true;
|
||||||
@@ -21,7 +21,7 @@ index b118e91f1e0b5a8b8c0b2a4a32faabc5a34a5954..7681195587d361acf524d09ad3958e62
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
packet = new ClientboundMoveEntityPacket.PosRot(this.entity.getId(), (short)l, (short)l1, (short)l2, b, b1, this.entity.onGround());
|
packet = new ClientboundMoveEntityPacket.PosRot(this.entity.getId(), (short)l, (short)l1, (short)l2, b, b1, this.entity.onGround());
|
||||||
@@ -315,6 +320,21 @@ public class ServerEntity {
|
@@ -319,6 +324,21 @@ public class ServerEntity {
|
||||||
this.positionCodec.setBase(this.entity.position());
|
this.positionCodec.setBase(this.entity.position());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize suffocation
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
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
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index 5fc4d97ef421a37158b01864b035385bb7bf5f5f..b5f6a76c977bbb5dbb06fb3dd654f0b01aaba692 100644
|
index 7a7971ec03fcdf72ecaa1e934d5ab3c62113c251..f0ff74a4f2831ead191bc12cb4873162a470c71f 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -437,7 +437,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||||
|
|
||||||
if (this.isAlive() && this.level() instanceof ServerLevel serverLevel1) {
|
if (this.isAlive() && this.level() instanceof ServerLevel serverLevel1) {
|
||||||
boolean flag = this instanceof Player;
|
boolean flag = this instanceof Player;
|
||||||
@@ -18,7 +18,7 @@ index 5fc4d97ef421a37158b01864b035385bb7bf5f5f..b5f6a76c977bbb5dbb06fb3dd654f0b0
|
|||||||
this.hurtServer(serverLevel1, this.damageSources().inWall(), 1.0F);
|
this.hurtServer(serverLevel1, this.damageSources().inWall(), 1.0F);
|
||||||
} else if (flag && !serverLevel1.getWorldBorder().isWithinBounds(this.getBoundingBox())) {
|
} else if (flag && !serverLevel1.getWorldBorder().isWithinBounds(this.getBoundingBox())) {
|
||||||
double d = serverLevel1.getWorldBorder().getDistanceToBorder(this) + serverLevel1.getWorldBorder().getDamageSafeZone();
|
double d = serverLevel1.getWorldBorder().getDistanceToBorder(this) + serverLevel1.getWorldBorder().getDamageSafeZone();
|
||||||
@@ -1372,6 +1372,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -1404,6 +1404,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||||
return this.getHealth() <= 0.0F;
|
return this.getHealth() <= 0.0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
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
|
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
|
||||||
index eb9fb57440f498079182030a46034008d3f6b5e8..5f0ddf96e8ca1bb32c773f11232dedd1a981fde9 100644
|
index 912b099a51269f92f250c7d6094ad41817749f93..af661d572d2bab00a392f858dd910c8be5e16e81 100644
|
||||||
--- a/net/minecraft/world/entity/ambient/Bat.java
|
--- a/net/minecraft/world/entity/ambient/Bat.java
|
||||||
+++ b/net/minecraft/world/entity/ambient/Bat.java
|
+++ b/net/minecraft/world/entity/ambient/Bat.java
|
||||||
@@ -244,12 +244,30 @@ public class Bat extends AmbientCreature {
|
@@ -245,12 +245,30 @@ public class Bat extends AmbientCreature {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Config to disable method profiler
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
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
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 940e6cb4b8f990e3c4ae8a5efc7adc56ffae28de..105c207b8db2c505f256f4104642af5929b50aa9 100644
|
index feb5fc93498a5ed89e3bcb61cd72ba6e75881358..6539574b72dcb362d8d106a68d6e2d968340fc5e 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1247,7 +1247,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1248,7 +1248,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
lastTick = currentTime;
|
lastTick = currentTime;
|
||||||
this.nextTickTimeNanos += l;
|
this.nextTickTimeNanos += l;
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Throttle goal selector during inactive ticking
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
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
|
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
|
||||||
index 73ba442b9d39bc021cd5eb6c1c0f98aed94a5a02..c83ad2553145b66aad000be3b82fec57f56359ce 100644
|
index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..a8bb9822e963d7d8245c8d6589604fd92b424f18 100644
|
||||||
--- a/net/minecraft/world/entity/Mob.java
|
--- a/net/minecraft/world/entity/Mob.java
|
||||||
+++ b/net/minecraft/world/entity/Mob.java
|
+++ b/net/minecraft/world/entity/Mob.java
|
||||||
@@ -203,11 +203,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
@@ -206,11 +206,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||||
return this.lookControl;
|
return this.lookControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Reduce entity allocations
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
diff --git a/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
index bed9b564c493cd84bf53fc49368fda736f3fbc2b..69ec8e21c96e26bafedcdd979fc9d050b1f3846f 100644
|
index fdb02fc40579866167e8cc9bcefbd961588b53a6..05c4a98966f7ed86dd658166caf0256566fd2985 100644
|
||||||
--- a/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
--- a/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
+++ b/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
+++ b/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
@@ -18,9 +18,11 @@ public class AttributeMap {
|
@@ -18,9 +18,11 @@ public class AttributeMap {
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Remove lambda from ticking guard
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
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
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index b1821dc6bfdda93431e2f43d5de6ecc60901c757..26a20dea38628c7acd88f172a09b12af02a82d09 100644
|
index c61c0b6d58f96955bfbdad0caaeb56f073a95181..ed05aaa76e1e34ca82fcc7cfb73f371a11600eee 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -806,7 +806,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -810,7 +810,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
|
|
||||||
profilerFiller.push("tick");
|
profilerFiller.push("tick");
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Cache climbing check for activation
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
||||||
|
|
||||||
diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java
|
diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java
|
||||||
index 2ebee223085fe7926c7f3e555df19ae69f36157e..40f83551c74b594aa5fda82ac67eec72c3cd4942 100644
|
index ae2bb9a73106febfe5f0d090abd4252bbb5fd27e..b3e536400efa41ba754e52f1ee224365b69dcdab 100644
|
||||||
--- a/io/papermc/paper/entity/activation/ActivationRange.java
|
--- a/io/papermc/paper/entity/activation/ActivationRange.java
|
||||||
+++ b/io/papermc/paper/entity/activation/ActivationRange.java
|
+++ b/io/papermc/paper/entity/activation/ActivationRange.java
|
||||||
@@ -215,7 +215,7 @@ public final class ActivationRange {
|
@@ -221,7 +221,7 @@ public final class ActivationRange {
|
||||||
}
|
}
|
||||||
// special cases.
|
// special cases.
|
||||||
if (entity instanceof final LivingEntity living) {
|
if (entity instanceof final LivingEntity living) {
|
||||||
@@ -19,10 +19,10 @@ index 2ebee223085fe7926c7f3e555df19ae69f36157e..40f83551c74b594aa5fda82ac67eec72
|
|||||||
}
|
}
|
||||||
if (entity instanceof final Mob mob && mob.getTarget() != null) {
|
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
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index b5f6a76c977bbb5dbb06fb3dd654f0b01aaba692..108430b3934a6f9757e7be50d77e760bbade669c 100644
|
index f0ff74a4f2831ead191bc12cb4873162a470c71f..33d14040a8ac97758881cd31a88d950a14a78450 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -2094,6 +2094,22 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -2126,6 +2126,22 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||||
return this.lastClimbablePos;
|
return this.lastClimbablePos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Reduce chunk loading & lookups
|
|||||||
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
|
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
|
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
index ab7f7846d3fc0252c6f71277b3e67d7a785a96b5..8ac90690bd3fb7b5bf8798a4ca5c900e8bc7acb3 100644
|
index 4edd94ac765d2ab107612504b67e6e07da609313..6760bfd91f59139922768db5e5d362c5e7e4e473 100644
|
||||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
@@ -300,11 +300,28 @@ public class EnderMan extends Monster implements NeutralMob {
|
@@ -296,11 +296,28 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||||
private boolean teleport(double x, double y, double z) {
|
private boolean teleport(double x, double y, double z) {
|
||||||
BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(x, y, z);
|
BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(x, y, z);
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Subject: [PATCH] InstantBlockUpdater Reintroduced
|
|||||||
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
|
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
|
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
|
||||||
index 013ed7dbe2309f562f63e66203179a90566e8115..12a63f75d878fcdad83847b20f5a57f7936c7779 100644
|
index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..ef8a072838558caab19e8a85f4b59cac570c2635 100644
|
||||||
--- a/net/minecraft/world/level/Level.java
|
--- a/net/minecraft/world/level/Level.java
|
||||||
+++ b/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
|
@@ -873,7 +873,13 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
index 5d3fc807221392d378fec283bfdefb8747fb8376..bf731da711ce629c0f9250a7bd4025d363623773 100644
|
index 75578e6ed7233a03d9b6cd3c6d3997f1c6148392..f24db919989bc2e5768e18b4fda68c38d6cde7e0 100644
|
||||||
--- a/net/minecraft/world/level/chunk/LevelChunk.java
|
--- a/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
|
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
@@ -743,6 +743,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
|
@@ -749,6 +749,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
|
||||||
|
|
||||||
public void setLoaded(boolean loaded) {
|
public void setLoaded(boolean loaded) {
|
||||||
this.loaded = loaded;
|
this.loaded = loaded;
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] PCA sync protocol
|
|||||||
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
|
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
|
diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
||||||
index 7c473eea481f5e055cc70512027726f41f0c6f67..3165d1eaa46f2adceba28d4aef95fda3f05ee5e3 100644
|
index 31ed5d7cfbda1a1f98ebfc89f5cbc65332cabdae..18c683f7d7e18200a24cfc8d26e83f578681f7f5 100644
|
||||||
--- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
--- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
||||||
+++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
+++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
||||||
@@ -303,6 +303,13 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory
|
@@ -305,6 +305,13 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory
|
||||||
public void createInventory() {
|
public void createInventory() {
|
||||||
SimpleContainer simpleContainer = this.inventory;
|
SimpleContainer simpleContainer = this.inventory;
|
||||||
this.inventory = new SimpleContainer(this.getInventorySize(), (org.bukkit.entity.AbstractHorse) this.getBukkitEntity()); // CraftBukkit
|
this.inventory = new SimpleContainer(this.getInventorySize(), (org.bukkit.entity.AbstractHorse) this.getBukkitEntity()); // CraftBukkit
|
||||||
@@ -24,7 +24,7 @@ index 7c473eea481f5e055cc70512027726f41f0c6f67..3165d1eaa46f2adceba28d4aef95fda3
|
|||||||
int min = Math.min(simpleContainer.getContainerSize(), this.inventory.getContainerSize());
|
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
|
diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||||
index 1d3381f1481bb2b192bb78462c85c2a185d94ad5..a375fad192cc09ba83775d5e37c1bb351730e6c4 100644
|
index f8782cdcf3015cad2693663a3c222bd60822f45b..38572ecba568072b132b9e7fc12e6c0c38edd2e2 100644
|
||||||
--- a/net/minecraft/world/entity/npc/AbstractVillager.java
|
--- a/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||||
+++ b/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
|
@@ -48,6 +48,15 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
|
||||||
@@ -44,10 +44,10 @@ index 1d3381f1481bb2b192bb78462c85c2a185d94ad5..a375fad192cc09ba83775d5e37c1bb35
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
|
diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
|
||||||
index a7e2f23ed3279801504f99fc3c5f972e8c1b984f..4509b1a68273effa30d1befafc9104220d02fe8b 100644
|
index 6a008c86f4e360c916b93f0e3a62a9d8b43e74e6..7781ca07a0c8fe1140f341b695e66de95802ee2e 100644
|
||||||
--- a/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
|
--- a/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
|
||||||
+++ b/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
|
+++ b/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
|
||||||
@@ -64,6 +64,11 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme
|
@@ -65,6 +65,11 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setChanged() {
|
public void setChanged() {
|
||||||
@@ -60,7 +60,7 @@ index a7e2f23ed3279801504f99fc3c5f972e8c1b984f..4509b1a68273effa30d1befafc910422
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||||
index c5b3b5e5f621f8db152aa190374ae0fe567d6828..7729c33cad94cf2b4162324be75713650fc9d378 100644
|
index 36a72a11d28f99bfe85868461925b778cc01478e..bebe8737b71fc37336342f14b6ea4cfab12d3f34 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||||
+++ b/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
|
@@ -429,6 +429,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
|
||||||
@@ -81,7 +81,7 @@ index c5b3b5e5f621f8db152aa190374ae0fe567d6828..7729c33cad94cf2b4162324be7571365
|
|||||||
public void setRecipeUsed(@Nullable RecipeHolder<?> recipe) {
|
public void setRecipeUsed(@Nullable RecipeHolder<?> recipe) {
|
||||||
if (recipe != null) {
|
if (recipe != null) {
|
||||||
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||||
index 027502d0af5512c31878978c4d05c52fa3029cca..b3da250aa326d05a4e95c7b749c8ae8975dfd804 100644
|
index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..f0ba09c0edc598dfc4e501ba69016e8a2f8d3a7c 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||||
+++ b/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 {
|
@@ -121,6 +121,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||||
@@ -102,10 +102,10 @@ index 027502d0af5512c31878978c4d05c52fa3029cca..b3da250aa326d05a4e95c7b749c8ae89
|
|||||||
protected Component getDefaultName() {
|
protected Component getDefaultName() {
|
||||||
return Component.translatable("container.barrel");
|
return Component.translatable("container.barrel");
|
||||||
diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
|
||||||
index 331eb5416307378162e39e20192ba06a047b70ea..69419e74c308e46509cc40fde9ed05583964a1ca 100644
|
index 91f7ee163107d846e7f6a5783be6eff96e783886..cbbe3dee3dda06d0e2451597dae0ac03009330e0 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
|
||||||
+++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
|
+++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
|
||||||
@@ -144,6 +144,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
@@ -147,6 +147,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
||||||
super.setChanged();
|
super.setChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ index 331eb5416307378162e39e20192ba06a047b70ea..69419e74c308e46509cc40fde9ed0558
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,6 +206,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
@@ -204,6 +209,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
||||||
this.level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(bee, this.getBlockState()));
|
this.level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(bee, this.getBlockState()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ index 331eb5416307378162e39e20192ba06a047b70ea..69419e74c308e46509cc40fde9ed0558
|
|||||||
bee.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.ENTER_BLOCK); // CraftBukkit - add Bukkit remove cause
|
bee.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.ENTER_BLOCK); // CraftBukkit - add Bukkit remove cause
|
||||||
super.setChanged();
|
super.setChanged();
|
||||||
}
|
}
|
||||||
@@ -322,6 +332,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
@@ -325,6 +335,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
||||||
if (releaseOccupant(level, pos, state, beeData.toOccupant(), null, beeReleaseStatus, savedFlowerPos)) {
|
if (releaseOccupant(level, pos, state, beeData.toOccupant(), null, beeReleaseStatus, savedFlowerPos)) {
|
||||||
flag = true;
|
flag = true;
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@@ -141,10 +141,10 @@ index 331eb5416307378162e39e20192ba06a047b70ea..69419e74c308e46509cc40fde9ed0558
|
|||||||
}
|
}
|
||||||
// Paper start - Fix bees aging inside; use exitTickCounter to keep actual bee life
|
// Paper start - Fix bees aging inside; use exitTickCounter to keep actual bee life
|
||||||
else if (level.paperConfig().entities.behavior.cooldownFailedBeehiveReleases) {
|
else if (level.paperConfig().entities.behavior.cooldownFailedBeehiveReleases) {
|
||||||
@@ -355,6 +370,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
@@ -358,6 +373,11 @@ public class BeehiveBlockEntity extends BlockEntity {
|
||||||
tag.read("bees", BeehiveBlockEntity.Occupant.LIST_CODEC).orElse(List.of()).forEach(this::storeBee);
|
input.read("bees", BeehiveBlockEntity.Occupant.LIST_CODEC).orElse(List.of()).forEach(this::storeBee);
|
||||||
this.savedFlowerPos = tag.read("flower_pos", BlockPos.CODEC).orElse(null);
|
this.savedFlowerPos = input.read("flower_pos", BlockPos.CODEC).orElse(null);
|
||||||
this.maxBees = tag.getIntOr("Bukkit.MaxEntities", MAX_OCCUPANTS); // Paper - persist max bukkit occupants
|
this.maxBees = input.getIntOr("Bukkit.MaxEntities", MAX_OCCUPANTS); // Paper - persist max bukkit occupants
|
||||||
+ // Leaves start - pca
|
+ // Leaves start - pca
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.protocol.pca.enable) {
|
+ if (org.leavesmc.leaves.LeavesConfig.protocol.pca.enable) {
|
||||||
+ org.leavesmc.leaves.protocol.PcaSyncProtocol.syncBlockEntityToClient(this);
|
+ org.leavesmc.leaves.protocol.PcaSyncProtocol.syncBlockEntityToClient(this);
|
||||||
@@ -154,7 +154,7 @@ index 331eb5416307378162e39e20192ba06a047b70ea..69419e74c308e46509cc40fde9ed0558
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
|
||||||
index 2e369167d4d1664df1f0b375597bb12b728c5c62..e13a2845efc88bd68ee96cbc1b58bf4f7fb77845 100644
|
index 79a9f1c87de30cda479b55cf70fbc3219a3dcad4..7eac2188a38fff2ecfa4082b5d023b111cf7d8f6 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
|
||||||
+++ b/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
|
@@ -331,4 +331,14 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
|
||||||
@@ -173,7 +173,7 @@ index 2e369167d4d1664df1f0b375597bb12b728c5c62..e13a2845efc88bd68ee96cbc1b58bf4f
|
|||||||
+ // Leaves end - pca
|
+ // Leaves end - pca
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/level/block/entity/ChestBlockEntity.java b/net/minecraft/world/level/block/entity/ChestBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/ChestBlockEntity.java b/net/minecraft/world/level/block/entity/ChestBlockEntity.java
|
||||||
index a7a095cc0ffdf7b0daf7b4d19c3e78bc4399fa7c..faac046a95a7db5f5fd456bd8f768b0aaab1db5e 100644
|
index b7d94ebe0ee995392c355c4237da8443dcc79b21..784e146b28370dc2dac094d5f2ac654a5bc47e01 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/ChestBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/ChestBlockEntity.java
|
||||||
+++ b/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
|
@@ -202,6 +202,16 @@ public class ChestBlockEntity extends RandomizableContainerBlockEntity implement
|
||||||
@@ -194,11 +194,11 @@ index a7a095cc0ffdf7b0daf7b4d19c3e78bc4399fa7c..faac046a95a7db5f5fd456bd8f768b0a
|
|||||||
protected AbstractContainerMenu createMenu(int id, Inventory player) {
|
protected AbstractContainerMenu createMenu(int id, Inventory player) {
|
||||||
return ChestMenu.threeRows(id, player, this);
|
return ChestMenu.threeRows(id, player, this);
|
||||||
diff --git a/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java b/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java b/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java
|
||||||
index d0119f3df52fe26c85d8b67ee59e24adf7b427ac..18ff2cd322168f57f3a1b3b4c0e9a02560cb9965 100644
|
index 6b5179ae4269829b1e356840c9a8c33153334c32..b78ee57634471bc6e5308fb30c8f974fdce516de 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java
|
||||||
+++ b/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java
|
+++ b/net/minecraft/world/level/block/entity/ComparatorBlockEntity.java
|
||||||
@@ -25,6 +25,16 @@ public class ComparatorBlockEntity extends BlockEntity {
|
@@ -25,6 +25,16 @@ public class ComparatorBlockEntity extends BlockEntity {
|
||||||
this.output = tag.getIntOr("OutputSignal", 0);
|
this.output = input.getIntOr("OutputSignal", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Leaves start - pca
|
+ // Leaves start - pca
|
||||||
@@ -215,7 +215,7 @@ index d0119f3df52fe26c85d8b67ee59e24adf7b427ac..18ff2cd322168f57f3a1b3b4c0e9a025
|
|||||||
return this.output;
|
return this.output;
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/level/block/entity/DispenserBlockEntity.java b/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/DispenserBlockEntity.java b/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
||||||
index 3fb7a7b9f182062ebed778e7bb9ba239ae9f179c..a8256fd0d14655fe480b6e04ce32814e54f9d9c6 100644
|
index ae52dc75335799e55e403e3d3f11e9f1d67e4305..36b9362e1ce31b63c100ec65921e095fb7871e82 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
||||||
+++ b/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 {
|
@@ -104,6 +104,16 @@ public class DispenserBlockEntity extends RandomizableContainerBlockEntity {
|
||||||
@@ -236,7 +236,7 @@ index 3fb7a7b9f182062ebed778e7bb9ba239ae9f179c..a8256fd0d14655fe480b6e04ce32814e
|
|||||||
protected Component getDefaultName() {
|
protected Component getDefaultName() {
|
||||||
return Component.translatable("container.dispenser");
|
return Component.translatable("container.dispenser");
|
||||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
index 15d4f60942c0cc612c1468b4c0fda886867a67cb..212a1a1410550a2456a88a948f377048447a1fc8 100644
|
index 800b7e78ae989868ed0b9e060c80dcd002759412..5f42af7c6fc82d6672ed06a2315254c9c5886ce4 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
+++ b/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
|
@@ -122,6 +122,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||||
@@ -269,7 +269,7 @@ index 15d4f60942c0cc612c1468b4c0fda886867a67cb..212a1a1410550a2456a88a948f377048
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
||||||
index 87ebdb6deb66662a38b3eec0dae27eaf859ecabb..5e58113b3401268e0432235dc10b2734dbbd8b71 100644
|
index ebea67223ce1d350087c73dff0cc3fe6d7b47ca0..a820ab9a2b6dc6b95d4de61aaaad4e79c521efe4 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
||||||
+++ b/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
|
@@ -267,6 +267,16 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ MasaGadget(https://github.com/plusls/MasaGadget)
|
|||||||
litematica(https://github.com/maruohon/litematica)
|
litematica(https://github.com/maruohon/litematica)
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
|
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
|
||||||
index 2fbbbac9f1472354bd507926a85c25f48291edfe..98c94e0957933828be79e6326d782af6aa738dd9 100644
|
index 6db566adf2d0df1d26221eda04aa01738df6d3d2..14387fa191fb52aaa8b25396292c1d528a6aed17 100644
|
||||||
--- a/net/minecraft/world/item/BlockItem.java
|
--- a/net/minecraft/world/item/BlockItem.java
|
||||||
+++ b/net/minecraft/world/item/BlockItem.java
|
+++ b/net/minecraft/world/item/BlockItem.java
|
||||||
@@ -151,6 +151,27 @@ public class BlockItem extends Item {
|
@@ -150,6 +150,27 @@ public class BlockItem extends Item {
|
||||||
@Nullable
|
@Nullable
|
||||||
protected BlockState getPlacementState(BlockPlaceContext context) {
|
protected BlockState getPlacementState(BlockPlaceContext context) {
|
||||||
BlockState stateForPlacement = this.getBlock().getStateForPlacement(context);
|
BlockState stateForPlacement = this.getBlock().getStateForPlacement(context);
|
||||||
@@ -62,7 +62,7 @@ index 12c6c8aeec89a0a55633c62fe98f5a3aa75fd476..1f0e7c391d02b18e2c89700025713ec3
|
|||||||
blockState = blockState1;
|
blockState = blockState1;
|
||||||
break;
|
break;
|
||||||
diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java
|
diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java
|
||||||
index f289e37f77e1c9d3b0f6c29da1b99f0d5f156e37..848409f44e766ce2a5b74563bf2fd4a6b5d63d33 100644
|
index 958914e40fceda5d67a98154817b4c5ce478a62d..02ea7616e0c19032374959f59a9ab186e91c5f7b 100644
|
||||||
--- a/net/minecraft/world/level/block/Block.java
|
--- a/net/minecraft/world/level/block/Block.java
|
||||||
+++ b/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 {
|
@@ -439,6 +439,33 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Jade Protocol
|
|||||||
This patch is Powered by Jade(https://github.com/Snownee/Jade)
|
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
|
diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||||
index b72e07ad954efa7f26f876a59f428086b40d9bb2..102746fc84ca9c8899db971fc1490060ea016b7e 100644
|
index c1798db2972c8f2a343cf6e16fd9354ff212d906..a8d617b16ab2b2c0cdb289a0aa05fa171940cd7e 100644
|
||||||
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||||
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||||
@@ -62,7 +62,7 @@ public class Armadillo extends Animal {
|
@@ -63,7 +63,7 @@ public class Armadillo extends Animal {
|
||||||
public final AnimationState rollOutAnimationState = new AnimationState();
|
public final AnimationState rollOutAnimationState = new AnimationState();
|
||||||
public final AnimationState rollUpAnimationState = new AnimationState();
|
public final AnimationState rollUpAnimationState = new AnimationState();
|
||||||
public final AnimationState peekAnimationState = new AnimationState();
|
public final AnimationState peekAnimationState = new AnimationState();
|
||||||
@@ -19,10 +19,10 @@ index b72e07ad954efa7f26f876a59f428086b40d9bb2..102746fc84ca9c8899db971fc1490060
|
|||||||
|
|
||||||
public Armadillo(EntityType<? extends Animal> entityType, Level level) {
|
public Armadillo(EntityType<? extends Animal> entityType, Level level) {
|
||||||
diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java
|
diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java
|
||||||
index ebdfd3fb6c0de48982d392bb2aa415f3676c6056..9d5acb2559143358b1258cbb674191bdddb331e3 100644
|
index 17f58246849ed407821a987b200cc765eb7943f9..ac27df3ba0ce9bbdf2f32ea87171fbb9407008d6 100644
|
||||||
--- a/net/minecraft/world/entity/animal/frog/Tadpole.java
|
--- a/net/minecraft/world/entity/animal/frog/Tadpole.java
|
||||||
+++ b/net/minecraft/world/entity/animal/frog/Tadpole.java
|
+++ b/net/minecraft/world/entity/animal/frog/Tadpole.java
|
||||||
@@ -252,7 +252,7 @@ public class Tadpole extends AbstractFish {
|
@@ -254,7 +254,7 @@ public class Tadpole extends AbstractFish {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,10 +32,10 @@ index ebdfd3fb6c0de48982d392bb2aa415f3676c6056..9d5acb2559143358b1258cbb674191bd
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/level/storage/loot/LootPool.java b/net/minecraft/world/level/storage/loot/LootPool.java
|
diff --git a/net/minecraft/world/level/storage/loot/LootPool.java b/net/minecraft/world/level/storage/loot/LootPool.java
|
||||||
index 29ad43245a310756c4227acd7532e905f7f8b8ee..ad422817593449b8e914628b51d760e732e2d50c 100644
|
index 6901e629d941e22e64d83eed4e8cfee3165a96a1..fdc26c8d8c82c20534c57af2a0281b99998cc9f6 100644
|
||||||
--- a/net/minecraft/world/level/storage/loot/LootPool.java
|
--- a/net/minecraft/world/level/storage/loot/LootPool.java
|
||||||
+++ b/net/minecraft/world/level/storage/loot/LootPool.java
|
+++ b/net/minecraft/world/level/storage/loot/LootPool.java
|
||||||
@@ -36,7 +36,7 @@ public class LootPool {
|
@@ -37,7 +37,7 @@ public class LootPool {
|
||||||
)
|
)
|
||||||
.apply(instance, LootPool::new)
|
.apply(instance, LootPool::new)
|
||||||
);
|
);
|
||||||
@@ -45,10 +45,10 @@ index 29ad43245a310756c4227acd7532e905f7f8b8ee..ad422817593449b8e914628b51d760e7
|
|||||||
private final Predicate<LootContext> compositeCondition;
|
private final Predicate<LootContext> compositeCondition;
|
||||||
private final List<LootItemFunction> functions;
|
private final List<LootItemFunction> functions;
|
||||||
diff --git a/net/minecraft/world/level/storage/loot/LootTable.java b/net/minecraft/world/level/storage/loot/LootTable.java
|
diff --git a/net/minecraft/world/level/storage/loot/LootTable.java b/net/minecraft/world/level/storage/loot/LootTable.java
|
||||||
index 7a8eb1e8b07647e1124594f78652d34731e4fda6..6cfe7ef8c81f506bce9c971b597cc4e902bcabbe 100644
|
index 8612cdf7161f8ddff60a6478cc901318b8f958ba..07a962d647baa99b0e1bf3898a07cc914e91397e 100644
|
||||||
--- a/net/minecraft/world/level/storage/loot/LootTable.java
|
--- a/net/minecraft/world/level/storage/loot/LootTable.java
|
||||||
+++ b/net/minecraft/world/level/storage/loot/LootTable.java
|
+++ b/net/minecraft/world/level/storage/loot/LootTable.java
|
||||||
@@ -49,7 +49,7 @@ public class LootTable {
|
@@ -50,7 +50,7 @@ public class LootTable {
|
||||||
public static final LootTable EMPTY = new LootTable(LootContextParamSets.EMPTY, Optional.empty(), List.of(), List.of());
|
public static final LootTable EMPTY = new LootTable(LootContextParamSets.EMPTY, Optional.empty(), List.of(), List.of());
|
||||||
private final ContextKeySet paramSet;
|
private final ContextKeySet paramSet;
|
||||||
private final Optional<ResourceLocation> randomSequence;
|
private final Optional<ResourceLocation> randomSequence;
|
||||||
@@ -58,23 +58,23 @@ index 7a8eb1e8b07647e1124594f78652d34731e4fda6..6cfe7ef8c81f506bce9c971b597cc4e9
|
|||||||
private final BiFunction<ItemStack, LootContext, ItemStack> compositeFunction;
|
private final BiFunction<ItemStack, LootContext, ItemStack> compositeFunction;
|
||||||
public org.bukkit.craftbukkit.CraftLootTable craftLootTable; // CraftBukkit
|
public org.bukkit.craftbukkit.CraftLootTable craftLootTable; // CraftBukkit
|
||||||
diff --git a/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java b/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java
|
diff --git a/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java b/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java
|
||||||
index 8e91ddc6c0e492d165ad8322b4a3d5c3bad5409c..6e420bfb3c223b094157bdfec7dad20d8eab4968 100644
|
index eeaa49e9f70a18b5d39493aeff73f31b05ac2faa..8cd0403d7873c4c37caef75935b06b056c3d951d 100644
|
||||||
--- a/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java
|
--- a/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java
|
||||||
+++ b/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java
|
+++ b/net/minecraft/world/level/storage/loot/entries/CompositeEntryBase.java
|
||||||
@@ -9,7 +9,7 @@ import net.minecraft.world.level.storage.loot.ValidationContext;
|
@@ -16,7 +16,7 @@ public abstract class CompositeEntryBase extends LootPoolEntryContainer {
|
||||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
|
return "Empty children list";
|
||||||
|
}
|
||||||
public abstract class CompositeEntryBase extends LootPoolEntryContainer {
|
};
|
||||||
- protected final List<LootPoolEntryContainer> children;
|
- protected final List<LootPoolEntryContainer> children;
|
||||||
+ public final List<LootPoolEntryContainer> children; // Leaves - private -> public
|
+ public final List<LootPoolEntryContainer> children; // Leaves - private -> public
|
||||||
private final ComposableEntryContainer composedChildren;
|
private final ComposableEntryContainer composedChildren;
|
||||||
|
|
||||||
protected CompositeEntryBase(List<LootPoolEntryContainer> children, List<LootItemCondition> conditions) {
|
protected CompositeEntryBase(List<LootPoolEntryContainer> children, List<LootItemCondition> conditions) {
|
||||||
diff --git a/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java b/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java
|
diff --git a/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java b/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java
|
||||||
index e0e933245e038b7229eeddbda272b081161ab603..c5e3834fa970ac909cefea43420378394153d781 100644
|
index 65e27bce9e59ef97bc8b914d646fba924d0f0877..a49bdcdf37b351436e0ba6d7865f10827c4e6ab4 100644
|
||||||
--- a/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java
|
--- a/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java
|
||||||
+++ b/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java
|
+++ b/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java
|
||||||
@@ -13,7 +13,7 @@ import net.minecraft.world.level.storage.loot.predicates.ConditionUserBuilder;
|
@@ -14,7 +14,7 @@ import net.minecraft.world.level.storage.loot.predicates.ConditionUserBuilder;
|
||||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
|
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
|
||||||
|
|
||||||
public abstract class LootPoolEntryContainer implements ComposableEntryContainer {
|
public abstract class LootPoolEntryContainer implements ComposableEntryContainer {
|
||||||
@@ -84,23 +84,23 @@ index e0e933245e038b7229eeddbda272b081161ab603..c5e3834fa970ac909cefea4342037839
|
|||||||
|
|
||||||
protected LootPoolEntryContainer(List<LootItemCondition> conditions) {
|
protected LootPoolEntryContainer(List<LootItemCondition> conditions) {
|
||||||
diff --git a/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java b/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java
|
diff --git a/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java b/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java
|
||||||
index f7b647e81ca99040bae8161a2bc0dcacf5bd537f..069df530b1db72bd4a2b1b80b2570dca545dfd20 100644
|
index 141026601cd9a4561426b85fd1f8e7dc0544fbd7..a5d7ebb93c147bf0f806ac3c9b2dc4b878573944 100644
|
||||||
--- a/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java
|
--- a/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java
|
||||||
+++ b/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java
|
+++ b/net/minecraft/world/level/storage/loot/entries/NestedLootTable.java
|
||||||
@@ -22,7 +22,7 @@ public class NestedLootTable extends LootPoolSingletonContainer {
|
@@ -29,7 +29,7 @@ public class NestedLootTable extends LootPoolSingletonContainer {
|
||||||
.and(singletonFields(instance))
|
return "->{inline}";
|
||||||
.apply(instance, NestedLootTable::new)
|
}
|
||||||
);
|
};
|
||||||
- private final Either<ResourceKey<LootTable>, LootTable> contents;
|
- private final Either<ResourceKey<LootTable>, LootTable> contents;
|
||||||
+ public final Either<ResourceKey<LootTable>, LootTable> contents; // Leaves - private -> public
|
+ public final Either<ResourceKey<LootTable>, LootTable> contents; // Leaves - private -> public
|
||||||
|
|
||||||
private NestedLootTable(
|
private NestedLootTable(
|
||||||
Either<ResourceKey<LootTable>, LootTable> contents, int weight, int quality, List<LootItemCondition> conditions, List<LootItemFunction> functions
|
Either<ResourceKey<LootTable>, LootTable> contents, int weight, int quality, List<LootItemCondition> conditions, List<LootItemFunction> functions
|
||||||
diff --git a/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java b/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java
|
diff --git a/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java b/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java
|
||||||
index 7134c54984a12949cd6a2e8dc35c2e1c0431e524..52f36fbb9bfcad81004e531efab85e9b87d3284d 100644
|
index bae72197acc929c7ed3e964f156115d728eb2176..8f3094f42f3366a1313d70c0b27fbe5632b2082a 100644
|
||||||
--- a/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java
|
--- a/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java
|
||||||
+++ b/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java
|
+++ b/net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition.java
|
||||||
@@ -11,7 +11,7 @@ import net.minecraft.world.level.storage.loot.LootContext;
|
@@ -12,7 +12,7 @@ import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
import net.minecraft.world.level.storage.loot.ValidationContext;
|
import net.minecraft.world.level.storage.loot.ValidationContext;
|
||||||
|
|
||||||
public abstract class CompositeLootItemCondition implements LootItemCondition {
|
public abstract class CompositeLootItemCondition implements LootItemCondition {
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ Subject: [PATCH] Player operation limiter
|
|||||||
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
|
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
|
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 01687ea3acf449c49cbc615887a7dbdd3a693613..988992a181e35a3856817419cb4941c73a9c31f2 100644
|
index 7e4bf7ddc26fc087832f802856f14e268b0ca32b..1b9a5e8b061371649cbd464d1167c2e99e6494bc 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -420,6 +420,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -429,6 +429,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 com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
|
||||||
public @Nullable String clientBrandName = null; // Paper - Brand support
|
|
||||||
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
|
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
|
||||||
+ // Leaves start - player operation limiter
|
+ // Leaves start - player operation limiter
|
||||||
+ private int instaBreakCountPerTick = 0;
|
+ private int instaBreakCountPerTick = 0;
|
||||||
@@ -20,7 +20,7 @@ index 01687ea3acf449c49cbc615887a7dbdd3a693613..988992a181e35a3856817419cb4941c7
|
|||||||
|
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
||||||
@@ -744,6 +748,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -745,6 +749,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
this.tickClientLoadTimeout();
|
this.tickClientLoadTimeout();
|
||||||
@@ -28,7 +28,7 @@ index 01687ea3acf449c49cbc615887a7dbdd3a693613..988992a181e35a3856817419cb4941c7
|
|||||||
this.gameMode.tick();
|
this.gameMode.tick();
|
||||||
this.wardenSpawnTracker.tick();
|
this.wardenSpawnTracker.tick();
|
||||||
if (this.invulnerableTime > 0) {
|
if (this.invulnerableTime > 0) {
|
||||||
@@ -2933,4 +2938,31 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -2977,4 +2982,31 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
|
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@@ -61,7 +61,7 @@ index 01687ea3acf449c49cbc615887a7dbdd3a693613..988992a181e35a3856817419cb4941c7
|
|||||||
+ // Leaves end - player operation limiter
|
+ // Leaves end - player operation limiter
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
|
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||||
index b604cba2490a747661d6819251bc3b9a1d35c7d4..5e54d6de0430cd137fbe13ca8f17dc487ce52ff3 100644
|
index cfbf34964288526e93d0a5b212c1b60296c10430..9cce442c16ced8d9320a5760580ff13f02cbf8f1 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
|
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
|
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||||
@@ -300,6 +300,19 @@ public class ServerPlayerGameMode {
|
@@ -300,6 +300,19 @@ public class ServerPlayerGameMode {
|
||||||
@@ -85,7 +85,7 @@ index b604cba2490a747661d6819251bc3b9a1d35c7d4..5e54d6de0430cd137fbe13ca8f17dc48
|
|||||||
this.debugLogging(pos, true, sequence, message);
|
this.debugLogging(pos, true, sequence, message);
|
||||||
} else {
|
} else {
|
||||||
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
|
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
|
||||||
index 3f58574069f22d83298a77f253255b25724890ad..0c67e5481a43bf7c02bb54a8ea1abca77d53a292 100644
|
index 14387fa191fb52aaa8b25396292c1d528a6aed17..eff2c0418e1dc8dff1b9045d8f6ff619100964d1 100644
|
||||||
--- a/net/minecraft/world/item/BlockItem.java
|
--- a/net/minecraft/world/item/BlockItem.java
|
||||||
+++ b/net/minecraft/world/item/BlockItem.java
|
+++ b/net/minecraft/world/item/BlockItem.java
|
||||||
@@ -65,6 +65,21 @@ public class BlockItem extends Item {
|
@@ -65,6 +65,21 @@ public class BlockItem extends Item {
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Renewable Elytra
|
|||||||
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
|
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
|
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||||
index 483b0499f1f70b3aa8862e6cd8e512748492bee0..5467a1b28525386dfae2a04d8c69d23f163c74f5 100644
|
index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..d985f224f06f5a823f74b276477ededdbe77596a 100644
|
||||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||||
@@ -231,6 +231,20 @@ public class Phantom extends FlyingMob implements Enemy {
|
@@ -246,6 +246,20 @@ public class Phantom extends Mob implements Enemy {
|
||||||
return targetingConditions.test(level, this, entity);
|
return targetingConditions.test(level, this, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] MC Technical Survival Mode
|
|||||||
Will automatically overwrite some configuration after startup
|
Will automatically overwrite some configuration after startup
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 988992a181e35a3856817419cb4941c73a9c31f2..66110486725de7967e55839043b9fc9690e4c0f5 100644
|
index 1b9a5e8b061371649cbd464d1167c2e99e6494bc..c6adc1009df62699264d996a6eba85d7db4d3bcf 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -1614,7 +1614,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -1650,7 +1650,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
public boolean isInvulnerableTo(ServerLevel level, DamageSource damageSource) {
|
public boolean isInvulnerableTo(ServerLevel level, DamageSource damageSource) {
|
||||||
return (super.isInvulnerableTo(level, damageSource) // Paper - disable player cramming;
|
return (super.isInvulnerableTo(level, damageSource) // Paper - disable player cramming;
|
||||||
|| this.isChangingDimension() && !damageSource.is(DamageTypes.ENDER_PEARL)
|
|| this.isChangingDimension() && !damageSource.is(DamageTypes.ENDER_PEARL)
|
||||||
@@ -19,10 +19,10 @@ index 988992a181e35a3856817419cb4941c73a9c31f2..66110486725de7967e55839043b9fc96
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||||
index d813427cf20117014bc42af0eb7cdee037fbcd9c..35f8644a9b4704363f6fe1ca19135566a45ef835 100644
|
index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..d8effc3a9773d29319b8e2bd15abbf03f0996ce5 100644
|
||||||
--- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
--- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||||
+++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
+++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||||
@@ -64,7 +64,7 @@ public class EndCrystal extends Entity {
|
@@ -65,7 +65,7 @@ public class EndCrystal extends Entity {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paper start - Fix invulnerable end crystals
|
// Paper start - Fix invulnerable end crystals
|
||||||
@@ -32,10 +32,10 @@ index d813427cf20117014bc42af0eb7cdee037fbcd9c..35f8644a9b4704363f6fe1ca19135566
|
|||||||
|| ((ServerLevel) this.level()).getDragonFight() == null
|
|| ((ServerLevel) this.level()).getDragonFight() == null
|
||||||
|| ((ServerLevel) this.level()).getDragonFight().respawnStage == 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
|
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||||
index 5d23d8754b304d5e2fd54400cc81c7fe5c14a804..0f28b1befd42a85ffa5462e86d5cde142f9d1196 100644
|
index 17d54d38dcec39eefeb989cd576cc640a36e82f5..1d7a1739d6a3a55aacb33d57a58712350b150f64 100644
|
||||||
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
||||||
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||||
@@ -101,7 +101,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
|
@@ -100,7 +100,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
@@ -58,7 +58,7 @@ index 14a2514a408a66a83f7b5fb43b4c4dc8f23fd5f4..5427f5e1f0416a8dfa3e9c38c3ce69d6
|
|||||||
entity.spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) {
|
entity.spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) {
|
||||||
continue;
|
continue;
|
||||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
index 212a1a1410550a2456a88a948f377048447a1fc8..2d979850378c05ce569782d8e04a452f986612a7 100644
|
index 5f42af7c6fc82d6672ed06a2315254c9c5886ce4..e53b40c70c0a61cbe14a236a99725daa28512b0b 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
+++ b/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
|
@@ -275,7 +275,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: violetc <58360096+s-yh-china@users.noreply.github.com>
|
From: violetc <58360096+s-yh-china@users.noreply.github.com>
|
||||||
Date: Wed, 14 Dec 2022 14:47:06 +0800
|
Date: Wed, 14 Dec 2022 14:47:06 +0800
|
||||||
Subject: [PATCH] Stackable ShulkerBoxes
|
Subject: [PATCH] Item overstack util
|
||||||
|
|
||||||
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) and plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
|
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) and plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
|
||||||
|
|
||||||
diff --git a/net/minecraft/commands/arguments/item/ItemInput.java b/net/minecraft/commands/arguments/item/ItemInput.java
|
diff --git a/net/minecraft/commands/arguments/item/ItemInput.java b/net/minecraft/commands/arguments/item/ItemInput.java
|
||||||
index 643797124fe5a4489d0b7419b7e600c04f283ef2..51971a4ef18ab048dc576c26652982d57e440dc0 100644
|
index 643797124fe5a4489d0b7419b7e600c04f283ef2..04b4100da96aad50f08e8c59200eec934e7e873d 100644
|
||||||
--- a/net/minecraft/commands/arguments/item/ItemInput.java
|
--- a/net/minecraft/commands/arguments/item/ItemInput.java
|
||||||
+++ b/net/minecraft/commands/arguments/item/ItemInput.java
|
+++ b/net/minecraft/commands/arguments/item/ItemInput.java
|
||||||
@@ -39,11 +39,13 @@ public class ItemInput {
|
@@ -39,11 +39,13 @@ public class ItemInput {
|
||||||
@@ -15,95 +15,95 @@ index 643797124fe5a4489d0b7419b7e600c04f283ef2..51971a4ef18ab048dc576c26652982d5
|
|||||||
itemStack.applyComponents(this.components);
|
itemStack.applyComponents(this.components);
|
||||||
- if (allowOversizedStacks && count > itemStack.getMaxStackSize()) {
|
- if (allowOversizedStacks && count > itemStack.getMaxStackSize()) {
|
||||||
- throw ERROR_STACK_TOO_BIG.create(this.getItemName(), itemStack.getMaxStackSize());
|
- throw ERROR_STACK_TOO_BIG.create(this.getItemName(), itemStack.getMaxStackSize());
|
||||||
+ // Leaves start - stackable shulker boxes
|
+ // Leaves start - item over-stack util
|
||||||
+ if (allowOversizedStacks && count > org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack)) {
|
+ if (allowOversizedStacks && count > org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack)) {
|
||||||
+ throw ERROR_STACK_TOO_BIG.create(this.getItemName(), org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack));
|
+ throw ERROR_STACK_TOO_BIG.create(this.getItemName(), org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack));
|
||||||
} else {
|
} else {
|
||||||
return itemStack;
|
return itemStack;
|
||||||
}
|
}
|
||||||
+ // Leaves end - stackable shulker boxes
|
+ // Leaves end - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
public String serialize(HolderLookup.Provider levelRegistry) {
|
public String serialize(HolderLookup.Provider levelRegistry) {
|
||||||
diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java
|
diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java
|
||||||
index b81f98738ef166336e4cc3092b6ba63f385b68e3..e800abc1149db77bc9b7ee1aabd17526ebda377c 100644
|
index adba92a9ebef64561147427d1339f70e2701d93c..fc367026ca84b125bf3ccd261ef43a3833c1da5c 100644
|
||||||
--- a/net/minecraft/server/commands/GiveCommand.java
|
--- a/net/minecraft/server/commands/GiveCommand.java
|
||||||
+++ b/net/minecraft/server/commands/GiveCommand.java
|
+++ b/net/minecraft/server/commands/GiveCommand.java
|
||||||
@@ -52,7 +52,7 @@ public class GiveCommand {
|
@@ -55,7 +55,7 @@ public class GiveCommand {
|
||||||
private static int giveItem(CommandSourceStack source, ItemInput item, Collection<ServerPlayer> targets, int count) throws CommandSyntaxException {
|
private static int giveItem(CommandSourceStack source, ItemInput item, Collection<ServerPlayer> targets, int count) throws CommandSyntaxException {
|
||||||
ItemStack itemStack = item.createItemStack(1, false);
|
ItemStack itemStack = item.createItemStack(1, false);
|
||||||
final Component displayName = itemStack.getDisplayName(); // Paper - get display name early
|
final Component displayName = itemStack.getDisplayName(); // Paper - get display name early
|
||||||
- int maxStackSize = itemStack.getMaxStackSize();
|
- int maxStackSize = itemStack.getMaxStackSize();
|
||||||
+ int maxStackSize = org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack); // Leaves - stackable shulker boxes
|
+ int maxStackSize = org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack); // Leaves - item over-stack util
|
||||||
int i = maxStackSize * 100;
|
int i = maxStackSize * 100;
|
||||||
if (count > i) {
|
if (count > i) {
|
||||||
source.sendFailure(Component.translatable("commands.give.failed.toomanyitems", i, itemStack.getDisplayName()));
|
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
|
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 9041830c19e2899479e1519488faba5c416ccd88..ca814ebdb05ca3af138bf087f26d2cf50baf3b9c 100644
|
index e6a1dfb9a9f60791457b86d20e86fab8cca79c39..6622d11f970def6adc2a732187004413a9501c95 100644
|
||||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -2974,7 +2974,7 @@ public class ServerGamePacketListenerImpl
|
@@ -2986,7 +2986,7 @@ public class ServerGamePacketListenerImpl
|
||||||
} else if (slot.mayPlace(cursor)) {
|
} else if (slot.mayPlace(cursor)) {
|
||||||
if (ItemStack.isSameItemSameComponents(clickedItem, cursor)) {
|
if (ItemStack.isSameItemSameComponents(clickedItem, cursor)) {
|
||||||
int toPlace = packet.buttonNum() == 0 ? cursor.getCount() : 1;
|
int toPlace = packet.buttonNum() == 0 ? cursor.getCount() : 1;
|
||||||
- toPlace = Math.min(toPlace, clickedItem.getMaxStackSize() - clickedItem.getCount());
|
- toPlace = Math.min(toPlace, clickedItem.getMaxStackSize() - clickedItem.getCount());
|
||||||
+ toPlace = Math.min(toPlace, org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(clickedItem) - clickedItem.getCount()); // Leaves - stackable shulker boxes
|
+ toPlace = Math.min(toPlace, org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(clickedItem) - clickedItem.getCount()); // Leaves - item over-stack util
|
||||||
toPlace = Math.min(toPlace, slot.container.getMaxStackSize() - clickedItem.getCount());
|
toPlace = Math.min(toPlace, slot.container.getMaxStackSize() - clickedItem.getCount());
|
||||||
if (toPlace == 1) {
|
if (toPlace == 1) {
|
||||||
action = InventoryAction.PLACE_ONE;
|
action = InventoryAction.PLACE_ONE;
|
||||||
@@ -3010,7 +3010,7 @@ public class ServerGamePacketListenerImpl
|
@@ -3022,7 +3022,7 @@ public class ServerGamePacketListenerImpl
|
||||||
}
|
}
|
||||||
} else if (ItemStack.isSameItemSameComponents(cursor, clickedItem)) {
|
} else if (ItemStack.isSameItemSameComponents(cursor, clickedItem)) {
|
||||||
if (clickedItem.getCount() >= 0) {
|
if (clickedItem.getCount() >= 0) {
|
||||||
- if (clickedItem.getCount() + cursor.getCount() <= cursor.getMaxStackSize()) {
|
- if (clickedItem.getCount() + cursor.getCount() <= cursor.getMaxStackSize()) {
|
||||||
+ if (clickedItem.getCount() + cursor.getCount() <= org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(cursor)) { // Leaves - stackable shulker boxes
|
+ if (clickedItem.getCount() + cursor.getCount() <= org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(cursor)) { // Leaves - item over-stack util
|
||||||
// As of 1.5, this is result slots only
|
// As of 1.5, this is result slots only
|
||||||
action = InventoryAction.PICKUP_ALL;
|
action = InventoryAction.PICKUP_ALL;
|
||||||
}
|
}
|
||||||
@@ -3269,6 +3269,7 @@ public class ServerGamePacketListenerImpl
|
@@ -3233,6 +3233,7 @@ public class ServerGamePacketListenerImpl
|
||||||
this.player.containerMenu.broadcastFullState();
|
this.player.containerMenu.broadcastFullState();
|
||||||
} else {
|
} else {
|
||||||
this.player.containerMenu.broadcastChanges();
|
this.player.containerMenu.broadcastChanges();
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.shulkerBoxStackSize > 1) this.player.containerMenu.broadcastCarriedItem(); // Leaves - stackable shulker boxes - force send carried item
|
+ if (org.leavesmc.leaves.util.ItemOverstackUtils.hasOverstackingItem()) this.player.containerMenu.broadcastCarriedItem(); // Leaves - item over-stack util - force send carried item
|
||||||
}
|
}
|
||||||
if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes.
|
if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes.
|
||||||
}
|
}
|
||||||
@@ -3381,7 +3382,7 @@ public class ServerGamePacketListenerImpl
|
@@ -3343,7 +3344,7 @@ public class ServerGamePacketListenerImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean flag1 = packet.slotNum() >= 1 && packet.slotNum() <= 45;
|
boolean flag1 = packet.slotNum() >= 1 && packet.slotNum() <= 45;
|
||||||
- boolean flag2 = itemStack.isEmpty() || itemStack.getCount() <= itemStack.getMaxStackSize();
|
- boolean flag2 = itemStack.isEmpty() || itemStack.getCount() <= itemStack.getMaxStackSize();
|
||||||
+ boolean flag2 = itemStack.isEmpty() || itemStack.getCount() <= org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack); // Leaves - stackable shulker boxes
|
+ boolean flag2 = itemStack.isEmpty() || itemStack.getCount() <= org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack); // Leaves - item over-stack util
|
||||||
if (flag || (flag1 && !ItemStack.matches(this.player.inventoryMenu.getSlot(packet.slotNum()).getItem(), packet.itemStack()))) { // Insist on valid slot
|
if (flag || (flag1 && !ItemStack.matches(this.player.inventoryMenu.getSlot(packet.slotNum()).getItem(), packet.itemStack()))) { // Insist on valid slot
|
||||||
// CraftBukkit start - Call click event
|
// CraftBukkit start - Call click event
|
||||||
org.bukkit.inventory.InventoryView inventory = this.player.inventoryMenu.getBukkitView();
|
org.bukkit.inventory.InventoryView inventory = this.player.inventoryMenu.getBukkitView();
|
||||||
@@ -3423,6 +3424,7 @@ public class ServerGamePacketListenerImpl
|
@@ -3385,6 +3386,7 @@ public class ServerGamePacketListenerImpl
|
||||||
this.player.inventoryMenu.getSlot(packet.slotNum()).setByPlayer(itemStack);
|
this.player.inventoryMenu.getSlot(packet.slotNum()).setByPlayer(itemStack);
|
||||||
this.player.inventoryMenu.setRemoteSlot(packet.slotNum(), itemStack);
|
this.player.inventoryMenu.setRemoteSlot(packet.slotNum(), itemStack);
|
||||||
this.player.inventoryMenu.broadcastChanges();
|
this.player.inventoryMenu.broadcastChanges();
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.shulkerBoxStackSize > 1) this.player.containerMenu.sendSingleSlot(packet.slotNum(), itemStack); // Leaves - stackable shulker boxes - force send carried item
|
+ if (org.leavesmc.leaves.util.ItemOverstackUtils.hasOverstackingItem()) this.player.containerMenu.sendSingleSlot(packet.slotNum(), itemStack); // Leaves - item over-stack util - force send carried item
|
||||||
if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes.
|
if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes.
|
||||||
} else if (flag && flag2) {
|
} else if (flag && flag2) {
|
||||||
if (this.dropSpamThrottler.isUnderThreshold()) {
|
if (this.dropSpamThrottler.isUnderThreshold()) {
|
||||||
diff --git a/net/minecraft/world/Container.java b/net/minecraft/world/Container.java
|
diff --git a/net/minecraft/world/Container.java b/net/minecraft/world/Container.java
|
||||||
index b382665cc125b8b5c0938e5e55984e4bf91d37ff..f575b464a8ce430646cb872ae6206a9a0677736b 100644
|
index b382665cc125b8b5c0938e5e55984e4bf91d37ff..86cac164a2bf0e76528396e6aabbfd64cfc29559 100644
|
||||||
--- a/net/minecraft/world/Container.java
|
--- a/net/minecraft/world/Container.java
|
||||||
+++ b/net/minecraft/world/Container.java
|
+++ b/net/minecraft/world/Container.java
|
||||||
@@ -32,6 +32,12 @@ public interface Container extends Clearable, Iterable<ItemStack> {
|
@@ -32,6 +32,12 @@ public interface Container extends Clearable, Iterable<ItemStack> {
|
||||||
return Math.min(this.getMaxStackSize(), stack.getMaxStackSize());
|
return Math.min(this.getMaxStackSize(), stack.getMaxStackSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Leaves start - stackable shulker boxes
|
+ // Leaves start - item over-stack util
|
||||||
+ default int getMaxStackLeaves(ItemStack stack) {
|
+ default int getMaxStackLeaves(ItemStack stack) {
|
||||||
+ return Math.min(this.getMaxStackSize(), org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack));
|
+ return Math.min(this.getMaxStackSize(), org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(stack));
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - stackable shulker boxes
|
+ // Leaves end - item over-stack util
|
||||||
+
|
+
|
||||||
void setChanged();
|
void setChanged();
|
||||||
|
|
||||||
boolean stillValid(Player player);
|
boolean stillValid(Player player);
|
||||||
diff --git a/net/minecraft/world/SimpleContainer.java b/net/minecraft/world/SimpleContainer.java
|
diff --git a/net/minecraft/world/SimpleContainer.java b/net/minecraft/world/SimpleContainer.java
|
||||||
index 133e042371bcf84f1935903ec57d204e3b7abd84..201599988e20219b6a99bf1594ad6c0c19e09038 100644
|
index d907e24d563e27acab2f2bf9711b1755ea9afd19..75170c8d3be477a6ea2a1d62018a6ab630b0e54e 100644
|
||||||
--- a/net/minecraft/world/SimpleContainer.java
|
--- a/net/minecraft/world/SimpleContainer.java
|
||||||
+++ b/net/minecraft/world/SimpleContainer.java
|
+++ b/net/minecraft/world/SimpleContainer.java
|
||||||
@@ -211,7 +211,7 @@ public class SimpleContainer implements Container, StackedContentsCompatible {
|
@@ -211,7 +211,7 @@ public class SimpleContainer implements Container, StackedContentsCompatible {
|
||||||
@@ -111,7 +111,7 @@ index 133e042371bcf84f1935903ec57d204e3b7abd84..201599988e20219b6a99bf1594ad6c0c
|
|||||||
public void setItem(int index, ItemStack stack) {
|
public void setItem(int index, ItemStack stack) {
|
||||||
this.items.set(index, stack);
|
this.items.set(index, stack);
|
||||||
- stack.limitSize(this.getMaxStackSize(stack));
|
- stack.limitSize(this.getMaxStackSize(stack));
|
||||||
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - stackable shulker boxes
|
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
|
||||||
this.setChanged();
|
this.setChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,125 +120,88 @@ index 133e042371bcf84f1935903ec57d204e3b7abd84..201599988e20219b6a99bf1594ad6c0c
|
|||||||
|
|
||||||
private void moveItemsBetweenStacks(ItemStack stack, ItemStack other) {
|
private void moveItemsBetweenStacks(ItemStack stack, ItemStack other) {
|
||||||
- int maxStackSize = this.getMaxStackSize(other);
|
- int maxStackSize = this.getMaxStackSize(other);
|
||||||
+ int maxStackSize = this.getMaxStackLeaves(other); // Leaves - stackable shulker boxes
|
+ int maxStackSize = this.getMaxStackLeaves(other); // Leaves - item over-stack util
|
||||||
int min = Math.min(stack.getCount(), maxStackSize - other.getCount());
|
int min = Math.min(stack.getCount(), maxStackSize - other.getCount());
|
||||||
if (min > 0) {
|
if (min > 0) {
|
||||||
other.grow(min);
|
other.grow(min);
|
||||||
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
|
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
|
||||||
index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..b0e60d1d2a44bb35c87c35e82a172a38406b6c54 100644
|
index 51804b611f469f2ab53e455e8c633b867b00cc88..df24938d5136948b151d3c1c72ccb2ec97640478 100644
|
||||||
--- a/net/minecraft/world/entity/item/ItemEntity.java
|
--- a/net/minecraft/world/entity/item/ItemEntity.java
|
||||||
+++ b/net/minecraft/world/entity/item/ItemEntity.java
|
+++ b/net/minecraft/world/entity/item/ItemEntity.java
|
||||||
@@ -281,10 +281,52 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
@@ -279,10 +279,15 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||||
|
|
||||||
private boolean isMergable() {
|
private boolean isMergable() {
|
||||||
ItemStack item = this.getItem();
|
ItemStack item = this.getItem();
|
||||||
- return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && item.getCount() < item.getMaxStackSize(); // Paper - Alternative item-despawn-rate
|
- return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && item.getCount() < item.getMaxStackSize(); // Paper - Alternative item-despawn-rate
|
||||||
+ return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && item.getCount() < org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(item); // Paper - Alternative item-despawn-rate // Leaves - stackable shulker boxes
|
+ return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && item.getCount() < org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(item); // Paper - Alternative item-despawn-rate // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Leaves end - stackable shulker boxes
|
|
||||||
+ private boolean tryStackShulkerBoxes(ItemEntity other) {
|
|
||||||
+ ItemStack selfStack = this.getItem();
|
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.shulkerBoxStackSize == 1 ||
|
|
||||||
+ !(selfStack.getItem() instanceof net.minecraft.world.item.BlockItem blockItem) ||
|
|
||||||
+ !(blockItem.getBlock() instanceof net.minecraft.world.level.block.ShulkerBoxBlock)
|
|
||||||
+ ) {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ItemStack otherStack = other.getItem();
|
|
||||||
+ if (selfStack.getItem() == otherStack.getItem()
|
|
||||||
+ && org.leavesmc.leaves.util.ShulkerBoxUtils.shulkerBoxNoItem(selfStack)
|
|
||||||
+ && org.leavesmc.leaves.util.ShulkerBoxUtils.shulkerBoxNoItem(otherStack)
|
|
||||||
+ && Objects.equals(selfStack.getComponents(), otherStack.getComponents()) // empty block entity tags are cleaned up when spawning
|
|
||||||
+ && selfStack.getCount() != org.leavesmc.leaves.LeavesConfig.modify.shulkerBoxStackSize) {
|
|
||||||
+ int amount = Math.min(otherStack.getCount(), org.leavesmc.leaves.LeavesConfig.modify.shulkerBoxStackSize - selfStack.getCount());
|
|
||||||
+
|
|
||||||
+ selfStack.grow(amount);
|
|
||||||
+ this.setItem(selfStack);
|
|
||||||
+
|
|
||||||
+ this.pickupDelay = Math.max(other.pickupDelay, this.pickupDelay);
|
|
||||||
+ this.age = Math.min(other.getAge(), this.age);
|
|
||||||
+
|
|
||||||
+ otherStack.shrink(amount);
|
|
||||||
+ if (otherStack.isEmpty()) {
|
|
||||||
+ other.discard();
|
|
||||||
+ }
|
|
||||||
+ else {
|
|
||||||
+ other.setItem(otherStack);
|
|
||||||
+ }
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ // Leaves end - stackable shulker boxes
|
|
||||||
+
|
|
||||||
private void tryToMerge(ItemEntity itemEntity) {
|
private void tryToMerge(ItemEntity itemEntity) {
|
||||||
+ // Leaves start - stackable shulker boxes
|
+ // Leaves start - item over-stack util
|
||||||
+ if (tryStackShulkerBoxes(itemEntity)) {
|
+ if (org.leavesmc.leaves.util.ItemOverstackUtils.tryStackItems(this, itemEntity)) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - stackable shulker boxes
|
+ // Leaves end - item over-stack util
|
||||||
ItemStack item = this.getItem();
|
ItemStack item = this.getItem();
|
||||||
ItemStack item1 = itemEntity.getItem();
|
ItemStack item1 = itemEntity.getItem();
|
||||||
if (Objects.equals(this.target, itemEntity.target) && areMergable(item, item1)) {
|
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
|
diff --git a/net/minecraft/world/entity/player/Inventory.java b/net/minecraft/world/entity/player/Inventory.java
|
||||||
index d9cb4f0ed0c4f63362c837aeef3c4194911455c9..57bf2819271b3293a065b58d31b609f8463811b4 100644
|
index a6bb436dc80daf6901dc027a6011ead4b3ed27e2..71df58ae26325a2d28b6679733c474c0c59f7654 100644
|
||||||
--- a/net/minecraft/world/entity/player/Inventory.java
|
--- a/net/minecraft/world/entity/player/Inventory.java
|
||||||
+++ b/net/minecraft/world/entity/player/Inventory.java
|
+++ b/net/minecraft/world/entity/player/Inventory.java
|
||||||
@@ -148,10 +148,12 @@ public class Inventory implements Container, Nameable {
|
@@ -165,10 +165,12 @@ public class Inventory implements Container, Nameable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasRemainingSpaceForItem(ItemStack destination, ItemStack origin) {
|
private boolean hasRemainingSpaceForItem(ItemStack destination, ItemStack origin) {
|
||||||
+ // Leaves start - stackable shulker boxes
|
+ // Leaves start - item over-stack util
|
||||||
return !destination.isEmpty()
|
return !destination.isEmpty()
|
||||||
- && destination.isStackable()
|
- && destination.isStackable()
|
||||||
- && destination.getCount() < this.getMaxStackSize(destination)
|
- && destination.getCount() < this.getMaxStackSize(destination)
|
||||||
+ && org.leavesmc.leaves.util.ShulkerBoxUtils.isStackable(destination)
|
+ && org.leavesmc.leaves.util.ItemOverstackUtils.isStackable(destination)
|
||||||
+ && destination.getCount() < org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(destination)
|
+ && destination.getCount() < org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(destination)
|
||||||
&& ItemStack.isSameItemSameComponents(destination, origin); // Paper - check if itemstack is stackable first
|
&& ItemStack.isSameItemSameComponents(destination, origin); // Paper - check if itemstack is stackable first
|
||||||
+ // Leaves end - stackable shulker boxes
|
+ // Leaves end - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
// CraftBukkit start - Watch method above! :D
|
// CraftBukkit start - Watch method above! :D
|
||||||
@@ -164,7 +166,7 @@ public class Inventory implements Container, Nameable {
|
@@ -181,7 +183,7 @@ public class Inventory implements Container, Nameable {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.hasRemainingSpaceForItem(itemInSlot, itemStack)) {
|
if (this.hasRemainingSpaceForItem(itemInSlot, itemStack)) {
|
||||||
- remains -= (itemInSlot.getMaxStackSize() < this.getMaxStackSize() ? itemInSlot.getMaxStackSize() : this.getMaxStackSize()) - itemInSlot.getCount();
|
- remains -= (itemInSlot.getMaxStackSize() < this.getMaxStackSize() ? itemInSlot.getMaxStackSize() : this.getMaxStackSize()) - itemInSlot.getCount();
|
||||||
+ remains -= (org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemInSlot) < this.getMaxStackSize() ? org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemInSlot) : this.getMaxStackSize()) - itemInSlot.getCount(); // Leaves - stackable shulker boxes
|
+ remains -= (org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemInSlot) < this.getMaxStackSize() ? org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemInSlot) : this.getMaxStackSize()) - itemInSlot.getCount(); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
if (remains <= 0) {
|
if (remains <= 0) {
|
||||||
return itemStack.getCount();
|
return itemStack.getCount();
|
||||||
@@ -173,7 +175,7 @@ public class Inventory implements Container, Nameable {
|
@@ -190,7 +192,7 @@ public class Inventory implements Container, Nameable {
|
||||||
|
|
||||||
ItemStack itemInOffhand = this.equipment.get(EquipmentSlot.OFFHAND);
|
ItemStack itemInOffhand = this.equipment.get(EquipmentSlot.OFFHAND);
|
||||||
if (this.hasRemainingSpaceForItem(itemInOffhand, itemStack)) {
|
if (this.hasRemainingSpaceForItem(itemInOffhand, itemStack)) {
|
||||||
- remains -= (itemInOffhand.getMaxStackSize() < this.getMaxStackSize() ? itemInOffhand.getMaxStackSize() : this.getMaxStackSize()) - itemInOffhand.getCount();
|
- remains -= (itemInOffhand.getMaxStackSize() < this.getMaxStackSize() ? itemInOffhand.getMaxStackSize() : this.getMaxStackSize()) - itemInOffhand.getCount();
|
||||||
+ remains -= (org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemInOffhand) < this.getMaxStackSize() ? org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemInOffhand) : this.getMaxStackSize()) - itemInOffhand.getCount(); // Leaves - stackable shulker boxes
|
+ remains -= (org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemInOffhand) < this.getMaxStackSize() ? org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemInOffhand) : this.getMaxStackSize()) - itemInOffhand.getCount(); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
if (remains <= 0) {
|
if (remains <= 0) {
|
||||||
return itemStack.getCount();
|
return itemStack.getCount();
|
||||||
@@ -297,7 +299,7 @@ public class Inventory implements Container, Nameable {
|
@@ -314,7 +316,7 @@ public class Inventory implements Container, Nameable {
|
||||||
this.setItem(slot, item);
|
this.setItem(slot, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
- int i = this.getMaxStackSize(item) - item.getCount();
|
- int i = this.getMaxStackSize(item) - item.getCount();
|
||||||
+ int i = this.getMaxStackLeaves(item) - item.getCount(); // Leaves - stackable shulker boxes
|
+ int i = this.getMaxStackLeaves(item) - item.getCount(); // Leaves - item over-stack util
|
||||||
int min = Math.min(count, i);
|
int min = Math.min(count, i);
|
||||||
if (min == 0) {
|
if (min == 0) {
|
||||||
return count;
|
return count;
|
||||||
@@ -403,7 +405,7 @@ public class Inventory implements Container, Nameable {
|
@@ -420,7 +422,7 @@ public class Inventory implements Container, Nameable {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
- int i = stack.getMaxStackSize() - this.getItem(slotWithRemainingSpace).getCount();
|
- int i = stack.getMaxStackSize() - this.getItem(slotWithRemainingSpace).getCount();
|
||||||
+ int i = org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack) - this.getItem(slotWithRemainingSpace).getCount(); // Leaves - stackable shulker boxes
|
+ int i = org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(stack) - this.getItem(slotWithRemainingSpace).getCount(); // Leaves - item over-stack util
|
||||||
if (this.add(slotWithRemainingSpace, stack.split(i)) && sendPacket && this.player instanceof ServerPlayer serverPlayer) {
|
if (this.add(slotWithRemainingSpace, stack.split(i)) && sendPacket && this.player instanceof ServerPlayer serverPlayer) {
|
||||||
serverPlayer.connection.send(this.createInventoryUpdatePacket(slotWithRemainingSpace));
|
serverPlayer.connection.send(this.createInventoryUpdatePacket(slotWithRemainingSpace));
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/entity/player/StackedItemContents.java b/net/minecraft/world/entity/player/StackedItemContents.java
|
diff --git a/net/minecraft/world/entity/player/StackedItemContents.java b/net/minecraft/world/entity/player/StackedItemContents.java
|
||||||
index 83ccde54c625d40dc595e000c533f60aa929bd5a..1b92676459468d42931b84e5ceb19e8d30302f06 100644
|
index 83ccde54c625d40dc595e000c533f60aa929bd5a..6779503888e6d311758cffde582b0efbd66a33de 100644
|
||||||
--- a/net/minecraft/world/entity/player/StackedItemContents.java
|
--- a/net/minecraft/world/entity/player/StackedItemContents.java
|
||||||
+++ b/net/minecraft/world/entity/player/StackedItemContents.java
|
+++ b/net/minecraft/world/entity/player/StackedItemContents.java
|
||||||
@@ -23,7 +23,7 @@ public class StackedItemContents {
|
@@ -23,7 +23,7 @@ public class StackedItemContents {
|
||||||
@@ -246,12 +209,12 @@ index 83ccde54c625d40dc595e000c533f60aa929bd5a..1b92676459468d42931b84e5ceb19e8d
|
|||||||
|
|
||||||
public void accountStack(ItemStack stack) {
|
public void accountStack(ItemStack stack) {
|
||||||
- this.accountStack(stack, stack.getMaxStackSize());
|
- this.accountStack(stack, stack.getMaxStackSize());
|
||||||
+ this.accountStack(stack, org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack)); // Leaves - stackable shulker boxes
|
+ this.accountStack(stack, org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(stack)); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
public void accountStack(ItemStack stack, int maxStackSize) {
|
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
|
diff --git a/net/minecraft/world/entity/vehicle/ContainerEntity.java b/net/minecraft/world/entity/vehicle/ContainerEntity.java
|
||||||
index feebd1610ebd3c26a337259c14f5c774dc72b937..7df6ff842e41763aec2d88d1f8a5f7503932d905 100644
|
index 02d2efef2dc0f0e12eac0c71fa290af706f7694d..99f109e2653eff10c011f380694bd77a76381cee 100644
|
||||||
--- a/net/minecraft/world/entity/vehicle/ContainerEntity.java
|
--- a/net/minecraft/world/entity/vehicle/ContainerEntity.java
|
||||||
+++ b/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 {
|
@@ -163,7 +163,7 @@ public interface ContainerEntity extends Container, MenuProvider {
|
||||||
@@ -259,61 +222,61 @@ index feebd1610ebd3c26a337259c14f5c774dc72b937..7df6ff842e41763aec2d88d1f8a5f750
|
|||||||
this.unpackChestVehicleLootTable(null);
|
this.unpackChestVehicleLootTable(null);
|
||||||
this.getItemStacks().set(slot, stack);
|
this.getItemStacks().set(slot, stack);
|
||||||
- stack.limitSize(this.getMaxStackSize(stack));
|
- stack.limitSize(this.getMaxStackSize(stack));
|
||||||
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - stackable shulker boxes
|
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
default SlotAccess getChestVehicleSlot(final int index) {
|
default SlotAccess getChestVehicleSlot(final int index) {
|
||||||
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
index 2a4763c951ddc78c9d8a39e661e59bbffc5cf109..8aa689129334f75986fb7a18895e2c3fb3c365c8 100644
|
index e5811924577fb04fd2d67fb4a32a9de1dbe3c7b1..863b9ab56304a58e8ecbe43657857b95a19cea87 100644
|
||||||
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
@@ -271,6 +271,13 @@ public abstract class AbstractContainerMenu {
|
@@ -295,6 +295,13 @@ public abstract class AbstractContainerMenu {
|
||||||
this.sendAllDataToRemote();
|
this.sendAllDataToRemote();
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Leaves start - stackable shulker boxes
|
+ // Leaves start - item over-stack util
|
||||||
+ public void sendSingleSlot(int slotIndex, ItemStack item) {
|
+ public void sendSingleSlot(int slotIndex, ItemStack item) {
|
||||||
+ if (this.synchronizer != null) {
|
+ if (this.synchronizer != null) {
|
||||||
+ this.synchronizer.sendSlotChange(this, slotIndex, item);
|
+ this.synchronizer.sendSlotChange(this, slotIndex, item);
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ // Leaves end - stackable shulker boxes
|
+ // Leaves end - item over-stack util
|
||||||
private void updateDataSlotListeners(int slotIndex, int value) {
|
private void updateDataSlotListeners(int slotIndex, int value) {
|
||||||
for (ContainerListener containerListener : this.containerListeners) {
|
for (ContainerListener containerListener : this.containerListeners) {
|
||||||
containerListener.dataChanged(this, slotIndex, value);
|
containerListener.dataChanged(this, slotIndex, value);
|
||||||
@@ -428,7 +435,7 @@ public abstract class AbstractContainerMenu {
|
@@ -452,7 +459,7 @@ public abstract class AbstractContainerMenu {
|
||||||
&& (this.quickcraftType == 2 || carried1.getCount() >= this.quickcraftSlots.size())
|
&& (this.quickcraftType == 2 || carried1.getCount() >= this.quickcraftSlots.size())
|
||||||
&& this.canDragTo(slot1)) {
|
&& this.canDragTo(slot1)) {
|
||||||
int i2 = slot1.hasItem() ? slot1.getItem().getCount() : 0;
|
int i2 = slot1.hasItem() ? slot1.getItem().getCount() : 0;
|
||||||
- int min = Math.min(itemStack.getMaxStackSize(), slot1.getMaxStackSize(itemStack));
|
- int min = Math.min(itemStack.getMaxStackSize(), slot1.getMaxStackSize(itemStack));
|
||||||
+ int min = Math.min(org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack), slot1.getMaxStackSize(itemStack)); // Leaves - stackable shulker boxes
|
+ int min = Math.min(org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack), slot1.getMaxStackSize(itemStack)); // Leaves - item over-stack util
|
||||||
int min1 = Math.min(getQuickCraftPlaceCount(this.quickcraftSlots, this.quickcraftType, itemStack) + i2, min);
|
int min1 = Math.min(getQuickCraftPlaceCount(this.quickcraftSlots, this.quickcraftType, itemStack) + i2, min);
|
||||||
count -= min1 - i2;
|
count -= min1 - i2;
|
||||||
// slot1.setByPlayer(itemStack.copyWithCount(min1));
|
// slot1.setByPlayer(itemStack.copyWithCount(min1));
|
||||||
@@ -542,7 +549,7 @@ public abstract class AbstractContainerMenu {
|
@@ -564,7 +571,7 @@ public abstract class AbstractContainerMenu {
|
||||||
slot.setByPlayer(carried2);
|
slot.setByPlayer(carried2);
|
||||||
}
|
}
|
||||||
} else if (ItemStack.isSameItemSameComponents(carried, carried2)) {
|
} else if (ItemStack.isSameItemSameComponents(carried, carried2)) {
|
||||||
- Optional<ItemStack> optional1 = slot.tryRemove(carried.getCount(), carried2.getMaxStackSize() - carried2.getCount(), player);
|
- Optional<ItemStack> optional1 = slot.tryRemove(carried.getCount(), carried2.getMaxStackSize() - carried2.getCount(), player);
|
||||||
+ Optional<ItemStack> optional1 = slot.tryRemove(carried.getCount(), org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(carried2) - carried2.getCount(), player); // Leaves - stackable shulker boxes
|
+ Optional<ItemStack> optional1 = slot.tryRemove(carried.getCount(), org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(carried2) - carried2.getCount(), player); // Leaves - item over-stack util
|
||||||
optional1.ifPresent(itemStack2 -> {
|
optional1.ifPresent(itemStack2 -> {
|
||||||
carried2.grow(itemStack2.getCount());
|
carried2.grow(itemStack2.getCount());
|
||||||
slot.onTake(player, itemStack2);
|
slot.onTake(player, itemStack2);
|
||||||
@@ -604,7 +611,7 @@ public abstract class AbstractContainerMenu {
|
@@ -626,7 +633,7 @@ public abstract class AbstractContainerMenu {
|
||||||
Slot slot2 = this.slots.get(slotId);
|
Slot slot2 = this.slots.get(slotId);
|
||||||
if (slot2.hasItem()) {
|
if (slot2.hasItem()) {
|
||||||
ItemStack itemStack = slot2.getItem();
|
ItemStack itemStack = slot2.getItem();
|
||||||
- this.setCarried(itemStack.copyWithCount(itemStack.getMaxStackSize()));
|
- this.setCarried(itemStack.copyWithCount(itemStack.getMaxStackSize()));
|
||||||
+ this.setCarried(itemStack.copyWithCount(org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack))); // Leaves - stackable shulker boxes
|
+ 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) {
|
} else if (clickType == ClickType.THROW && this.getCarried().isEmpty() && slotId >= 0) {
|
||||||
Slot slot2 = this.slots.get(slotId);
|
Slot slot2 = this.slots.get(slotId);
|
||||||
@@ -635,15 +642,15 @@ public abstract class AbstractContainerMenu {
|
@@ -657,15 +664,15 @@ public abstract class AbstractContainerMenu {
|
||||||
int maxStackSize = button == 0 ? 1 : -1;
|
int maxStackSize = button == 0 ? 1 : -1;
|
||||||
|
|
||||||
for (int i3 = 0; i3 < 2; i3++) {
|
for (int i3 = 0; i3 < 2; i3++) {
|
||||||
- for (int i4 = count; i4 >= 0 && i4 < this.slots.size() && itemStack.getCount() < itemStack.getMaxStackSize(); i4 += maxStackSize) {
|
- for (int i4 = count; i4 >= 0 && i4 < this.slots.size() && itemStack.getCount() < itemStack.getMaxStackSize(); i4 += maxStackSize) {
|
||||||
+ for (int i4 = count; i4 >= 0 && i4 < this.slots.size() && itemStack.getCount() < org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack); i4 += maxStackSize) { // Leaves - stackable shulker boxes
|
+ for (int i4 = count; i4 >= 0 && i4 < this.slots.size() && itemStack.getCount() < org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack); i4 += maxStackSize) { // Leaves - item over-stack util
|
||||||
Slot slot3 = this.slots.get(i4);
|
Slot slot3 = this.slots.get(i4);
|
||||||
if (slot3.hasItem()
|
if (slot3.hasItem()
|
||||||
&& canItemQuickReplace(slot3, itemStack, true)
|
&& canItemQuickReplace(slot3, itemStack, true)
|
||||||
@@ -322,49 +285,49 @@ index 2a4763c951ddc78c9d8a39e661e59bbffc5cf109..8aa689129334f75986fb7a18895e2c3f
|
|||||||
ItemStack item1 = slot3.getItem();
|
ItemStack item1 = slot3.getItem();
|
||||||
- if (i3 != 0 || item1.getCount() != item1.getMaxStackSize()) {
|
- if (i3 != 0 || item1.getCount() != item1.getMaxStackSize()) {
|
||||||
- ItemStack itemStack1 = slot3.safeTake(item1.getCount(), itemStack.getMaxStackSize() - itemStack.getCount(), player);
|
- ItemStack itemStack1 = slot3.safeTake(item1.getCount(), itemStack.getMaxStackSize() - itemStack.getCount(), player);
|
||||||
+ if (i3 != 0 || item1.getCount() != org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(item1)) { // Leaves - stackable shulker boxes
|
+ if (i3 != 0 || item1.getCount() != org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(item1)) { // Leaves - item over-stack util
|
||||||
+ ItemStack itemStack1 = slot3.safeTake(item1.getCount(), org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack) - itemStack.getCount(), player); // Leaves - stackable shulker boxes
|
+ ItemStack itemStack1 = slot3.safeTake(item1.getCount(), org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack) - itemStack.getCount(), player); // Leaves - item over-stack util
|
||||||
itemStack.grow(itemStack1.getCount());
|
itemStack.grow(itemStack1.getCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -761,7 +768,7 @@ public abstract class AbstractContainerMenu {
|
@@ -783,7 +790,7 @@ public abstract class AbstractContainerMenu {
|
||||||
i = endIndex - 1;
|
i = endIndex - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (stack.isStackable()) {
|
- if (stack.isStackable()) {
|
||||||
+ if (org.leavesmc.leaves.util.ShulkerBoxUtils.isStackable(stack)) { // Leaves - stackable shulker boxes
|
+ if (org.leavesmc.leaves.util.ItemOverstackUtils.isStackable(stack)) { // Leaves - item over-stack util
|
||||||
while (!stack.isEmpty() && (reverseDirection ? i >= startIndex : i < endIndex)) {
|
while (!stack.isEmpty() && (reverseDirection ? i >= startIndex : i < endIndex)) {
|
||||||
Slot slot = this.slots.get(i);
|
Slot slot = this.slots.get(i);
|
||||||
ItemStack item = slot.getItem();
|
ItemStack item = slot.getItem();
|
||||||
@@ -862,7 +869,7 @@ public abstract class AbstractContainerMenu {
|
@@ -884,7 +891,7 @@ public abstract class AbstractContainerMenu {
|
||||||
public static boolean canItemQuickReplace(@Nullable Slot slot, ItemStack stack, boolean stackSizeMatters) {
|
public static boolean canItemQuickReplace(@Nullable Slot slot, ItemStack stack, boolean stackSizeMatters) {
|
||||||
boolean flag = slot == null || !slot.hasItem();
|
boolean flag = slot == null || !slot.hasItem();
|
||||||
return !flag && ItemStack.isSameItemSameComponents(stack, slot.getItem())
|
return !flag && ItemStack.isSameItemSameComponents(stack, slot.getItem())
|
||||||
- ? slot.getItem().getCount() + (stackSizeMatters ? 0 : stack.getCount()) <= stack.getMaxStackSize()
|
- ? slot.getItem().getCount() + (stackSizeMatters ? 0 : stack.getCount()) <= stack.getMaxStackSize()
|
||||||
+ ? slot.getItem().getCount() + (stackSizeMatters ? 0 : stack.getCount()) <= org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack) // Leaves - stackable shulker boxes
|
+ ? slot.getItem().getCount() + (stackSizeMatters ? 0 : stack.getCount()) <= org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(stack) // Leaves - item over-stack util
|
||||||
: flag;
|
: flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -870,7 +877,7 @@ public abstract class AbstractContainerMenu {
|
@@ -892,7 +899,7 @@ public abstract class AbstractContainerMenu {
|
||||||
return switch (type) {
|
return switch (type) {
|
||||||
case 0 -> Mth.floor((float)stack.getCount() / slots.size());
|
case 0 -> Mth.floor((float)stack.getCount() / slots.size());
|
||||||
case 1 -> 1;
|
case 1 -> 1;
|
||||||
- case 2 -> stack.getMaxStackSize();
|
- case 2 -> stack.getMaxStackSize();
|
||||||
+ case 2 -> org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack); // Leaves - stackable shulker boxes
|
+ case 2 -> org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(stack); // Leaves - item over-stack util
|
||||||
default -> stack.getCount();
|
default -> stack.getCount();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -892,7 +899,7 @@ public abstract class AbstractContainerMenu {
|
@@ -914,7 +921,7 @@ public abstract class AbstractContainerMenu {
|
||||||
for (int i = 0; i < container.getContainerSize(); i++) {
|
for (int i = 0; i < container.getContainerSize(); i++) {
|
||||||
ItemStack item = container.getItem(i);
|
ItemStack item = container.getItem(i);
|
||||||
if (!item.isEmpty()) {
|
if (!item.isEmpty()) {
|
||||||
- f += (float)item.getCount() / container.getMaxStackSize(item);
|
- f += (float)item.getCount() / container.getMaxStackSize(item);
|
||||||
+ f += (float)item.getCount() / container.getMaxStackLeaves(item); // Leaves - stackable shulker boxes
|
+ f += Math.clamp((float) item.getCount() / container.getMaxStackSize(item), 0f, 1f); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/inventory/MerchantContainer.java b/net/minecraft/world/inventory/MerchantContainer.java
|
diff --git a/net/minecraft/world/inventory/MerchantContainer.java b/net/minecraft/world/inventory/MerchantContainer.java
|
||||||
index 1e5dfb1f9e371fa23cdfa9280797aa0e183d4cd2..cf87267130c0aebd38206556261929d6f6383bc9 100644
|
index 1e5dfb1f9e371fa23cdfa9280797aa0e183d4cd2..1a593d5bfc4574fd071604105422cd1d395648b8 100644
|
||||||
--- a/net/minecraft/world/inventory/MerchantContainer.java
|
--- a/net/minecraft/world/inventory/MerchantContainer.java
|
||||||
+++ b/net/minecraft/world/inventory/MerchantContainer.java
|
+++ b/net/minecraft/world/inventory/MerchantContainer.java
|
||||||
@@ -109,7 +109,7 @@ public class MerchantContainer implements Container {
|
@@ -109,7 +109,7 @@ public class MerchantContainer implements Container {
|
||||||
@@ -372,12 +335,12 @@ index 1e5dfb1f9e371fa23cdfa9280797aa0e183d4cd2..cf87267130c0aebd38206556261929d6
|
|||||||
public void setItem(int index, ItemStack stack) {
|
public void setItem(int index, ItemStack stack) {
|
||||||
this.itemStacks.set(index, stack);
|
this.itemStacks.set(index, stack);
|
||||||
- stack.limitSize(this.getMaxStackSize(stack));
|
- stack.limitSize(this.getMaxStackSize(stack));
|
||||||
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - stackable shulker boxes
|
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
|
||||||
if (this.isPaymentSlot(index)) {
|
if (this.isPaymentSlot(index)) {
|
||||||
this.updateSellItem();
|
this.updateSellItem();
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/inventory/Slot.java b/net/minecraft/world/inventory/Slot.java
|
diff --git a/net/minecraft/world/inventory/Slot.java b/net/minecraft/world/inventory/Slot.java
|
||||||
index 5ceb8964476b40db4511bec91ff13c4f522a1357..371bad86218971d6e031c6d74307b2ab0d460997 100644
|
index 5ceb8964476b40db4511bec91ff13c4f522a1357..f416d7976e41a06b5a8be93485eaa233ffceda5c 100644
|
||||||
--- a/net/minecraft/world/inventory/Slot.java
|
--- a/net/minecraft/world/inventory/Slot.java
|
||||||
+++ b/net/minecraft/world/inventory/Slot.java
|
+++ b/net/minecraft/world/inventory/Slot.java
|
||||||
@@ -75,7 +75,7 @@ public class Slot {
|
@@ -75,7 +75,7 @@ public class Slot {
|
||||||
@@ -385,41 +348,41 @@ index 5ceb8964476b40db4511bec91ff13c4f522a1357..371bad86218971d6e031c6d74307b2ab
|
|||||||
|
|
||||||
public int getMaxStackSize(ItemStack stack) {
|
public int getMaxStackSize(ItemStack stack) {
|
||||||
- return Math.min(this.getMaxStackSize(), stack.getMaxStackSize());
|
- return Math.min(this.getMaxStackSize(), stack.getMaxStackSize());
|
||||||
+ return Math.min(this.getMaxStackSize(), org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack)); // Leaves - stackable shulker boxes
|
+ return Math.min(this.getMaxStackSize(), org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(stack)); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
|
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
|
||||||
index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..649d17dcd7856e3b1344192d8ea4b2e9f73fc03b 100644
|
index da16f4831c875e07c25d7ed041bed493db614658..3ba64f91883b88f3131d4582c771b511bbccfcd9 100644
|
||||||
--- a/net/minecraft/world/item/ItemStack.java
|
--- a/net/minecraft/world/item/ItemStack.java
|
||||||
+++ b/net/minecraft/world/item/ItemStack.java
|
+++ b/net/minecraft/world/item/ItemStack.java
|
||||||
@@ -165,7 +165,7 @@ public final class ItemStack implements DataComponentHolder {
|
@@ -162,7 +162,7 @@ public final class ItemStack implements DataComponentHolder {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@Nullable
|
@Nullable
|
||||||
private Item item;
|
private Item item;
|
||||||
- PatchedDataComponentMap components;
|
- PatchedDataComponentMap components;
|
||||||
+ public PatchedDataComponentMap components; // Leaves - stackable shulker boxes
|
+ public PatchedDataComponentMap components; // Leaves - item over-stack util
|
||||||
@Nullable
|
@Nullable
|
||||||
private Entity entityRepresentation;
|
private Entity entityRepresentation;
|
||||||
|
|
||||||
@@ -192,7 +192,8 @@ public final class ItemStack implements DataComponentHolder {
|
@@ -189,7 +189,8 @@ public final class ItemStack implements DataComponentHolder {
|
||||||
} else {
|
} else {
|
||||||
Holder<Item> holder = Item.STREAM_CODEC.decode(buffer);
|
Holder<Item> holder = Item.STREAM_CODEC.decode(buffer);
|
||||||
DataComponentPatch dataComponentPatch = codec.decode(buffer);
|
DataComponentPatch dataComponentPatch = codec.decode(buffer);
|
||||||
- return new ItemStack(holder, varInt, dataComponentPatch);
|
- return new ItemStack(holder, varInt, dataComponentPatch);
|
||||||
+ ItemStack itemStack = new ItemStack(holder, varInt, dataComponentPatch);
|
+ ItemStack itemStack = new ItemStack(holder, varInt, dataComponentPatch);
|
||||||
+ return org.leavesmc.leaves.util.ShulkerBoxUtils.decodeMaxStackSize(itemStack);
|
+ return org.leavesmc.leaves.util.ItemOverstackUtils.decodeMaxStackSize(itemStack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,13 +202,15 @@ public final class ItemStack implements DataComponentHolder {
|
@@ -198,13 +199,15 @@ public final class ItemStack implements DataComponentHolder {
|
||||||
if (value.isEmpty() || value.getItem() == null) { // CraftBukkit - NPE fix itemstack.getItem()
|
if (value.isEmpty() || value.getItem() == null) { // CraftBukkit - NPE fix itemstack.getItem()
|
||||||
buffer.writeVarInt(0);
|
buffer.writeVarInt(0);
|
||||||
} else {
|
} else {
|
||||||
- buffer.writeVarInt(io.papermc.paper.util.sanitizer.ItemComponentSanitizer.sanitizeCount(io.papermc.paper.util.sanitizer.ItemObfuscationSession.currentSession(), value, value.getCount())); // Paper - potentially sanitize count
|
- buffer.writeVarInt(io.papermc.paper.util.sanitizer.ItemComponentSanitizer.sanitizeCount(io.papermc.paper.util.sanitizer.ItemObfuscationSession.currentSession(), value, value.getCount())); // Paper - potentially sanitize count
|
||||||
- Item.STREAM_CODEC.encode(buffer, value.getItemHolder());
|
- Item.STREAM_CODEC.encode(buffer, value.getItemHolder());
|
||||||
+ // Leaves start - stackable shulker boxes
|
+ // Leaves start - item over-stack util
|
||||||
+ final ItemStack itemStack = org.leavesmc.leaves.util.ShulkerBoxUtils.encodeMaxStackSize(value.copy());
|
+ final ItemStack itemStack = org.leavesmc.leaves.util.ItemOverstackUtils.encodeMaxStackSize(value.copy());
|
||||||
+ buffer.writeVarInt(io.papermc.paper.util.sanitizer.ItemComponentSanitizer.sanitizeCount(io.papermc.paper.util.sanitizer.ItemObfuscationSession.currentSession(), itemStack, itemStack.getCount())); // Paper - potentially sanitize count
|
+ buffer.writeVarInt(io.papermc.paper.util.sanitizer.ItemComponentSanitizer.sanitizeCount(io.papermc.paper.util.sanitizer.ItemObfuscationSession.currentSession(), itemStack, itemStack.getCount())); // Paper - potentially sanitize count
|
||||||
+ Item.STREAM_CODEC.encode(buffer, itemStack.getItemHolder());
|
+ Item.STREAM_CODEC.encode(buffer, itemStack.getItemHolder());
|
||||||
// Paper start - adventure; conditionally render translatable components
|
// Paper start - adventure; conditionally render translatable components
|
||||||
@@ -432,50 +395,17 @@ index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..649d17dcd7856e3b1344192d8ea4b2e9
|
|||||||
} finally {
|
} finally {
|
||||||
net.minecraft.network.chat.ComponentSerialization.DONT_RENDER_TRANSLATABLES.set(prev);
|
net.minecraft.network.chat.ComponentSerialization.DONT_RENDER_TRANSLATABLES.set(prev);
|
||||||
}
|
}
|
||||||
@@ -302,7 +305,7 @@ public final class ItemStack implements DataComponentHolder {
|
@@ -299,7 +302,7 @@ public final class ItemStack implements DataComponentHolder {
|
||||||
|
|
||||||
for (ItemStack itemStack : itemContainerContents.nonEmptyItems()) {
|
for (ItemStack itemStack : itemContainerContents.nonEmptyItems()) {
|
||||||
int count = itemStack.getCount();
|
int count = itemStack.getCount();
|
||||||
- int maxStackSize = itemStack.getMaxStackSize();
|
- int maxStackSize = itemStack.getMaxStackSize();
|
||||||
+ int maxStackSize = org.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemStack); // Leaves - stackable shulker boxes
|
+ int maxStackSize = org.leavesmc.leaves.util.ItemOverstackUtils.getItemStackMaxCount(itemStack); // Leaves - item over-stack util
|
||||||
if (count > maxStackSize) {
|
if (count > maxStackSize) {
|
||||||
return DataResult.error(() -> "Item stack with count of " + count + " was larger than maximum: " + maxStackSize);
|
return DataResult.error(() -> "Item stack with count of " + count + " was larger than maximum: " + maxStackSize);
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/level/block/AbstractCauldronBlock.java b/net/minecraft/world/level/block/AbstractCauldronBlock.java
|
|
||||||
index ad3f32888afd8b5f0038445a1b0fcc8cacec9fe2..18b7b7fe68c54a400f269f5ff1d09fe9e3d519b8 100644
|
|
||||||
--- a/net/minecraft/world/level/block/AbstractCauldronBlock.java
|
|
||||||
+++ b/net/minecraft/world/level/block/AbstractCauldronBlock.java
|
|
||||||
@@ -62,9 +62,27 @@ public abstract class AbstractCauldronBlock extends Block {
|
|
||||||
ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult
|
|
||||||
) {
|
|
||||||
CauldronInteraction cauldronInteraction = this.interactions.map().get(stack.getItem());
|
|
||||||
- return cauldronInteraction.interact(state, level, pos, player, hand, stack, hitResult.getDirection()); // Paper - pass hit direction
|
|
||||||
+ return wrapInteractor(cauldronInteraction, state, level, pos, player, hand, stack, hitResult.getDirection()); // Paper - pass hit direction // Leaves - stackable shulker boxes
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Leaves start - stackable shulker boxes
|
|
||||||
+ private InteractionResult wrapInteractor(CauldronInteraction cauldronBehavior, BlockState blockState, Level world, BlockPos blockPos, Player playerEntity, InteractionHand hand, ItemStack itemStack, net.minecraft.core.Direction hitDirection) {
|
|
||||||
+ int count = -1;
|
|
||||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.shulkerBoxStackSize > 1 && itemStack.getItem() instanceof net.minecraft.world.item.BlockItem bi &&
|
|
||||||
+ bi.getBlock() instanceof ShulkerBoxBlock) {
|
|
||||||
+ count = itemStack.getCount();
|
|
||||||
+ }
|
|
||||||
+ InteractionResult result = cauldronBehavior.interact(blockState, world, blockPos, playerEntity, hand, itemStack, hitDirection);
|
|
||||||
+ if (count > 0 && result.consumesAction()) {
|
|
||||||
+ ItemStack current = playerEntity.getItemInHand(hand);
|
|
||||||
+ if (current.getItem() instanceof net.minecraft.world.item.BlockItem bi && bi.getBlock() instanceof ShulkerBoxBlock) {
|
|
||||||
+ current.setCount(count);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
+ // Leaves end - stackable shulker boxes
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
|
|
||||||
return SHAPE;
|
|
||||||
diff --git a/net/minecraft/world/level/block/CrafterBlock.java b/net/minecraft/world/level/block/CrafterBlock.java
|
diff --git a/net/minecraft/world/level/block/CrafterBlock.java b/net/minecraft/world/level/block/CrafterBlock.java
|
||||||
index 38b03c7b02bdfc579e5e126c12de3d878e26d188..33e24f2c3b63b2d3b55dfae2f2e55869abeed055 100644
|
index 38b03c7b02bdfc579e5e126c12de3d878e26d188..caf31218a1aff84367da126ee1dc46b8c8a1e5d1 100644
|
||||||
--- a/net/minecraft/world/level/block/CrafterBlock.java
|
--- a/net/minecraft/world/level/block/CrafterBlock.java
|
||||||
+++ b/net/minecraft/world/level/block/CrafterBlock.java
|
+++ b/net/minecraft/world/level/block/CrafterBlock.java
|
||||||
@@ -192,7 +192,7 @@ public class CrafterBlock extends BaseEntityBlock {
|
@@ -192,7 +192,7 @@ public class CrafterBlock extends BaseEntityBlock {
|
||||||
@@ -483,12 +413,12 @@ index 38b03c7b02bdfc579e5e126c12de3d878e26d188..33e24f2c3b63b2d3b55dfae2f2e55869
|
|||||||
Container containerAt = HopperBlockEntity.getContainerAt(level, pos.relative(direction));
|
Container containerAt = HopperBlockEntity.getContainerAt(level, pos.relative(direction));
|
||||||
ItemStack itemStack = stack.copy();
|
ItemStack itemStack = stack.copy();
|
||||||
- if (containerAt != null && (containerAt instanceof CrafterBlockEntity || stack.getCount() > containerAt.getMaxStackSize(stack))) {
|
- if (containerAt != null && (containerAt instanceof CrafterBlockEntity || stack.getCount() > containerAt.getMaxStackSize(stack))) {
|
||||||
+ if (containerAt != null && (containerAt instanceof CrafterBlockEntity || stack.getCount() > containerAt.getMaxStackLeaves(stack))) { // Leaves - stackable shulker boxes
|
+ if (containerAt != null && (containerAt instanceof CrafterBlockEntity || stack.getCount() > containerAt.getMaxStackLeaves(stack))) { // Leaves - item over-stack util
|
||||||
// CraftBukkit start - InventoryMoveItemEvent
|
// CraftBukkit start - InventoryMoveItemEvent
|
||||||
org.bukkit.craftbukkit.inventory.CraftItemStack oitemstack = org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack);
|
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
|
diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||||
index 7729c33cad94cf2b4162324be75713650fc9d378..78b3bdb668320e9cf2fb09b59929fac43cf56aca 100644
|
index bebe8737b71fc37336342f14b6ea4cfab12d3f34..4fdb3c36b39213f01f86ba281c7b62af99f5dcce 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||||
+++ b/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
|
@@ -409,7 +409,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
|
||||||
@@ -496,25 +426,25 @@ index 7729c33cad94cf2b4162324be75713650fc9d378..78b3bdb668320e9cf2fb09b59929fac4
|
|||||||
boolean flag = !stack.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, stack);
|
boolean flag = !stack.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, stack);
|
||||||
this.items.set(index, stack);
|
this.items.set(index, stack);
|
||||||
- stack.limitSize(this.getMaxStackSize(stack));
|
- stack.limitSize(this.getMaxStackSize(stack));
|
||||||
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - stackable shulker boxes
|
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
|
||||||
if (index == 0 && !flag && this.level instanceof ServerLevel serverLevel) {
|
if (index == 0 && !flag && this.level instanceof ServerLevel serverLevel) {
|
||||||
this.cookingTotalTime = getTotalCookTime(serverLevel, this, this.recipeType, this.cookSpeedMultiplier); // Paper - cook speed multiplier API
|
this.cookingTotalTime = getTotalCookTime(serverLevel, this, this.recipeType, this.cookSpeedMultiplier); // Paper - cook speed multiplier API
|
||||||
this.cookingTimer = 0;
|
this.cookingTimer = 0;
|
||||||
diff --git a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
||||||
index c63370fd458fb4f7190b79b1a8174fcc92d88f9c..4cca3fbbb93bb76d5d501dfad6997d909211809e 100644
|
index 5a094257a31f0500278a706a418e1697f8810ffb..63d6a43dab067aa4c8fb67095c455130196eef9f 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
||||||
+++ b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
+++ b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
||||||
@@ -148,7 +148,7 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
|
@@ -145,7 +145,7 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
|
||||||
@Override
|
@Override
|
||||||
public void setItem(int slot, ItemStack stack) {
|
public void setItem(int slot, ItemStack stack) {
|
||||||
this.getItems().set(slot, stack);
|
this.getItems().set(slot, stack);
|
||||||
- stack.limitSize(this.getMaxStackSize(stack));
|
- stack.limitSize(this.getMaxStackSize(stack));
|
||||||
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - stackable shulker boxes
|
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
|
||||||
this.setChanged();
|
this.setChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
index 2d979850378c05ce569782d8e04a452f986612a7..a2fe5fdf50ae731e423821a0d1c52141b478e0be 100644
|
index e53b40c70c0a61cbe14a236a99725daa28512b0b..d152ad88e8e873a0164b2394516bd10f23c7b263 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
+++ b/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
|
@@ -113,7 +113,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||||
@@ -522,7 +452,7 @@ index 2d979850378c05ce569782d8e04a452f986612a7..a2fe5fdf50ae731e423821a0d1c52141
|
|||||||
this.unpackLootTable(null);
|
this.unpackLootTable(null);
|
||||||
this.getItems().set(index, stack);
|
this.getItems().set(index, stack);
|
||||||
- stack.limitSize(this.getMaxStackSize(stack));
|
- stack.limitSize(this.getMaxStackSize(stack));
|
||||||
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - stackable shulker boxes
|
+ stack.limitSize(this.getMaxStackLeaves(stack)); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -531,10 +461,10 @@ index 2d979850378c05ce569782d8e04a452f986612a7..a2fe5fdf50ae731e423821a0d1c52141
|
|||||||
// Spigot start - SPIGOT-6693, SimpleContainer#setItem
|
// Spigot start - SPIGOT-6693, SimpleContainer#setItem
|
||||||
ItemStack leftover = ItemStack.EMPTY; // Paper - Make hoppers respect inventory max stack size
|
ItemStack leftover = ItemStack.EMPTY; // Paper - Make hoppers respect inventory max stack size
|
||||||
- if (!stack.isEmpty() && stack.getCount() > destination.getMaxStackSize()) {
|
- if (!stack.isEmpty() && stack.getCount() > destination.getMaxStackSize()) {
|
||||||
+ if (!stack.isEmpty() && (stack.getCount() > destination.getMaxStackSize() || stack.getCount() > stack.getMaxStackSize())) { // Leaves - stackable shulker boxes
|
+ if (!stack.isEmpty() && (stack.getCount() > destination.getMaxStackSize() || stack.getCount() > stack.getMaxStackSize())) { // Leaves - item over-stack util
|
||||||
leftover = stack; // Paper - Make hoppers respect inventory max stack size
|
leftover = stack; // Paper - Make hoppers respect inventory max stack size
|
||||||
- stack = stack.split(destination.getMaxStackSize());
|
- stack = stack.split(destination.getMaxStackSize());
|
||||||
+ stack = stack.split(Math.min(destination.getMaxStackSize(), stack.getMaxStackSize())); // Leaves - stackable shulker boxes
|
+ stack = stack.split(Math.min(destination.getMaxStackSize(), stack.getMaxStackSize())); // Leaves - item over-stack util
|
||||||
}
|
}
|
||||||
// Spigot end
|
// Spigot end
|
||||||
ignoreBlockEntityUpdates = true; // Paper - Perf: Optimize Hoppers
|
ignoreBlockEntityUpdates = true; // Paper - Perf: Optimize Hoppers
|
||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Return nether portal fix
|
|||||||
This patch is powered by NetherPortalFix(https://github.com/TwelveIterationMods/NetherPortalFix)
|
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
|
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 66110486725de7967e55839043b9fc9690e4c0f5..f144a8bd5eb55ce093ad92ffd1304860dc52c1b1 100644
|
index c6adc1009df62699264d996a6eba85d7db4d3bcf..a3fe89776a6a5067dbd53a82defa0ffc92fbac1d 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -1428,6 +1428,21 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -1464,6 +1464,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());
|
org.bukkit.event.player.PlayerChangedWorldEvent changeEvent = new org.bukkit.event.player.PlayerChangedWorldEvent(this.getBukkitEntity(), serverLevel.getWorld());
|
||||||
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
|
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@@ -32,10 +32,10 @@ index 66110486725de7967e55839043b9fc9690e4c0f5..f144a8bd5eb55ce093ad92ffd1304860
|
|||||||
if (this.isBlocking()) {
|
if (this.isBlocking()) {
|
||||||
this.stopUsingItem();
|
this.stopUsingItem();
|
||||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||||
index 491d7b5a0cc099a3eb658e19cbe9d97b4419382c..72c2762485da81d3a252290455f57a8cf81dfe66 100644
|
index 742a49c9f1cec6a7ed343b1f0072fc36bb3df26b..1fe310309311d00d6889b706bb1a468323204dd9 100644
|
||||||
--- a/net/minecraft/server/players/PlayerList.java
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -863,6 +863,20 @@ public abstract class PlayerList {
|
@@ -822,6 +822,20 @@ public abstract class PlayerList {
|
||||||
if (fromWorld != level) {
|
if (fromWorld != level) {
|
||||||
org.bukkit.event.player.PlayerChangedWorldEvent event = new org.bukkit.event.player.PlayerChangedWorldEvent(player.getBukkitEntity(), fromWorld.getWorld());
|
org.bukkit.event.player.PlayerChangedWorldEvent event = new org.bukkit.event.player.PlayerChangedWorldEvent(player.getBukkitEntity(), fromWorld.getWorld());
|
||||||
this.server.server.getPluginManager().callEvent(event);
|
this.server.server.getPluginManager().callEvent(event);
|
||||||
@@ -57,10 +57,10 @@ index 491d7b5a0cc099a3eb658e19cbe9d97b4419382c..72c2762485da81d3a252290455f57a8c
|
|||||||
|
|
||||||
// Save player file again if they were disconnected
|
// Save player file again if they were disconnected
|
||||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index 108430b3934a6f9757e7be50d77e760bbade669c..6893ca36cd4ae9a62fecedb1167cc6cf797a7f8f 100644
|
index 942be06bebe8c3fca0b0c33fa387e30deda8dd7c..bc19f0bf079d6a7fa2fc8aaed6477da5e57d32da 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -245,7 +245,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -257,7 +257,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||||
protected ItemStack useItem = ItemStack.EMPTY;
|
protected ItemStack useItem = ItemStack.EMPTY;
|
||||||
public int useItemRemaining;
|
public int useItemRemaining;
|
||||||
protected int fallFlyTicks;
|
protected int fallFlyTicks;
|
||||||
@@ -70,10 +70,10 @@ index 108430b3934a6f9757e7be50d77e760bbade669c..6893ca36cd4ae9a62fecedb1167cc6cf
|
|||||||
@Nullable
|
@Nullable
|
||||||
private DamageSource lastDamageSource;
|
private DamageSource lastDamageSource;
|
||||||
diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java
|
diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||||
index 2f08780430fc643991ffb4aeba1f1ae8e78944d2..171b383efabbbe849aff28832c47076f85a46307 100644
|
index 6c5629a6f5f91496a55eb0bf281ceae1567915b1..3aabae6e27e692aa65cc931e57306426e0f4d645 100644
|
||||||
--- a/net/minecraft/world/level/block/NetherPortalBlock.java
|
--- a/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||||
+++ b/net/minecraft/world/level/block/NetherPortalBlock.java
|
+++ b/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||||
@@ -184,7 +184,18 @@ public class NetherPortalBlock extends Block implements Portal {
|
@@ -179,7 +179,18 @@ public class NetherPortalBlock extends Block implements Portal {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private TeleportTransition getExitPortal(ServerLevel level, Entity entity, BlockPos pos, BlockPos exitPos, boolean isNether, WorldBorder worldBorder, int searchRadius, boolean canCreatePortal, int createRadius) { // CraftBukkit
|
private TeleportTransition getExitPortal(ServerLevel level, Entity entity, BlockPos pos, BlockPos exitPos, boolean isNether, WorldBorder worldBorder, int searchRadius, boolean canCreatePortal, int createRadius) { // CraftBukkit
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ index 8c3151c25c172b846f0d028b5100718ada2d09d7..d59d05f8894481fb5ebe1aeb8ee7a162
|
|||||||
private final String baseUrl;
|
private final String baseUrl;
|
||||||
private final URL joinUrl;
|
private final URL joinUrl;
|
||||||
diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java
|
diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java
|
||||||
index 9c9b601a3f903bebb0dd1bda0e24745587229727..4cde785a679dccc3dfa42272e6094328e9ce98c1 100644
|
index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..e673df664b06c654a7be0622874b9b27ad7ef20f 100644
|
||||||
--- a/net/minecraft/server/Main.java
|
--- a/net/minecraft/server/Main.java
|
||||||
+++ b/net/minecraft/server/Main.java
|
+++ b/net/minecraft/server/Main.java
|
||||||
@@ -177,7 +177,7 @@ public class Main {
|
@@ -178,7 +178,7 @@ public class Main {
|
||||||
file = new File(bukkitConfiguration.getString("settings.world-container", "."));
|
file = new File(bukkitConfiguration.getString("settings.world-container", "."));
|
||||||
}
|
}
|
||||||
// Paper end - fix SPIGOT-5824
|
// Paper end - fix SPIGOT-5824
|
||||||
@@ -31,10 +31,10 @@ index 9c9b601a3f903bebb0dd1bda0e24745587229727..4cde785a679dccc3dfa42272e6094328
|
|||||||
String string = Optional.ofNullable((String) optionSet.valueOf("world")).orElse(dedicatedServerSettings.getProperties().levelName);
|
String string = Optional.ofNullable((String) optionSet.valueOf("world")).orElse(dedicatedServerSettings.getProperties().levelName);
|
||||||
LevelStorageSource levelStorageSource = LevelStorageSource.createDefault(file.toPath());
|
LevelStorageSource levelStorageSource = LevelStorageSource.createDefault(file.toPath());
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 105c207b8db2c505f256f4104642af5929b50aa9..50f73905e6785d87a0faf886802d956a1c7b9751 100644
|
index 11728fa48bb144bbe933eb8fa2df22b52ac1b5a5..7e339cb26a132487ac0ab91d3db7e4885bacd545 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -244,7 +244,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -245,7 +245,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
private boolean isDemo;
|
private boolean isDemo;
|
||||||
private volatile boolean isReady;
|
private volatile boolean isReady;
|
||||||
private long lastOverloadWarningNanos;
|
private long lastOverloadWarningNanos;
|
||||||
|
|||||||
@@ -1,41 +1,41 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: violetc <58360096+s-yh-china@users.noreply.github.com>
|
From: violetc <58360096+s-yh-china@users.noreply.github.com>
|
||||||
Date: Thu, 16 Feb 2023 17:25:01 +0800
|
Date: Thu, 16 Feb 2023 17:25:01 +0800
|
||||||
Subject: [PATCH] Configurable vanilla random
|
Subject: [PATCH] NOT_FINISH Configurable vanilla random
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||||
index 632a1cb5eee13d7287915433e9e646ec4a3a1a09..0e5c4aa2b8856c7b88ff90031715a55c4a1bf89e 100644
|
index 089b50dbae2ae351d81deb041663f8885e3bfae1..b922ac57ca5bbe9e126be9b24a79718bf62888f6 100644
|
||||||
--- a/net/minecraft/world/entity/Entity.java
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -261,7 +261,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -281,7 +281,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
public double yOld;
|
public double yOld;
|
||||||
public double zOld;
|
public double zOld;
|
||||||
public boolean noPhysics;
|
public boolean noPhysics;
|
||||||
- public final RandomSource random = SHARED_RANDOM; // Paper - Share random for entities to make them more random
|
- public final RandomSource random = SHARED_RANDOM; // Paper - Share random for entities to make them more random
|
||||||
+ public final RandomSource random = org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom ? RandomSource.create() : SHARED_RANDOM; // Paper - Share random for entities to make them more random // Leaves - but mojang use it, optimize? no!
|
+ public final RandomSource random = org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom ? RandomSource.create() : SHARED_RANDOM; // Paper - Share random for entities to make them more random // Leaves - but mojang use it, optimize? no!
|
||||||
public int tickCount;
|
public int tickCount;
|
||||||
private int remainingFireTicks = -this.getFireImmuneTicks();
|
private int remainingFireTicks;
|
||||||
public boolean wasTouchingWater;
|
public boolean wasTouchingWater;
|
||||||
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
|
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
|
||||||
index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..9007128a4619ab6130424786ae81c23ae38e55e9 100644
|
index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..bee8374eaca826de1a167c4c98a1a09aad8287d0 100644
|
||||||
--- a/net/minecraft/world/entity/animal/Bee.java
|
--- a/net/minecraft/world/entity/animal/Bee.java
|
||||||
+++ b/net/minecraft/world/entity/animal/Bee.java
|
+++ b/net/minecraft/world/entity/animal/Bee.java
|
||||||
@@ -801,7 +801,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
@@ -802,7 +802,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||||
@VisibleForDebug
|
@VisibleForDebug
|
||||||
public class BeeGoToHiveGoal extends Bee.BaseBeeGoal {
|
public class BeeGoToHiveGoal extends Bee.BaseBeeGoal {
|
||||||
public static final int MAX_TRAVELLING_TICKS = 2400;
|
public static final int MAX_TRAVELLING_TICKS = 2400;
|
||||||
- int travellingTicks = Bee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues
|
- int travellingTicks;
|
||||||
+ int travellingTicks = org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom ? Bee.this.level().random.nextInt(10) : Bee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues // Leaves - why no vanilla
|
+ int travellingTicks; // TODO: int travellingTicks = org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom ? Bee.this.level().random.nextInt(10) : Bee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues // Leaves - why no vanilla
|
||||||
private static final int MAX_BLACKLISTED_TARGETS = 3;
|
private static final int MAX_BLACKLISTED_TARGETS = 3;
|
||||||
final List<BlockPos> blacklistedTargets = Lists.newArrayList();
|
final List<BlockPos> blacklistedTargets = Lists.newArrayList();
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -917,7 +917,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
@@ -918,7 +918,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||||
|
|
||||||
public class BeeGoToKnownFlowerGoal extends Bee.BaseBeeGoal {
|
public class BeeGoToKnownFlowerGoal extends Bee.BaseBeeGoal {
|
||||||
private static final int MAX_TRAVELLING_TICKS = 2400;
|
private static final int MAX_TRAVELLING_TICKS = 2400;
|
||||||
- int travellingTicks = Bee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues
|
- int travellingTicks;
|
||||||
+ int travellingTicks = org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom ? Bee.this.level().random.nextInt(10) : Bee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues // Leaves - why no vanilla
|
+ int travellingTicks; // TODO: int travellingTicks = org.leavesmc.leaves.LeavesConfig.modify.useVanillaRandom ? Bee.this.level().random.nextInt(10) : Bee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues // Leaves - why no vanilla
|
||||||
|
|
||||||
BeeGoToKnownFlowerGoal() {
|
BeeGoToKnownFlowerGoal() {
|
||||||
this.setFlags(EnumSet.of(Goal.Flag.MOVE));
|
this.setFlags(EnumSet.of(Goal.Flag.MOVE));
|
||||||
@@ -53,10 +53,10 @@ index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..ea41360af5e5d49c96ca24e9c36bd52c
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
|
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
|
||||||
index b0e60d1d2a44bb35c87c35e82a172a38406b6c54..0cb2d5cd37171cd6e01748ed3d2ce99da1a15e3f 100644
|
index 1c7bed7b7856a69f91e7f2f8970a84f0459c7929..7040d2212f20bb2cd83198b6886074a6f430ee71 100644
|
||||||
--- a/net/minecraft/world/entity/item/ItemEntity.java
|
--- a/net/minecraft/world/entity/item/ItemEntity.java
|
||||||
+++ b/net/minecraft/world/entity/item/ItemEntity.java
|
+++ b/net/minecraft/world/entity/item/ItemEntity.java
|
||||||
@@ -70,7 +70,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
@@ -67,7 +67,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||||
// Paper start - Don't use level random in entity constructors (to make them thread-safe)
|
// Paper start - Don't use level random in entity constructors (to make them thread-safe)
|
||||||
this(EntityType.ITEM, level);
|
this(EntityType.ITEM, level);
|
||||||
this.setPos(posX, posY, posZ);
|
this.setPos(posX, posY, posZ);
|
||||||
@@ -72,10 +72,10 @@ index b0e60d1d2a44bb35c87c35e82a172a38406b6c54..0cb2d5cd37171cd6e01748ed3d2ce99d
|
|||||||
// Paper end - Don't use level random in entity constructors
|
// 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
|
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||||
index 0f28b1befd42a85ffa5462e86d5cde142f9d1196..8cbcae0ef84b160d08b677972dc70cabfb5b6c5f 100644
|
index 1d7a1739d6a3a55aacb33d57a58712350b150f64..87dff2fb5246d730feca82396a68b41150e2d383 100644
|
||||||
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
--- a/net/minecraft/world/entity/item/PrimedTnt.java
|
||||||
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
|
||||||
@@ -69,7 +69,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
|
@@ -68,7 +68,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
|
||||||
public PrimedTnt(Level level, double x, double y, double z, @Nullable LivingEntity owner) {
|
public PrimedTnt(Level level, double x, double y, double z, @Nullable LivingEntity owner) {
|
||||||
this(EntityType.TNT, level);
|
this(EntityType.TNT, level);
|
||||||
this.setPos(x, y, z);
|
this.setPos(x, y, z);
|
||||||
@@ -20,7 +20,7 @@ index 4535858701b2bb232b9d2feb2af6551526232ddc..2a51acd97afc525170e8001b76f57ad1
|
|||||||
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
|
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
|
||||||
throw makeReportedException(var4, packet, processor);
|
throw makeReportedException(var4, packet, processor);
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index b40e6b156614e9248b9423d0fbf208c2dc139489..f12b397901c0a2f779221e6694cecaced7069c9e 100644
|
index 46be518ca1ecc96acbd764e21c430210ceb72b1b..4a427b80ad9bc387bd774e33c844b4d67836737c 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1725,6 +1725,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1725,6 +1725,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -34,11 +34,25 @@ index b40e6b156614e9248b9423d0fbf208c2dc139489..f12b397901c0a2f779221e6694cecace
|
|||||||
} catch (Throwable var7) {
|
} catch (Throwable var7) {
|
||||||
CrashReport crashReport = CrashReport.forThrowable(var7, "Exception ticking world");
|
CrashReport crashReport = CrashReport.forThrowable(var7, "Exception ticking world");
|
||||||
serverLevel.fillReportDetails(crashReport);
|
serverLevel.fillReportDetails(crashReport);
|
||||||
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
|
index ed05aaa76e1e34ca82fcc7cfb73f371a11600eee..31fb5ea1e33672ae71210776a0302f0ef87c6814 100644
|
||||||
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
|
@@ -814,6 +814,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
|
if (org.leavesmc.leaves.LeavesConfig.performance.remove.tickGuardLambda) {
|
||||||
|
try {
|
||||||
|
this.tickNonPassenger(entity); // Leaves - changed
|
||||||
|
+ } catch (org.leavesmc.leaves.util.UpdateSuppressionException exception) { // Leaves start - dragon suppression fix
|
||||||
|
+ org.leavesmc.leaves.LeavesLogger.LOGGER.info(exception.getMessage());
|
||||||
|
+ // Leaves end - dragon suppression fix
|
||||||
|
} catch (Throwable throwable) {
|
||||||
|
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
|
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||||
index f144a8bd5eb55ce093ad92ffd1304860dc52c1b1..1d24dba868cfedb2b66a33e56f6b907435d11d4f 100644
|
index a3fe89776a6a5067dbd53a82defa0ffc92fbac1d..478acab8ddf0b88c2bbde19ea4895c11380b62d1 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -891,6 +891,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -901,6 +901,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
((org.bukkit.craftbukkit.CraftWorldBorder) this.getBukkitEntity().getWorldBorder()).getHandle().tick();
|
((org.bukkit.craftbukkit.CraftWorldBorder) this.getBukkitEntity().getWorldBorder()).getHandle().tick();
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@@ -50,10 +64,10 @@ index f144a8bd5eb55ce093ad92ffd1304860dc52c1b1..1d24dba868cfedb2b66a33e56f6b9074
|
|||||||
CrashReport crashReport = CrashReport.forThrowable(var4, "Ticking player");
|
CrashReport crashReport = CrashReport.forThrowable(var4, "Ticking player");
|
||||||
CrashReportCategory crashReportCategory = crashReport.addCategory("Player being ticked");
|
CrashReportCategory crashReportCategory = crashReport.addCategory("Player being ticked");
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||||
index 2d54997ead46e5185104af621dbe39f66246aa96..f983ea2bb9d089bd4dfd81a482fd4810c6b8ebd7 100644
|
index 2d11b99b36e30d3a6b45f3037d479cf125134de3..7a82ab3b1a4a4cc7708cbec5d424b3bfcede87a9 100644
|
||||||
--- a/net/minecraft/world/entity/Entity.java
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -1318,9 +1318,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -1351,9 +1351,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
this.walkingStepSound(pos, state);
|
this.walkingStepSound(pos, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +78,7 @@ index 2d54997ead46e5185104af621dbe39f66246aa96..f983ea2bb9d089bd4dfd81a482fd4810
|
|||||||
+ } catch (org.leavesmc.leaves.util.UpdateSuppressionException exception) {
|
+ } catch (org.leavesmc.leaves.util.UpdateSuppressionException exception) {
|
||||||
+ org.leavesmc.leaves.LeavesLogger.LOGGER.info(exception.getMessage());
|
+ org.leavesmc.leaves.LeavesLogger.LOGGER.info(exception.getMessage());
|
||||||
}
|
}
|
||||||
+ // Leaves start - update suppression crash fix
|
+ // Leaves end - update suppression crash fix
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -104,10 +118,10 @@ index 9b9842462b210b0407279ee8a8e9ccecf3ead005..ce809dc4997aa1b9c8802208679462c8
|
|||||||
// Paper end - optimise blockstate property access
|
// Paper end - optimise blockstate property access
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
|
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
index bf731da711ce629c0f9250a7bd4025d363623773..845319dd3e355f739cce70b7df3172dd146601b1 100644
|
index f24db919989bc2e5768e18b4fda68c38d6cde7e0..2cdca2917ce6a4912b57594697bf5543801eb868 100644
|
||||||
--- a/net/minecraft/world/level/chunk/LevelChunk.java
|
--- a/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
|
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
@@ -371,7 +371,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
|
@@ -373,7 +373,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
|
||||||
if (blockState == state) {
|
if (blockState == state) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
@@ -116,7 +130,7 @@ index bf731da711ce629c0f9250a7bd4025d363623773..845319dd3e355f739cce70b7df3172dd
|
|||||||
this.heightmaps.get(Heightmap.Types.MOTION_BLOCKING).update(i, y, i2, state);
|
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.MOTION_BLOCKING_NO_LEAVES).update(i, y, i2, state);
|
||||||
this.heightmaps.get(Heightmap.Types.OCEAN_FLOOR).update(i, y, i2, state);
|
this.heightmaps.get(Heightmap.Types.OCEAN_FLOOR).update(i, y, i2, state);
|
||||||
@@ -443,6 +443,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
|
@@ -445,6 +445,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
|
||||||
this.markUnsaved();
|
this.markUnsaved();
|
||||||
return blockState;
|
return blockState;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Bedrock break list
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index f12b397901c0a2f779221e6694cecaced7069c9e..ca4fdcabbe6c0c57bfa13ef6d83bcd560baae8fc 100644
|
index 4a427b80ad9bc387bd774e33c844b4d67836737c..952275263fca69dc55266348ead59dc3ca2b1520 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1752,6 +1752,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1752,6 +1752,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -17,10 +17,10 @@ index f12b397901c0a2f779221e6694cecaced7069c9e..ca4fdcabbe6c0c57bfa13ef6d83bcd56
|
|||||||
for (int i = 0; i < this.tickables.size(); i++) {
|
for (int i = 0; i < this.tickables.size(); i++) {
|
||||||
this.tickables.get(i).run();
|
this.tickables.get(i).run();
|
||||||
diff --git a/net/minecraft/server/ServerScoreboard.java b/net/minecraft/server/ServerScoreboard.java
|
diff --git a/net/minecraft/server/ServerScoreboard.java b/net/minecraft/server/ServerScoreboard.java
|
||||||
index 9e22e93b1fab6822e0e9c1122024a88942c8679e..75fe9d99d22b1e89ad8011632d636772e118b0a8 100644
|
index fc1c377ad05edcefacd407671801ae605f3fc31a..5c9f2a8476ff260ec7f0843f7c956c71e9b0d34d 100644
|
||||||
--- a/net/minecraft/server/ServerScoreboard.java
|
--- a/net/minecraft/server/ServerScoreboard.java
|
||||||
+++ b/net/minecraft/server/ServerScoreboard.java
|
+++ b/net/minecraft/server/ServerScoreboard.java
|
||||||
@@ -154,6 +154,7 @@ public class ServerScoreboard extends Scoreboard {
|
@@ -158,6 +158,7 @@ public class ServerScoreboard extends Scoreboard {
|
||||||
@Override
|
@Override
|
||||||
public void onObjectiveAdded(Objective objective) {
|
public void onObjectiveAdded(Objective objective) {
|
||||||
super.onObjectiveAdded(objective);
|
super.onObjectiveAdded(objective);
|
||||||
@@ -28,7 +28,7 @@ index 9e22e93b1fab6822e0e9c1122024a88942c8679e..75fe9d99d22b1e89ad8011632d636772
|
|||||||
this.setDirty();
|
this.setDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,6 +171,7 @@ public class ServerScoreboard extends Scoreboard {
|
@@ -174,6 +175,7 @@ public class ServerScoreboard extends Scoreboard {
|
||||||
@Override
|
@Override
|
||||||
public void onObjectiveRemoved(Objective objective) {
|
public void onObjectiveRemoved(Objective objective) {
|
||||||
super.onObjectiveRemoved(objective);
|
super.onObjectiveRemoved(objective);
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 72e1265509a00376515e963499099c0765104ea2..878d80d0cb9fddeb7916a34d39c34119d65fbe00 100644
|
index 6622d11f970def6adc2a732187004413a9501c95..e0687743975db1832933661540650df86a911a80 100644
|
||||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -1991,7 +1991,7 @@ public class ServerGamePacketListenerImpl
|
@@ -2038,7 +2038,7 @@ public class ServerGamePacketListenerImpl
|
||||||
if (this.player.canInteractWithBlock(blockPos, 1.0)) {
|
if (this.player.canInteractWithBlock(blockPos, 1.0)) {
|
||||||
Vec3 vec3 = location.subtract(Vec3.atCenterOf(blockPos));
|
Vec3 vec3 = location.subtract(Vec3.atCenterOf(blockPos));
|
||||||
double d = 1.0000001;
|
double d = 1.0000001;
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Disable packet limit
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java
|
diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java
|
||||||
index 364ddf9f25ef3cb97ba788c469fee9dd495b84a7..7af8b2cf9ccfeadac1cc60541da31ba6f4dc0edb 100644
|
index 3e9b8c5fb2157f767de8bddc3e767512c5f7651f..ce65b531ec2b8a5dd1955ee8d826520f9a9a5f3b 100644
|
||||||
--- a/net/minecraft/network/Connection.java
|
--- a/net/minecraft/network/Connection.java
|
||||||
+++ b/net/minecraft/network/Connection.java
|
+++ b/net/minecraft/network/Connection.java
|
||||||
@@ -243,8 +243,8 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
|
@@ -245,8 +245,8 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
|
||||||
if (this.stopReadingPackets) {
|
if (this.stopReadingPackets) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -20,19 +20,19 @@ index 364ddf9f25ef3cb97ba788c469fee9dd495b84a7..7af8b2cf9ccfeadac1cc60541da31ba6
|
|||||||
synchronized (PACKET_LIMIT_LOCK) {
|
synchronized (PACKET_LIMIT_LOCK) {
|
||||||
if (this.allPacketCounts != null) {
|
if (this.allPacketCounts != null) {
|
||||||
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 878d80d0cb9fddeb7916a34d39c34119d65fbe00..2ed38800fb3e3a1f4fb04c781321c642e402a854 100644
|
index e0687743975db1832933661540650df86a911a80..3c7b691a60f355ebaeb96f7ba07955f5be7fd09b 100644
|
||||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -780,7 +780,7 @@ public class ServerGamePacketListenerImpl
|
@@ -821,7 +821,7 @@ public class ServerGamePacketListenerImpl
|
||||||
public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) {
|
public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) {
|
||||||
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - AsyncTabCompleteEvent; run this async
|
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); // Paper - AsyncTabCompleteEvent; run this async
|
||||||
// CraftBukkit start
|
// 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 (!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 (!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
|
||||||
this.disconnectAsync(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - Kick event cause // Paper - add proper async disconnect
|
this.disconnectAsync(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - Kick event cause // Paper - add proper async disconnect
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1955,6 +1955,7 @@ public class ServerGamePacketListenerImpl
|
@@ -2002,6 +2002,7 @@ public class ServerGamePacketListenerImpl
|
||||||
private static int getSpamThreshold() { return io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.incomingPacketThreshold; } // Paper - Configurable threshold
|
private static int getSpamThreshold() { return io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.incomingPacketThreshold; } // Paper - Configurable threshold
|
||||||
|
|
||||||
private boolean checkLimit(long timestamp) {
|
private boolean checkLimit(long timestamp) {
|
||||||
@@ -40,7 +40,7 @@ index 878d80d0cb9fddeb7916a34d39c34119d65fbe00..2ed38800fb3e3a1f4fb04c781321c642
|
|||||||
if (this.lastLimitedPacket != -1 && timestamp - this.lastLimitedPacket < getSpamThreshold() && this.limitedPackets++ >= 8) { // Paper - Configurable threshold; raise packet limit to 8
|
if (this.lastLimitedPacket != -1 && timestamp - this.lastLimitedPacket < getSpamThreshold() && this.limitedPackets++ >= 8) { // Paper - Configurable threshold; raise packet limit to 8
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2492,6 +2493,7 @@ public class ServerGamePacketListenerImpl
|
@@ -2536,6 +2537,7 @@ public class ServerGamePacketListenerImpl
|
||||||
|
|
||||||
// Spigot start - spam exclusions
|
// Spigot start - spam exclusions
|
||||||
private void detectRateSpam(String message) {
|
private void detectRateSpam(String message) {
|
||||||
@@ -48,7 +48,7 @@ index 878d80d0cb9fddeb7916a34d39c34119d65fbe00..2ed38800fb3e3a1f4fb04c781321c642
|
|||||||
// CraftBukkit start - replaced with thread safe throttle
|
// CraftBukkit start - replaced with thread safe throttle
|
||||||
if (org.spigotmc.SpigotConfig.enableSpamExclusions) {
|
if (org.spigotmc.SpigotConfig.enableSpamExclusions) {
|
||||||
for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) {
|
for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) {
|
||||||
@@ -3280,7 +3282,7 @@ public class ServerGamePacketListenerImpl
|
@@ -3244,7 +3246,7 @@ public class ServerGamePacketListenerImpl
|
||||||
@Override
|
@Override
|
||||||
public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) {
|
public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) {
|
||||||
// Paper start - auto recipe limit
|
// Paper start - auto recipe limit
|
||||||
|
|||||||
@@ -6,18 +6,19 @@ Subject: [PATCH] Syncmatica Protocol
|
|||||||
This patch is Powered by Syncmatica(https://github.com/End-Tech/syncmatica)
|
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
|
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 2f4776fa065cb712afe9d8abc835c57777c963b7..f1372015cf5991ef80a07e7fcbd1fb9d65e9d74f 100644
|
index 3c7b691a60f355ebaeb96f7ba07955f5be7fd09b..6e8e4b009a4dd52047bc8d8f8e2e27558e0d8dff 100644
|
||||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -319,8 +319,11 @@ public class ServerGamePacketListenerImpl
|
@@ -323,9 +323,12 @@ public class ServerGamePacketListenerImpl
|
||||||
this.signedMessageDecoder = SignedMessageChain.Decoder.unsigned(player.getUUID(), server::enforceSecureProfile);
|
this.signedMessageDecoder = SignedMessageChain.Decoder.unsigned(player.getUUID(), server::enforceSecureProfile);
|
||||||
this.chatMessageChain = new FutureChain(server.chatExecutor); // CraftBukkit - async chat
|
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
|
this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event
|
||||||
+ this.exchangeTarget = new org.leavesmc.leaves.protocol.syncmatica.exchange.ExchangeTarget(this); // Leaves - Syncmatica Protocol
|
+ this.exchangeTarget = new org.leavesmc.leaves.protocol.syncmatica.exchange.ExchangeTarget(this); // Leaves - Syncmatica Protocol
|
||||||
|
this.playerGameConnection = new io.papermc.paper.connection.PaperPlayerGameConnection(this); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
+ public final org.leavesmc.leaves.protocol.syncmatica.exchange.ExchangeTarget exchangeTarget; // Leaves - Syncmatica Protocol
|
+ public final org.leavesmc.leaves.protocol.syncmatica.exchange.ExchangeTarget exchangeTarget; // Leaves - Syncmatica Protocol
|
||||||
+
|
+
|
||||||
|
// Paper start - configuration phase API
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public io.papermc.paper.connection.PlayerCommonConnection getApiConnection() {
|
||||||
if (this.ackBlockChangesUpTo > -1) {
|
|
||||||
|
|||||||
@@ -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
|
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
index 41c8fc535e7f0bd61e23f48ac250f362807fa062..775466831746b914947cd018d8def4b8bf1d6f15 100644
|
index 6760bfd91f59139922768db5e5d362c5e7e4e473..33d4025ac997f46b7bf129c4dd3ba457c6fc9da2 100644
|
||||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
@@ -452,7 +452,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
@@ -448,7 +448,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean requiresCustomPersistence() {
|
public boolean requiresCustomPersistence() {
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Creative fly no clip
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||||
index 2fe76bc1c26423ed5e39453ac1b27a2cc66b1f2e..f6e963d75fdcd951e5f5624f7d69cbbf6b8b480f 100644
|
index 8ec6f52f58bcc985fdc758a692798a35d6c86378..0d046133ea2b6d47e089cb792cf3bc3abace70ba 100644
|
||||||
--- a/net/minecraft/world/entity/player/Player.java
|
--- a/net/minecraft/world/entity/player/Player.java
|
||||||
+++ b/net/minecraft/world/entity/player/Player.java
|
+++ b/net/minecraft/world/entity/player/Player.java
|
||||||
@@ -277,8 +277,8 @@ public abstract class Player extends LivingEntity {
|
@@ -287,8 +287,8 @@ public abstract class Player extends LivingEntity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
@@ -19,7 +19,7 @@ index 2fe76bc1c26423ed5e39453ac1b27a2cc66b1f2e..f6e963d75fdcd951e5f5624f7d69cbbf
|
|||||||
this.setOnGround(false);
|
this.setOnGround(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,7 +471,7 @@ public abstract class Player extends LivingEntity {
|
@@ -481,7 +481,7 @@ public abstract class Player extends LivingEntity {
|
||||||
if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.SWIMMING)) {
|
if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.SWIMMING)) {
|
||||||
Pose desiredPose = this.getDesiredPose();
|
Pose desiredPose = this.getDesiredPose();
|
||||||
Pose pose;
|
Pose pose;
|
||||||
@@ -28,7 +28,7 @@ index 2fe76bc1c26423ed5e39453ac1b27a2cc66b1f2e..f6e963d75fdcd951e5f5624f7d69cbbf
|
|||||||
pose = desiredPose;
|
pose = desiredPose;
|
||||||
} else if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING)) {
|
} else if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING)) {
|
||||||
pose = Pose.CROUCHING;
|
pose = Pose.CROUCHING;
|
||||||
@@ -614,7 +614,7 @@ public abstract class Player extends LivingEntity {
|
@@ -624,7 +624,7 @@ public abstract class Player extends LivingEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.bob = this.bob + (f - this.bob) * 0.4F;
|
this.bob = this.bob + (f - this.bob) * 0.4F;
|
||||||
@@ -37,7 +37,7 @@ index 2fe76bc1c26423ed5e39453ac1b27a2cc66b1f2e..f6e963d75fdcd951e5f5624f7d69cbbf
|
|||||||
AABB aabb;
|
AABB aabb;
|
||||||
if (this.isPassenger() && !this.getVehicle().isRemoved()) {
|
if (this.isPassenger() && !this.getVehicle().isRemoved()) {
|
||||||
aabb = this.getBoundingBox().minmax(this.getVehicle().getBoundingBox()).inflate(1.0, 0.0, 1.0);
|
aabb = this.getBoundingBox().minmax(this.getVehicle().getBoundingBox()).inflate(1.0, 0.0, 1.0);
|
||||||
@@ -1931,6 +1931,26 @@ public abstract class Player extends LivingEntity {
|
@@ -1949,6 +1949,26 @@ public abstract class Player extends LivingEntity {
|
||||||
return this.gameMode() == GameType.SPECTATOR;
|
return this.gameMode() == GameType.SPECTATOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,10 +65,10 @@ index 2fe76bc1c26423ed5e39453ac1b27a2cc66b1f2e..f6e963d75fdcd951e5f5624f7d69cbbf
|
|||||||
public boolean canBeHitByProjectile() {
|
public boolean canBeHitByProjectile() {
|
||||||
return !this.isSpectator() && super.canBeHitByProjectile();
|
return !this.isSpectator() && super.canBeHitByProjectile();
|
||||||
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
|
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
|
||||||
index 0c67e5481a43bf7c02bb54a8ea1abca77d53a292..5cbd5d04de525c33715bc45826bd2ed446355505 100644
|
index eff2c0418e1dc8dff1b9045d8f6ff619100964d1..8b6bbdf44a840e19722d42aec91fa1f8805f917b 100644
|
||||||
--- a/net/minecraft/world/item/BlockItem.java
|
--- a/net/minecraft/world/item/BlockItem.java
|
||||||
+++ b/net/minecraft/world/item/BlockItem.java
|
+++ b/net/minecraft/world/item/BlockItem.java
|
||||||
@@ -207,8 +207,9 @@ public class BlockItem extends Item {
|
@@ -206,8 +206,9 @@ public class BlockItem extends Item {
|
||||||
protected boolean canPlace(BlockPlaceContext context, BlockState state) {
|
protected boolean canPlace(BlockPlaceContext context, BlockState state) {
|
||||||
Player player = context.getPlayer();
|
Player player = context.getPlayer();
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
@@ -93,7 +93,7 @@ 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
|
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
|
diff --git a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java b/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
||||||
index 5e58113b3401268e0432235dc10b2734dbbd8b71..1f7c2d06952febd7a5d4e216b6e22794239b9325 100644
|
index a820ab9a2b6dc6b95d4de61aaaad4e79c521efe4..c1d1e28daa3b4d2a0bb359af08670f5d071e51ed 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java
|
||||||
+++ b/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
|
@@ -152,7 +152,7 @@ public class ShulkerBoxBlockEntity extends RandomizableContainerBlockEntity impl
|
||||||
@@ -106,10 +106,10 @@ index 5e58113b3401268e0432235dc10b2734dbbd8b71..1f7c2d06952febd7a5d4e216b6e22794
|
|||||||
MoverType.SHULKER_BOX,
|
MoverType.SHULKER_BOX,
|
||||||
new Vec3(
|
new Vec3(
|
||||||
diff --git a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
||||||
index 8449545bd5278f5558567dd6b7c1522f63045f22..3d2770828d4fe1123b158e70bfe459d7cf16332a 100644
|
index 0976aef81b950a062152094501372d00c20bb2b7..2841dd4896ee15d8d7ea1105d0f78b7fe41937fb 100644
|
||||||
--- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
--- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
||||||
+++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
+++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
|
||||||
@@ -152,7 +152,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
|
@@ -151,7 +151,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
|
||||||
d3 = movementDirection.getStepZ();
|
d3 = movementDirection.getStepZ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ index 8449545bd5278f5558567dd6b7c1522f63045f22..3d2770828d4fe1123b158e70bfe459d7
|
|||||||
// Paper - EAR items stuck in slime pushed by a piston
|
// Paper - EAR items stuck in slime pushed by a piston
|
||||||
entity.activatedTick = Math.max(entity.activatedTick, net.minecraft.server.MinecraftServer.currentTick + 10);
|
entity.activatedTick = Math.max(entity.activatedTick, net.minecraft.server.MinecraftServer.currentTick + 10);
|
||||||
entity.activatedImmunityTick = Math.max(entity.activatedImmunityTick, net.minecraft.server.MinecraftServer.currentTick + 10);
|
entity.activatedImmunityTick = Math.max(entity.activatedImmunityTick, net.minecraft.server.MinecraftServer.currentTick + 10);
|
||||||
@@ -188,6 +188,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
|
@@ -187,6 +187,7 @@ public class PistonMovingBlockEntity extends BlockEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void moveEntityByPiston(Direction noClipDirection, Entity entity, double progress, Direction direction) {
|
private static void moveEntityByPiston(Direction noClipDirection, Entity entity, double progress, Direction direction) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Elytra aeronautics no chunk load
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
||||||
index 4785f9d6c53e18419a3df4a1be9c8a4f9d8cadfb..711bd09283c57e5cbe3b04d6950ecf1308fcf09c 100644
|
index 019886669966c69936ae6591598c97a8afbfd3db..b6fb1f2ba8622d9d319210ea7cf0a984349444e6 100644
|
||||||
--- a/net/minecraft/server/level/ChunkMap.java
|
--- a/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/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
|
@@ -854,7 +854,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
@@ -27,10 +27,10 @@ index 4785f9d6c53e18419a3df4a1be9c8a4f9d8cadfb..711bd09283c57e5cbe3b04d6950ecf13
|
|||||||
|
|
||||||
SectionPos lastSectionPos = player.getLastSectionPos();
|
SectionPos lastSectionPos = player.getLastSectionPos();
|
||||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index 325e3948e5bdfddfe217c9972208582e83f2c4cb..68490d8dc26c2d5f4999361fd7ad72a83581f48f 100644
|
index 31fb5ea1e33672ae71210776a0302f0ef87c6814..e6de7ef46d197c14495d4b55d094af34816fc063 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -830,6 +830,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -837,6 +837,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -41,10 +41,10 @@ index 325e3948e5bdfddfe217c9972208582e83f2c4cb..68490d8dc26c2d5f4999361fd7ad72a8
|
|||||||
this.tickBlockEntities();
|
this.tickBlockEntities();
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 448c77f5002276eab680a96b518e8a7234806f80..655ca2ead22addbb458b89e12cb2be1d269e4f5e 100644
|
index 6e8e4b009a4dd52047bc8d8f8e2e27558e0d8dff..52ef9208da25022bbc8f375696ea4f3d4e4962a3 100644
|
||||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -541,7 +541,7 @@ public class ServerGamePacketListenerImpl
|
@@ -582,7 +582,7 @@ public class ServerGamePacketListenerImpl
|
||||||
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
|
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
|
||||||
|
|
||||||
// Paper start - Prevent moving into unloaded chunks
|
// Paper start - Prevent moving into unloaded chunks
|
||||||
@@ -53,19 +53,19 @@ index 448c77f5002276eab680a96b518e8a7234806f80..655ca2ead22addbb458b89e12cb2be1d
|
|||||||
!serverLevel.areChunksLoadedForMove(this.player.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(this.player.position()))) ||
|
!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())))
|
!serverLevel.areChunksLoadedForMove(rootVehicle.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(rootVehicle.position())))
|
||||||
)) {
|
)) {
|
||||||
@@ -1549,6 +1549,7 @@ public class ServerGamePacketListenerImpl
|
@@ -1597,6 +1597,7 @@ public class ServerGamePacketListenerImpl
|
||||||
teleportBack = this.hasNewCollision(serverLevel, this.player, boundingBox, newBox);
|
allowMovement = !this.hasNewCollision(serverLevel, this.player, boundingBox, newBox);
|
||||||
} // else: no collision at all detected, why do we care?
|
} // else: no collision at all detected, why do we care?
|
||||||
}
|
}
|
||||||
+ teleportBack = teleportBack && !player.elytraAeronauticsNoChunk; // Leaves - Elytra aeronautics
|
+ allowMovement = allowMovement || player.elytraAeronauticsNoChunk; // Leaves - Elytra aeronautics
|
||||||
// Paper end - optimise out extra getCubes
|
// Paper end - optimise out extra getCubes
|
||||||
if (teleportBack) {
|
if (!allowMovement) {
|
||||||
io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.CLIPPED_INTO_BLOCK,
|
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
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||||
index f983ea2bb9d089bd4dfd81a482fd4810c6b8ebd7..0c1a50d293638c319b34f757c0ba41d31a1538ac 100644
|
index 7a82ab3b1a4a4cc7708cbec5d424b3bfcede87a9..6b3fcd3e02755ab187d075d868e9376718c218e5 100644
|
||||||
--- a/net/minecraft/world/entity/Entity.java
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -1092,7 +1092,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -1118,7 +1118,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ index f983ea2bb9d089bd4dfd81a482fd4810c6b8ebd7..0c1a50d293638c319b34f757c0ba41d3
|
|||||||
ProfilerFiller profilerFiller = Profiler.get();
|
ProfilerFiller profilerFiller = Profiler.get();
|
||||||
profilerFiller.push("move");
|
profilerFiller.push("move");
|
||||||
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7) {
|
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7) {
|
||||||
@@ -2057,6 +2063,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -2131,6 +2137,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
this.yo = y;
|
this.yo = y;
|
||||||
this.zo = d1;
|
this.zo = d1;
|
||||||
this.setPos(d, y, d1);
|
this.setPos(d, y, d1);
|
||||||
@@ -89,10 +89,10 @@ index f983ea2bb9d089bd4dfd81a482fd4810c6b8ebd7..0c1a50d293638c319b34f757c0ba41d3
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index 6893ca36cd4ae9a62fecedb1167cc6cf797a7f8f..a95fec1506af042bd3d4424e93aa3f4de9627487 100644
|
index bc19f0bf079d6a7fa2fc8aaed6477da5e57d32da..1f0042d24a11c709f291a03e1699fcaf0d6571c6 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -3276,6 +3276,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -3328,6 +3328,11 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||||
this.fallFlyTicks++;
|
this.fallFlyTicks++;
|
||||||
} else {
|
} else {
|
||||||
this.fallFlyTicks = 0;
|
this.fallFlyTicks = 0;
|
||||||
@@ -105,10 +105,10 @@ index 6893ca36cd4ae9a62fecedb1167cc6cf797a7f8f..a95fec1506af042bd3d4424e93aa3f4d
|
|||||||
|
|
||||||
if (this.isSleeping()) {
|
if (this.isSleeping()) {
|
||||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||||
index f6e963d75fdcd951e5f5624f7d69cbbf6b8b480f..ee8c0d0edbb296106a128c48f4186ba3a5bf9df8 100644
|
index 0d046133ea2b6d47e089cb792cf3bc3abace70ba..0abdf0e520d1a0672917d60b79f467df4399e256 100644
|
||||||
--- a/net/minecraft/world/entity/player/Player.java
|
--- a/net/minecraft/world/entity/player/Player.java
|
||||||
+++ b/net/minecraft/world/entity/player/Player.java
|
+++ b/net/minecraft/world/entity/player/Player.java
|
||||||
@@ -210,6 +210,7 @@ public abstract class Player extends LivingEntity {
|
@@ -219,6 +219,7 @@ public abstract class Player extends LivingEntity {
|
||||||
private int currentImpulseContextResetGraceTime = 0;
|
private int currentImpulseContextResetGraceTime = 0;
|
||||||
public boolean affectsSpawning = true; // Paper - Affects Spawning API
|
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
|
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
|
||||||
@@ -117,11 +117,11 @@ index f6e963d75fdcd951e5f5624f7d69cbbf6b8b480f..ee8c0d0edbb296106a128c48f4186ba3
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
public boolean fauxSleeping;
|
public boolean fauxSleeping;
|
||||||
diff --git a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
diff --git a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
||||||
index e0e193078e550225e163149638bf9e053c0531f8..484f1c5eba3776eff86438ba02607e60c7083b3b 100644
|
index d8dc196ef92e97f831cf97cd1536a46f81f9d5d1..92da11f86a95ff635277cbfcea73c48731080953 100644
|
||||||
--- a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
--- a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
||||||
+++ b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
+++ b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
||||||
@@ -328,7 +328,7 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
|
@@ -324,7 +324,7 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
|
||||||
this.spawningEntity = compound.read("SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); // Paper
|
this.spawningEntity = input.read("SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
- private List<FireworkExplosion> getExplosions() {
|
- private List<FireworkExplosion> getExplosions() {
|
||||||
@@ -130,10 +130,10 @@ index e0e193078e550225e163149638bf9e053c0531f8..484f1c5eba3776eff86438ba02607e60
|
|||||||
Fireworks fireworks = itemStack.get(DataComponents.FIREWORKS);
|
Fireworks fireworks = itemStack.get(DataComponents.FIREWORKS);
|
||||||
return fireworks != null ? fireworks.explosions() : List.of();
|
return fireworks != null ? fireworks.explosions() : List.of();
|
||||||
diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java
|
diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java
|
||||||
index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..6c78a59b6518799c9b199c96cc4592fb48229e9a 100644
|
index f86b0579e707ecfa5c2074ea22bbe383b5e11841..0e4335bb2469a4698b303b598ec773b5c7cc73ce 100644
|
||||||
--- a/net/minecraft/world/item/FireworkRocketItem.java
|
--- a/net/minecraft/world/item/FireworkRocketItem.java
|
||||||
+++ b/net/minecraft/world/item/FireworkRocketItem.java
|
+++ b/net/minecraft/world/item/FireworkRocketItem.java
|
||||||
@@ -57,6 +57,24 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
@@ -64,6 +64,24 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
||||||
if (player.isFallFlying()) {
|
if (player.isFallFlying()) {
|
||||||
ItemStack itemInHand = player.getItemInHand(hand);
|
ItemStack itemInHand = player.getItemInHand(hand);
|
||||||
if (level instanceof ServerLevel serverLevel) {
|
if (level instanceof ServerLevel serverLevel) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user