9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00

Update Leaf 1.21.7

This commit is contained in:
Dreeam
2025-07-01 17:53:06 +08:00
parent c72f7dab2d
commit 0912dd341c
70 changed files with 422 additions and 434 deletions

View File

@@ -1,8 +1,8 @@
name: Build Leaf 1.21.6 name: Build Leaf 1.21.7
on: on:
push: push:
branches: [ "ver/1.21.6" ] branches: [ "ver/1.21.7" ]
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -13,12 +13,12 @@ jobs:
GRADLE_MEMORY: "-Xmx4g -XX:MaxMetaspaceSize=2g" GRADLE_MEMORY: "-Xmx4g -XX:MaxMetaspaceSize=2g"
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Setup Gradle Cache - name: Setup Gradle Cache
uses: useblacksmith/cache@v5.0.2 uses: useblacksmith/cache@v5
with: with:
path: | path: |
~/.gradle/caches/modules-2 ~/.gradle/caches/modules-2
@@ -40,7 +40,7 @@ jobs:
find ~/.gradle/caches -name "*.lock" -type f -delete || echo "No lock files found" find ~/.gradle/caches -name "*.lock" -type f -delete || echo "No lock files found"
- name: Setup java - name: Setup java
uses: useblacksmith/setup-java@v5.0.1 uses: useblacksmith/setup-java@v5
with: with:
distribution: 'temurin' distribution: 'temurin'
java-version: '21' java-version: '21'
@@ -91,17 +91,17 @@ jobs:
BUILD_NUMBER: ${{ env.BUILD_NUMBER }} BUILD_NUMBER: ${{ env.BUILD_NUMBER }}
- name: Upload Leaf - name: Upload Leaf
uses: actions/upload-artifact@v4.6.2 uses: actions/upload-artifact@v4
with: with:
name: Leaf 1.21.6 name: Leaf 1.21.7
path: ./leaf-1.21.6-${{ env.BUILD_NUMBER }}.jar path: ./leaf-1.21.7-${{ env.BUILD_NUMBER }}.jar
- name: Release Leaf - name: Release Leaf
uses: softprops/action-gh-release@v2.3.2 uses: softprops/action-gh-release@v2
with: with:
name: "Leaf 1.21.6" name: "Leaf 1.21.7"
tag_name: "ver-1.21.6" tag_name: "ver-1.21.7"
files: "./leaf-1.21.6-${{ env.BUILD_NUMBER }}.jar" files: "./leaf-1.21.7-${{ env.BUILD_NUMBER }}.jar"
body_path: "./release_notes.md" body_path: "./release_notes.md"
token: "${{ secrets.GITHUB_TOKEN }}" token: "${{ secrets.GITHUB_TOKEN }}"
target_commitish: "${{ github.sha }}" target_commitish: "${{ github.sha }}"
@@ -111,21 +111,21 @@ jobs:
- name: Calculate SHA-256 - name: Calculate SHA-256
id: hash id: hash
run: | run: |
FILE_NAME="leaf-1.21.6-${{ env.BUILD_NUMBER }}.jar" FILE_NAME="leaf-1.21.7-${{ env.BUILD_NUMBER }}.jar"
HASH=$(sha256sum "$FILE_NAME" | awk '{ print $1 }') HASH=$(sha256sum "$FILE_NAME" | awk '{ print $1 }')
echo "sha256=$HASH" >> $GITHUB_OUTPUT echo "sha256=$HASH" >> $GITHUB_OUTPUT
- name: Upload JAR to download API - name: Upload JAR to download API
uses: appleboy/scp-action@v1.0.0 uses: appleboy/scp-action@v1
with: with:
host: ${{ secrets.API_HOST }} host: ${{ secrets.API_HOST }}
username: ${{ secrets.API_USER }} username: ${{ secrets.API_USER }}
password: ${{ secrets.API_PASS }} password: ${{ secrets.API_PASS }}
source: "./leaf-1.21.6-${{ env.BUILD_NUMBER }}.jar" source: "./leaf-1.21.7-${{ env.BUILD_NUMBER }}.jar"
target: "~/api/uploads/" target: "~/api/uploads/"
- name: Insert build to download API - name: Insert build to download API
uses: appleboy/ssh-action@v1.2.2 uses: appleboy/ssh-action@v1
with: with:
host: ${{ secrets.API_HOST }} host: ${{ secrets.API_HOST }}
username: ${{ secrets.API_USER }} username: ${{ secrets.API_USER }}
@@ -141,11 +141,11 @@ jobs:
node insertBuild.js \ node insertBuild.js \
--projectName leaf \ --projectName leaf \
--projectFriendlyName "Leaf" \ --projectFriendlyName "Leaf" \
--version 1.21.6 \ --version 1.21.7 \
--versionGroupName 1.21.6 \ --versionGroupName 1.21.7 \
--versionName 1.21.6 \ --versionName 1.21.7 \
--build-number ${{ env.BUILD_NUMBER }} \ --build-number ${{ env.BUILD_NUMBER }} \
--repositoryPath "$REPO_DIR" \ --repositoryPath "$REPO_DIR" \
--storagePath /root/api/storage \ --storagePath /root/api/storage \
--download "primary:/root/api/uploads/leaf-1.21.6-${{ env.BUILD_NUMBER }}.jar:${{ steps.hash.outputs.sha256 }}" \ --download "primary:/root/api/uploads/leaf-1.21.7-${{ env.BUILD_NUMBER }}.jar:${{ steps.hash.outputs.sha256 }}" \
--buildChannel default --buildChannel default

View File

@@ -2,7 +2,7 @@ name: Build Pull Request
on: on:
pull_request: pull_request:
branches: [ "ver/1.21.6" ] branches: [ "ver/1.21.7" ]
jobs: jobs:
build: build:
@@ -12,7 +12,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@main uses: actions/checkout@v4
- name: Setup java - name: Setup java
uses: useblacksmith/setup-java@v5 uses: useblacksmith/setup-java@v5
@@ -34,9 +34,9 @@ jobs:
- name: Rename Paperclip JARs - name: Rename Paperclip JARs
run: | run: |
mv leaf-server/build/libs/leaf-paperclip-1.21.6-R0.1-SNAPSHOT-mojmap.jar ./leaf-1.21.6.jar mv leaf-server/build/libs/leaf-paperclip-1.21.7-R0.1-SNAPSHOT-mojmap.jar ./leaf-1.21.7.jar
- name: Upload Leaf as build artifact - name: Upload Leaf as build artifact
uses: actions/upload-artifact@main uses: actions/upload-artifact@v4
with: with:
name: Leaf 1.21.6 name: Leaf 1.21.7
path: ./leaf-1.21.6.jar path: ./leaf-1.21.7.jar

View File

@@ -1,7 +1,8 @@
name: Publish API name: Publish API
on: on:
push: push:
branches: [ "ver/1.21.6" ] branches: [ "ver/1.21.7" ]
jobs: jobs:
build: build:
@@ -11,12 +12,12 @@ jobs:
GRADLE_MEMORY: "-Xmx4g -XX:MaxMetaspaceSize=2g" GRADLE_MEMORY: "-Xmx4g -XX:MaxMetaspaceSize=2g"
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@main uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Set up GraalVM JDK 21 - name: Set up GraalVM JDK 21
uses: graalvm/setup-graalvm@main uses: graalvm/setup-graalvm@v1
with: with:
java-version: 21 java-version: 21
github-token: "${{ secrets.GITHUB_TOKEN }}" github-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -2,7 +2,7 @@
<div align="center"> <div align="center">
[![Download](https://img.shields.io/badge/releases-blue?label=download&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/download) [![Download](https://img.shields.io/badge/releases-blue?label=download&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/download)
[![Github Actions Build](https://img.shields.io/github/actions/workflow/status/Winds-Studio/Leaf/build-1216.yml?&style=for-the-badge&colorA=19201a&colorB=298046)](https://github.com/Winds-Studio/Leaf/actions) [![Github Actions Build](https://img.shields.io/github/actions/workflow/status/Winds-Studio/Leaf/build-1217.yml?&style=for-the-badge&colorA=19201a&colorB=298046)](https://github.com/Winds-Studio/Leaf/actions)
[![Discord](https://img.shields.io/discord/1145991395388162119?label=discord&style=for-the-badge&colorA=19201a&colorB=298046)](https://discord.gg/gfgAwdSEuM) [![Discord](https://img.shields.io/discord/1145991395388162119?label=discord&style=for-the-badge&colorA=19201a&colorB=298046)](https://discord.gg/gfgAwdSEuM)
[![Docs](https://img.shields.io/badge/leafmc.one/docs/-blue?label=docs&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/docs) [![Docs](https://img.shields.io/badge/leafmc.one/docs/-blue?label=docs&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/docs)
@@ -65,7 +65,7 @@ Building a Paperclip JAR for distribution:
<dependency> <dependency>
<groupId>cn.dreeam.leaf</groupId> <groupId>cn.dreeam.leaf</groupId>
<artifactId>leaf-api</artifactId> <artifactId>leaf-api</artifactId>
<version>1.21.6-R0.1-SNAPSHOT</version> <version>1.21.7-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
``` ```
@@ -78,7 +78,7 @@ repositories {
} }
dependencies { dependencies {
compileOnly("cn.dreeam.leaf:leaf-api:1.21.6-R0.1-SNAPSHOT") compileOnly("cn.dreeam.leaf:leaf-api:1.21.7-R0.1-SNAPSHOT")
} }
java { java {

View File

@@ -1,8 +1,8 @@
group=cn.dreeam.leaf group=cn.dreeam.leaf
mcVersion=1.21.6 mcVersion=1.21.7
version=1.21.6-R0.1-SNAPSHOT version=1.21.7-R0.1-SNAPSHOT
paperCommit=4d854e66b80dad9898d71a0f0b1f83cd39b97119 paperCommit=51d28af8fa2c60464e2f5c84810c1744be164f00
org.gradle.configuration-cache=true org.gradle.configuration-cache=true
org.gradle.caching=true org.gradle.caching=true

View File

@@ -110,7 +110,7 @@ index 0000000000000000000000000000000000000000..00b16e4aacba50996b81fac81c3f78b6
+ +
+} +}
diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java
index fd6f3bce50a66004687b08fd80568543f814747a..2d6d7bc800a7c2c0f29b2d7f2512f2d27aaa9439 100644 index 2b9e4aa8cf35e7106e510e547954ee7e1bcf3d81..794ae24eee9a20c6db4690b527f5e005d5ca3f00 100644
--- a/src/main/java/org/bukkit/map/MapPalette.java --- a/src/main/java/org/bukkit/map/MapPalette.java
+++ b/src/main/java/org/bukkit/map/MapPalette.java +++ b/src/main/java/org/bukkit/map/MapPalette.java
@@ -35,7 +35,7 @@ public final class MapPalette { @@ -35,7 +35,7 @@ public final class MapPalette {
@@ -120,7 +120,7 @@ index fd6f3bce50a66004687b08fd80568543f814747a..2d6d7bc800a7c2c0f29b2d7f2512f2d2
- static final Color[] colors = { - static final Color[] colors = {
+ public static final Color[] colors = { // Gale - Pufferfish - vectorized map color conversion - package -> public + public static final Color[] colors = { // Gale - Pufferfish - vectorized map color conversion - package -> public
// Start generate - MapPalette#colors // Start generate - MapPalette#colors
// @GeneratedFrom 1.21.6 // @GeneratedFrom 1.21.7
new Color(0x00000000, true), new Color(0x00000000, true),
@@ -395,9 +395,15 @@ public final class MapPalette { @@ -395,9 +395,15 @@ public final class MapPalette {
temp.getRGB(0, 0, temp.getWidth(), temp.getHeight(), pixels, 0, temp.getWidth()); temp.getRGB(0, 0, temp.getWidth(), temp.getHeight(), pixels, 0, temp.getWidth());

View File

@@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
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..c44453789834c544b0e78b52bb9b09ffbd5958fb 100644 index 3584ca0a89f59e391ab6d5be8f2274a6801d025f..cc663ca87a6f64ea891984c72554796f25bb308f 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
@@ -2129,6 +2129,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -2128,6 +2128,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
boolean listPlayer(Player other); boolean listPlayer(Player other);
// Paper end // Paper end

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: a112b6aca718e4500a6d48ca9d7158faf0f4adf9 Commit: 591baf2648d0f75ffecc52f1d169348af35246dd
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "co/aikar/timings/TimedEventExecutor.java.patch" * "co/aikar/timings/TimedEventExecutor.java.patch"
@@ -21,7 +21,7 @@ Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "org/spigotmc/CustomTimingsHandler.java.patch" * "org/spigotmc/CustomTimingsHandler.java.patch"
diff --git a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java diff --git a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
index e4729256f444168dc8cb7121f66cae0df054692b..0db0e11f4e18a280f699004dc660ce211b7f895f 100644 index b7fae62ca1807031c62148505ae54c0fb7b87780..3b6580c3679e9c325dd8deb302dbfe6a062bd291 100644
--- a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java --- a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
+++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
@@ -446,6 +446,26 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> { @@ -446,6 +446,26 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
@@ -290,10 +290,10 @@ index 918a045165cdcde264bc24082b7afebb407271de..f283bcabff7fe6eede6cf4344537e430
+ // Purpur end - ChatColor conveniences + // Purpur end - ChatColor conveniences
} }
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index ac8d14010940d55e2d885e75ce6ff436c46e2d69..8f45823ea89c8208374115f8ed9c5a535a64c017 100644 index 899c288e12b423b9f8fe84e113fd4d996a98de94..7f488cc432ded1ec0e99c65bea5fd9897c8efbb4 100644
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -3636,4 +3636,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -3633,4 +3633,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
return this.asItemType().getDefaultDataTypes(); return this.asItemType().getDefaultDataTypes();
} }
// Paper end - data component API // Paper end - data component API
@@ -700,10 +700,10 @@ index 739911cda33b373f99df627a3a378b37d7d461aa..58e16c12b06fa11d30b67f5038844ff9
* Add an entity to the block. * Add an entity to the block.
* *
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..613a0bad5c07cf14098218652eba1f4deaf77c6d 100644 index ad1330d87223dfcf3c9da40aa5ece8c21141f0d6..e3f0605d375dcbb43ae40dac48acdeb2bd458e54 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
@@ -146,6 +146,19 @@ public class SimpleCommandMap implements CommandMap { @@ -148,6 +148,19 @@ public class SimpleCommandMap implements CommandMap {
return false; return false;
} }
@@ -723,7 +723,7 @@ index 4acda947b7d69ab4133b4cc94e76d945e4d148d5..613a0bad5c07cf14098218652eba1f4d
// Paper start - Plugins do weird things to workaround normal registration // Paper start - Plugins do weird things to workaround normal registration
if (target.timings == null) { if (target.timings == null) {
target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target); target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target);
@@ -155,7 +168,7 @@ public class SimpleCommandMap implements CommandMap { @@ -157,7 +170,7 @@ public class SimpleCommandMap implements CommandMap {
try { try {
try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources
// Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false)
@@ -1008,13 +1008,13 @@ index bc84b892cae5fe7019a3ad481e9da79956efa1fe..48eb5b00c460cccde29d327cef1d63fc
+ // Purpur end + // Purpur end
} }
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 c44453789834c544b0e78b52bb9b09ffbd5958fb..d4082cd6dae07958ace3b9e9769ccb7da4c2a828 100644 index cc663ca87a6f64ea891984c72554796f25bb308f..747e943d98a385346b79897a5261d41cfc9572df 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
@@ -3935,4 +3935,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -3942,4 +3942,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param score New death screen score of player
*/ */
void setDeathScreenScore(int score); @ApiStatus.Experimental
PlayerGameConnection getConnection();
+ +
+ // Purpur start + // Purpur start
+ /** + /**
@@ -1161,7 +1161,7 @@ index 7fbfdb07585c7b28acea1f0c1f58ada0cc744441..21fcca092e2e31baa5ece0de9e44e3fa
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java
index 1be07639143cd80bd4fb304d6f3bbced58887617..120159852cae3b1a71c6c7ce949cadb386023095 100644 index 4048add2433ebe39d3df995296daaff4bfadce47..8da18f023f6b18f6be58e08f37c2d873bc0c97d2 100644
--- a/src/main/java/org/bukkit/entity/Villager.java --- a/src/main/java/org/bukkit/entity/Villager.java
+++ b/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java
@@ -408,4 +408,13 @@ public interface Villager extends AbstractVillager { @@ -408,4 +408,13 @@ public interface Villager extends AbstractVillager {
@@ -1204,7 +1204,7 @@ index 11ae1b3ad8c215f9245945d223c52f4a62ac47d9..7f23eb5a60ff08fb31e8ba3731a43bd7
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/bukkit/entity/Wolf.java b/src/main/java/org/bukkit/entity/Wolf.java diff --git a/src/main/java/org/bukkit/entity/Wolf.java b/src/main/java/org/bukkit/entity/Wolf.java
index d0a64457e4bf40f2a78ffe90c2d402adc154e327..ea51840e4f40733a48ca34f7a8fcf17dc963d659 100644 index 98ed584f801a35253a9a5a2af3c73dbbc49bcb06..8708ab27e38e3906b13d103ad45224c89e239117 100644
--- a/src/main/java/org/bukkit/entity/Wolf.java --- a/src/main/java/org/bukkit/entity/Wolf.java
+++ b/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java
@@ -163,4 +163,20 @@ public interface Wolf extends Tameable, Sittable, io.papermc.paper.entity.Collar @@ -163,4 +163,20 @@ public interface Wolf extends Tameable, Sittable, io.papermc.paper.entity.Collar
@@ -1260,10 +1260,10 @@ index 22e14ba522510d659c191d72536cde895458d9ed..d45d781975a6026022712a217c154e31
* When a player gets bad omen after killing a patrol captain. * When a player gets bad omen after killing a patrol captain.
* *
diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java
index 81118a91c2e22e02a1f774d1cc4d3e97064087ce..6640df827e354cc32cea5fc71b9e464443202708 100644 index 54ff294e64abd692c0f64ba2db7341c9c71436d0..49e458e453486dcf48d1ab920da176723d7ef3f4 100644
--- a/src/main/java/org/bukkit/event/inventory/InventoryType.java --- a/src/main/java/org/bukkit/event/inventory/InventoryType.java
+++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java
@@ -164,7 +164,7 @@ public enum InventoryType { @@ -166,7 +166,7 @@ public enum InventoryType {
SMITHING_NEW(4, "Upgrade Gear", MenuType.SMITHING), SMITHING_NEW(4, "Upgrade Gear", MenuType.SMITHING),
; ;

View File

@@ -2892,18 +2892,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 613a0bad5c07cf14098218652eba1f4deaf77c6d..25a0414cc9482925ad0426dde57e65012d62e637 100644 index e3f0605d375dcbb43ae40dac48acdeb2bd458e54..83e7175927e8adb90208bebbd7ddc37cb186d1dc 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) {
@@ -2911,7 +2911,7 @@ index 613a0bad5c07cf14098218652eba1f4deaf77c6d..25a0414cc9482925ad0426dde57e6501
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);
@@ -159,23 +157,13 @@ public class SimpleCommandMap implements CommandMap { @@ -161,23 +159,13 @@ public class SimpleCommandMap implements CommandMap {
parsedArgs = event.getArgs(); parsedArgs = event.getArgs();
// Purpur end - ExecuteCommandEvent // Purpur end - ExecuteCommandEvent

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi Original project: https://github.com/KeYiMC/KeYi
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 d4082cd6dae07958ace3b9e9769ccb7da4c2a828..d17f7881e55d61c2137f29d0b903016958b05b5d 100644 index 747e943d98a385346b79897a5261d41cfc9572df..66fc9a061d0d5f030ecf8df94acf7357a4cf9eaa 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
@@ -4054,4 +4054,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -4061,4 +4061,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
sendDeathScreen(message); sendDeathScreen(message);
} }
// Purpur end // Purpur end

View File

@@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice
Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
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 d17f7881e55d61c2137f29d0b903016958b05b5d..09f70aa4d206a1b7fc5f3274f34c6885a9e2d60d 100644 index 66fc9a061d0d5f030ecf8df94acf7357a4cf9eaa..9ee5ef2ea93fdf91abf8c312ec2a39b36d096152 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
@@ -3716,6 +3716,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -3715,6 +3715,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName(); String getClientBrandName();
// Paper end // Paper end

View File

@@ -7,7 +7,7 @@
+val leafMavenPublicUrl = "https://maven.nostal.ink/repository/maven-snapshots/" // Leaf - project setup - Add publish repo +val leafMavenPublicUrl = "https://maven.nostal.ink/repository/maven-snapshots/" // Leaf - project setup - Add publish repo
dependencies { dependencies {
mache("io.papermc:mache:1.21.6+build.1") mache("io.papermc:mache:1.21.7+build.1")
- paperclip("io.papermc:paperclip:3.0.3") - paperclip("io.papermc:paperclip:3.0.3")
+ paperclip("cn.dreeam:quantumleaper:1.0.0-SNAPSHOT") // Leaf - project setup - Use own paperclip fork + paperclip("cn.dreeam:quantumleaper:1.0.0-SNAPSHOT") // Leaf - project setup - Use own paperclip fork
testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.platform:junit-platform-launcher")
@@ -32,7 +32,7 @@
+ +
spigot { spigot {
enabled = true enabled = true
buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d" buildDataRef = "436eac9815c211be1a2a6ca0702615f995e81c44"
@@ -49,6 +_,7 @@ @@ -49,6 +_,7 @@
libraryRepositories.addAll( libraryRepositories.addAll(
"https://repo.maven.apache.org/maven2/", "https://repo.maven.apache.org/maven2/",

View File

@@ -1079,7 +1079,7 @@ index b4c983216cd839d793a09e327bb2f15ab90cbff8..1413511500ce8ae25cc4af1d54fc33c8
for (Entity entity : passengerEntity.getPassengers()) { for (Entity entity : passengerEntity.getPassengers()) {
this.tickPassenger(passengerEntity, entity, isActive); // Paper - EAR 2 this.tickPassenger(passengerEntity, entity, isActive); // Paper - EAR 2
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 b1fba7be059247bc4ba4e652f730e026e837b608..5a4b6005de28f62c98ac8172890689d3150fd4da 100644 index 21ae237a94232090029539652310f7d1e4aba381..4132ebc316af92aedd3b5f21d291e7d57560e985 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
@@ -106,8 +106,6 @@ import net.minecraft.util.HashOps; @@ -106,8 +106,6 @@ import net.minecraft.util.HashOps;
@@ -1091,7 +1091,7 @@ index b1fba7be059247bc4ba4e652f730e026e837b608..5a4b6005de28f62c98ac8172890689d3
import net.minecraft.world.Container; import net.minecraft.world.Container;
import net.minecraft.world.Difficulty; import net.minecraft.world.Difficulty;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
@@ -1471,14 +1469,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1405,14 +1403,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.unsetRemoved(); this.unsetRemoved();
*/ */
// CraftBukkit end // CraftBukkit end
@@ -1106,7 +1106,7 @@ index b1fba7be059247bc4ba4e652f730e026e837b608..5a4b6005de28f62c98ac8172890689d3
// CraftBukkit start // CraftBukkit start
this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds
LevelData worlddata = level.getLevelData(); LevelData worlddata = level.getLevelData();
@@ -1495,7 +1489,6 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1429,7 +1423,6 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event
this.connection.resetPosition(); this.connection.resetPosition();
level.addDuringTeleport(this); level.addDuringTeleport(this);
@@ -1115,7 +1115,7 @@ index b1fba7be059247bc4ba4e652f730e026e837b608..5a4b6005de28f62c98ac8172890689d3
this.stopUsingItem(); this.stopUsingItem();
this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities()));
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 43f70a5561d6cc62aaeba6d1e39598ecb382e369..ccbf60f546974692c2c840f4bce87e2c95d1866c 100644 index 16962ccab91d0941e428a2e53aa37e9ca975f62f..911ce7fcdb7b60880e5502b1a6c9f5bd07c04fd1 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
@@ -26,7 +26,6 @@ import net.minecraft.network.protocol.cookie.ServerboundCookieResponsePacket; @@ -26,7 +26,6 @@ import net.minecraft.network.protocol.cookie.ServerboundCookieResponsePacket;
@@ -1125,8 +1125,8 @@ index 43f70a5561d6cc62aaeba6d1e39598ecb382e369..ccbf60f546974692c2c840f4bce87e2c
-import net.minecraft.util.profiling.Profiler; -import net.minecraft.util.profiling.Profiler;
import org.slf4j.Logger; import org.slf4j.Logger;
public abstract class ServerCommonPacketListenerImpl implements ServerCommonPacketListener, org.bukkit.craftbukkit.entity.CraftPlayer.TransferCookieConnection { // CraftBukkit public abstract class ServerCommonPacketListenerImpl implements ServerCommonPacketListener {
@@ -273,7 +272,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -176,7 +175,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
} }
protected void keepConnectionAlive() { protected void keepConnectionAlive() {
@@ -1134,7 +1134,7 @@ index 43f70a5561d6cc62aaeba6d1e39598ecb382e369..ccbf60f546974692c2c840f4bce87e2c
long millis = Util.getMillis(); long millis = Util.getMillis();
// Paper start - improve keepalives // Paper start - improve keepalives
if (this.checkIfClosed(millis) && !this.processedDisconnect) { if (this.checkIfClosed(millis) && !this.processedDisconnect) {
@@ -294,8 +292,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -197,8 +195,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
// Paper end - improve keepalives // Paper end - improve keepalives
} }
} }
@@ -1664,10 +1664,10 @@ index c569074403b1d8b443aaa98ba9cf9bbd0e98bd2d..b1aa7294f9479f45fcde77c5ea46db9f
this.seen.add(id); this.seen.add(id);
} else { } else {
diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java
index 24fdfda487bf5348c32707022719ec9907debc80..4e74d5b3076f50f9294553b453f5903ef32f1e8a 100644 index 272f57aca640e045efca64dd018b221335c667ee..f07dcf7d45b1b717faeae0c4129fb00a22fb7d57 100644
--- a/net/minecraft/world/entity/animal/HappyGhast.java --- a/net/minecraft/world/entity/animal/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java
@@ -13,8 +13,6 @@ import net.minecraft.sounds.SoundEvents; @@ -14,8 +14,6 @@ import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.tags.ItemTags; import net.minecraft.tags.ItemTags;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
@@ -1676,7 +1676,7 @@ index 24fdfda487bf5348c32707022719ec9907debc80..4e74d5b3076f50f9294553b453f5903e
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
@@ -379,13 +377,8 @@ public class HappyGhast extends Animal { @@ -385,13 +383,8 @@ public class HappyGhast extends Animal {
@Override @Override
protected void customServerAiStep(ServerLevel level) { protected void customServerAiStep(ServerLevel level) {
if (this.isBaby()) { if (this.isBaby()) {
@@ -2077,7 +2077,7 @@ index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..dd6666bd8b8df4148a1557627ce2a6dd
if ((this.tickCount + this.getId()) % 120 == 0) { if ((this.tickCount + this.getId()) % 120 == 0) {
applyDarknessAround(level, this.position(), this, 20); applyDarknessAround(level, this.position(), this, 20);
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 43f16df230f87a43e249a58fc10ef2da517f22ee..532618ae4acd548129006a6c42c62a5b046dbd7e 100644 index e1e2bdb35866a8f32a41f6efd24ad77cf916b2e9..6cf2af33d22d3df8374746f5926f3f2d5093431d 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -35,8 +35,6 @@ import net.minecraft.stats.Stats; @@ -35,8 +35,6 @@ import net.minecraft.stats.Stats;
@@ -2089,7 +2089,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..532618ae4acd548129006a6c42c62a5b
import net.minecraft.world.Difficulty; import net.minecraft.world.Difficulty;
import net.minecraft.world.DifficultyInstance; import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
@@ -295,10 +293,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -294,10 +292,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
protected void customServerAiStep(ServerLevel level, final boolean inactive) { protected void customServerAiStep(ServerLevel level, final boolean inactive) {
// Paper end - EAR 2 // Paper end - EAR 2

View File

@@ -22,10 +22,10 @@ you to easily disable books, should you want to preemptively remove this
functionality before additional exploits are found. functionality before additional exploits are found.
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 aeb43902a09ef9c1b137964065780be3e87648f4..383652f0bd32fca3551db85fb6ac42a0e326836e 100644 index 04c991964364a9bcf87d9f6a8d3ef0a0dd8f1deb..128fd9c5a44f05d3556f280f43151695da0665b8 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
@@ -1255,6 +1255,11 @@ public class ServerGamePacketListenerImpl @@ -1257,6 +1257,11 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleEditBook(ServerboundEditBookPacket packet) { public void handleEditBook(ServerboundEditBookPacket packet) {

View File

@@ -13,22 +13,22 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft)
Licensed under: MIT (https://opensource.org/licenses/MIT) Licensed under: MIT (https://opensource.org/licenses/MIT)
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 ffae3e45ba88e8b733e77b87a45cc27b9ecf8c19..684a15babe984c84703e2c6af7a461f75959312d 100644 index 4132ebc316af92aedd3b5f21d291e7d57560e985..8df0dbadca1dc72ac8d267654414044eb988ee43 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
@@ -425,6 +425,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -424,6 +424,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public boolean sentListPacket = false; public boolean sentListPacket = false;
public boolean supressTrackerForLogin = false; // Paper - Fire PlayerJoinEvent when Player is actually ready public boolean supressTrackerForLogin = false; // Paper - Fire PlayerJoinEvent when Player is actually ready
// CraftBukkit end // CraftBukkit end
+ public boolean didPlayerJoinEvent = false; // Gale - EMC - do not process chat/commands before player has joined + public boolean didPlayerJoinEvent = false; // Gale - EMC - do not process chat/commands before player has joined
public boolean isRealPlayer; // Paper 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
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 383652f0bd32fca3551db85fb6ac42a0e326836e..29466047936ed44f57cb4bcb8f1bff0bdad81827 100644 index 128fd9c5a44f05d3556f280f43151695da0665b8..ab0598fffccaf1ea628ab38c68d75399d73d897e 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
@@ -2433,7 +2433,7 @@ public class ServerGamePacketListenerImpl @@ -2431,7 +2431,7 @@ public class ServerGamePacketListenerImpl
this.disconnectAsync(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - add proper async disconnect this.disconnectAsync(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - add proper async disconnect
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false)); this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false));
@@ -38,7 +38,7 @@ index 383652f0bd32fca3551db85fb6ac42a0e326836e..29466047936ed44f57cb4bcb8f1bff0b
// CraftBukkit start // CraftBukkit start
if (sync) { if (sync) {
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 898d9ab963a6cf1db8edf4657a65335d15f271c4..77dbd115d99d8f8e2c01ea69ca297ced06b19c12 100644 index b09c1735acb57b6230225f88e0fc710ad61af119..39b977927a22956634b7c31818df0544814004fc 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
@@ -335,6 +335,8 @@ public abstract class PlayerList { @@ -335,6 +335,8 @@ public abstract class PlayerList {

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
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 29466047936ed44f57cb4bcb8f1bff0bdad81827..767dfc71ad9aafffa01ed27fdeac2c19bbba6f37 100644 index ab0598fffccaf1ea628ab38c68d75399d73d897e..5dba2bdd91e5dc775e0727b99aff02c892eff733 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
@@ -2515,7 +2515,7 @@ public class ServerGamePacketListenerImpl @@ -2513,7 +2513,7 @@ public class ServerGamePacketListenerImpl
// CraftBukkit start // CraftBukkit start
String rawMessage = message.signedContent(); String rawMessage = message.signedContent();
if (rawMessage.isEmpty()) { if (rawMessage.isEmpty()) {

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
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 8017266123a91e5bd46ae0d39a35cf2e6cbb390f..c5ab58c890c7c55f2ad75560269663d3fd5a6aa3 100644 index 39b977927a22956634b7c31818df0544814004fc..d0b12d91686592149a8a3e33677eb2e26e19624e 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
@@ -1274,7 +1274,7 @@ public abstract class PlayerList { @@ -1258,7 +1258,7 @@ public abstract class PlayerList {
public void broadcastChatMessage(PlayerChatMessage message, Predicate<ServerPlayer> shouldFilterMessageTo, @Nullable ServerPlayer sender, ChatType.Bound boundChatType, @Nullable Function<net.kyori.adventure.audience.Audience, Component> unsignedFunction) { public void broadcastChatMessage(PlayerChatMessage message, Predicate<ServerPlayer> shouldFilterMessageTo, @Nullable ServerPlayer sender, ChatType.Bound boundChatType, @Nullable Function<net.kyori.adventure.audience.Audience, Component> unsignedFunction) {
// Paper end // Paper end
boolean flag = this.verifyChatTrusted(message); boolean flag = this.verifyChatTrusted(message);

View File

@@ -17,10 +17,10 @@ Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
This can help to hide annoying scanning bots from showing up in console. This can help to hide annoying scanning bots from showing up in console.
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 7950f4f88d8a83ed5610b7af4e134557d32da3f0..27fa7bbfc64dd103b7cd1c1216482af3719e3dbb 100644 index ebf4d4516233c002b33084f1679044b23869d848..5bac1c0ba691e516f2d603583971df7fe7ac212c 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -145,6 +145,15 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -124,6 +124,15 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
public void disconnect(Component reason) { public void disconnect(Component reason) {
try { try {

View File

@@ -152,10 +152,10 @@ index a9c2f419200483673f6743ed94af110a8e875e71..617eb1b9d30d499124576c5d7cb51525
return ret; return ret;
} }
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 45e4a7356e51e9c50d440782b55d1cbfc4b76f96..f752dceea48ed8264ae4cb60fdf2390f0e5019e1 100644 index 8df0dbadca1dc72ac8d267654414044eb988ee43..784a08d0aed30fd0362e408aaa5772003021c0ad 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
@@ -1166,7 +1166,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1100,7 +1100,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.getInventory().getNonEquipmentItems().set(i, net.minecraft.world.item.ItemStack.EMPTY); this.getInventory().getNonEquipmentItems().set(i, net.minecraft.world.item.ItemStack.EMPTY);
} }
} }
@@ -165,10 +165,10 @@ index 45e4a7356e51e9c50d440782b55d1cbfc4b76f96..f752dceea48ed8264ae4cb60fdf2390f
this.getInventory().equipment.set(value, net.minecraft.world.item.ItemStack.EMPTY); this.getInventory().equipment.set(value, net.minecraft.world.item.ItemStack.EMPTY);
} }
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 f953fa6adb112bc9da34cfb72045975f87c5f021..a07310aebd8406af27864358e15715fcc7694329 100644 index 5dba2bdd91e5dc775e0727b99aff02c892eff733..38376506f8b886ed66ec48b1a78dede2a7cabe99 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
@@ -2784,7 +2784,7 @@ public class ServerGamePacketListenerImpl @@ -2782,7 +2782,7 @@ public class ServerGamePacketListenerImpl
// SPIGOT-7136 - Allays // SPIGOT-7136 - Allays
if (target instanceof net.minecraft.world.entity.animal.allay.Allay || target instanceof net.minecraft.world.entity.animal.horse.AbstractHorse) { // Paper - Fix horse armor desync if (target instanceof net.minecraft.world.entity.animal.allay.Allay || target instanceof net.minecraft.world.entity.animal.horse.AbstractHorse) { // Paper - Fix horse armor desync
ServerGamePacketListenerImpl.this.send(new net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket( ServerGamePacketListenerImpl.this.send(new net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket(

View File

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
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 186e0a6e565d29572f5d4771a68e4a9cb2bd45de..91d4a5f7685296e397c1c341813542fd13eaf168 100644 index edefdd4be2b3af69c416ad32e2574865fa27da34..537d433dd7c301444b15327104b0c605d5833448 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
@@ -113,6 +113,7 @@ public abstract class PlayerList { @@ -113,6 +113,7 @@ public abstract class PlayerList {
@@ -64,7 +64,7 @@ index 186e0a6e565d29572f5d4771a68e4a9cb2bd45de..91d4a5f7685296e397c1c341813542fd
this.server.getCustomBossEvents().onPlayerDisconnect(player); this.server.getCustomBossEvents().onPlayerDisconnect(player);
UUID uuid = player.getUUID(); UUID uuid = player.getUUID();
ServerPlayer serverPlayer = this.playersByUUID.get(uuid); ServerPlayer serverPlayer = this.playersByUUID.get(uuid);
@@ -720,6 +723,7 @@ public abstract class PlayerList { @@ -687,6 +690,7 @@ public abstract class PlayerList {
player.stopRiding(); // CraftBukkit player.stopRiding(); // CraftBukkit
this.players.remove(player); this.players.remove(player);
this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
@@ -72,7 +72,7 @@ index 186e0a6e565d29572f5d4771a68e4a9cb2bd45de..91d4a5f7685296e397c1c341813542fd
player.level().removePlayerImmediately(player, reason); player.level().removePlayerImmediately(player, reason);
// TeleportTransition teleportTransition = player.findRespawnPositionAndUseSpawnBlock(!keepInventory, TeleportTransition.DO_NOTHING); // TeleportTransition teleportTransition = player.findRespawnPositionAndUseSpawnBlock(!keepInventory, TeleportTransition.DO_NOTHING);
// ServerLevel level = teleportTransition.newLevel(); // ServerLevel level = teleportTransition.newLevel();
@@ -798,6 +802,7 @@ public abstract class PlayerList { @@ -765,6 +769,7 @@ public abstract class PlayerList {
this.players.add(serverPlayer); this.players.add(serverPlayer);
this.playersByName.put(serverPlayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT), serverPlayer); // Spigot this.playersByName.put(serverPlayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT), serverPlayer); // Spigot
this.playersByUUID.put(serverPlayer.getUUID(), serverPlayer); this.playersByUUID.put(serverPlayer.getUUID(), serverPlayer);
@@ -80,7 +80,7 @@ index 186e0a6e565d29572f5d4771a68e4a9cb2bd45de..91d4a5f7685296e397c1c341813542fd
} }
// serverPlayer.initInventoryMenu(); // serverPlayer.initInventoryMenu();
serverPlayer.setHealth(serverPlayer.getHealth()); serverPlayer.setHealth(serverPlayer.getHealth());
@@ -900,18 +905,58 @@ public abstract class PlayerList { @@ -867,18 +872,58 @@ public abstract class PlayerList {
} }
public void tick() { public void tick() {

View File

@@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
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 91d4a5f7685296e397c1c341813542fd13eaf168..8e7c77174750807bc0e925b100ff73a7bedd76e9 100644 index 537d433dd7c301444b15327104b0c605d5833448..920ab7be58f9fcbc181690ef7b386b9bacfa5d5f 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
@@ -909,10 +909,19 @@ public abstract class PlayerList { @@ -876,10 +876,19 @@ public abstract class PlayerList {
ServerPlayer[] sendAllPlayerInfoBucket = this.sendAllPlayerInfoBuckets[this.sendAllPlayerInfoIn]; ServerPlayer[] sendAllPlayerInfoBucket = this.sendAllPlayerInfoBuckets[this.sendAllPlayerInfoIn];
if (sendAllPlayerInfoBucket != null) { if (sendAllPlayerInfoBucket != null) {

View File

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
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 ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda96a0499e2 100644 index 911ce7fcdb7b60880e5502b1a6c9f5bd07c04fd1..31091dd52172d447f98497097d8dabdfef720362 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
@@ -38,10 +38,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -38,10 +38,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -51,8 +51,8 @@ index ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda9
private boolean closed = false; private boolean closed = false;
+ private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Gale - Purpur - send multiple keep-alive packets + private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Gale - Purpur - send multiple keep-alive packets
private volatile int latency; // Paper - improve keepalives - make volatile private volatile int latency; // Paper - improve keepalives - make volatile
private final io.papermc.paper.util.KeepAlive keepAlive; // Paper - improve keepalives
private volatile boolean suspendFlushingOnServerThread = false; private volatile boolean suspendFlushingOnServerThread = false;
// CraftBukkit start
@@ -50,7 +51,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -50,7 +51,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
public boolean processedDisconnect; public boolean processedDisconnect;
// CraftBukkit end // CraftBukkit end
@@ -63,12 +63,12 @@ index ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda9
+ private static final long KEEPALIVE_LIMIT = KEEPALIVE_LIMIT_IN_SECONDS * 1000; + private static final long KEEPALIVE_LIMIT = KEEPALIVE_LIMIT_IN_SECONDS * 1000;
+ // Gale end - Purpur - send multiple keep-alive packets + // Gale end - Purpur - send multiple keep-alive packets
protected static final net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support protected static final net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support
public @Nullable String playerBrand; // Paper
public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit @@ -93,6 +97,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -122,6 +126,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
// Paper start - improve keepalives // Paper start - improve keepalives
long now = System.nanoTime(); long now = System.nanoTime();
net.minecraft.server.level.ServerPlayer.PendingKeepAlive pending = this.player.pendingKeepAlives.peek(); io.papermc.paper.util.KeepAlive.PendingKeepAlive pending = this.keepAlive.pendingKeepAlives.peek();
+ // Gale start - Purpur - send multiple keep-alive packets + // Gale start - Purpur - send multiple keep-alive packets
+ if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().misc.keepalive.sendMultiple) { + if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().misc.keepalive.sendMultiple) {
+ if (this.keepAlivePending && !keepAlives.isEmpty() && keepAlives.contains(packet.getId())) { + if (this.keepAlivePending && !keepAlives.isEmpty() && keepAlives.contains(packet.getId())) {
@@ -82,17 +82,17 @@ index ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda9
+ } else { + } else {
+ // Gale end - Purpur - send multiple keep-alive packets + // Gale end - Purpur - send multiple keep-alive packets
if (pending != null && pending.challengeId() == packet.getId()) { if (pending != null && pending.challengeId() == packet.getId()) {
this.player.pendingKeepAlives.remove(pending); this.keepAlive.pendingKeepAlives.remove(pending);
@@ -133,6 +149,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -104,6 +120,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
this.latency = this.player.pingCalculator5s.getAvgLatencyMS(); this.latency = this.keepAlive.pingCalculator5s.getAvgLatencyMS();
return; return;
} }
+ } // Gale - Purpur - send multiple keep-alive packets + } // Gale - Purpur - send multiple keep-alive packets
for (java.util.Iterator<net.minecraft.server.level.ServerPlayer.PendingKeepAlive> itr = this.player.pendingKeepAlives.iterator(); itr.hasNext();) { for (java.util.Iterator<io.papermc.paper.util.KeepAlive.PendingKeepAlive> itr = this.keepAlive.pendingKeepAlives.iterator(); itr.hasNext();) {
net.minecraft.server.level.ServerPlayer.PendingKeepAlive ka = itr.next(); io.papermc.paper.util.KeepAlive.PendingKeepAlive ka = itr.next();
@@ -274,6 +291,23 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -177,6 +194,23 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
protected void keepConnectionAlive() { protected void keepConnectionAlive() {
long millis = Util.getMillis(); long millis = Util.getMillis();
// Paper start - improve keepalives // Paper start - improve keepalives
@@ -100,10 +100,10 @@ index ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda9
+ if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().misc.keepalive.sendMultiple) { + if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().misc.keepalive.sendMultiple) {
+ if (this.checkIfClosed(millis) && !this.processedDisconnect) { + if (this.checkIfClosed(millis) && !this.processedDisconnect) {
+ long currTime = System.nanoTime(); + long currTime = System.nanoTime();
+ if ((currTime - this.player.lastKeepAliveTx) >= java.util.concurrent.TimeUnit.SECONDS.toNanos(1L)) { // 1 second + if ((currTime - this.keepAlive.lastKeepAliveTx) >= java.util.concurrent.TimeUnit.SECONDS.toNanos(1L)) { // 1 second
+ this.player.lastKeepAliveTx = currTime; + this.keepAlive.lastKeepAliveTx = currTime;
+ if (this.keepAlivePending && !this.processedDisconnect && keepAlives.size() * 1000L >= KEEPALIVE_LIMIT) { + if (this.keepAlivePending && !this.processedDisconnect && keepAlives.size() * 1000L >= KEEPALIVE_LIMIT) {
+ this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); + this.disconnect(TIMEOUT_DISCONNECTION_MESSAGE, io.papermc.paper.connection.DisconnectionReason.TIMEOUT);
+ } else if (this.checkIfClosed(millis)) { + } else if (this.checkIfClosed(millis)) {
+ this.keepAlivePending = true; + this.keepAlivePending = true;
+ this.keepAlives.add(millis); // currentTime is ID + this.keepAlives.add(millis); // currentTime is ID
@@ -116,7 +116,7 @@ index ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda9
if (this.checkIfClosed(millis) && !this.processedDisconnect) { if (this.checkIfClosed(millis) && !this.processedDisconnect) {
long currTime = System.nanoTime(); long currTime = System.nanoTime();
@@ -292,6 +326,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -195,6 +229,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
// Paper end - improve keepalives // Paper end - improve keepalives
} }
} }
@@ -124,3 +124,10 @@ index ccbf60f546974692c2c840f4bce87e2c95d1866c..ddc89e8960f7dc2f75f0e03ccbe6eda9
} }
private boolean checkIfClosed(long time) { private boolean checkIfClosed(long time) {
@@ -372,4 +407,4 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
protected CommonListenerCookie createCookie(ClientInformation clientInformation) {
return new CommonListenerCookie(this.playerProfile(), this.latency, clientInformation, this.transferred, this.playerBrand, this.keepAlive); // Paper
}
-}
\ No newline at end of file
+}

View File

@@ -7,17 +7,16 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 27fa7bbfc64dd103b7cd1c1216482af3719e3dbb..dc225eaa0daf238e091a0cf63a42158a30ecb7f0 100644 index 5bac1c0ba691e516f2d603583971df7fe7ac212c..f9fad100d3e5e4b44a5b0f88e288e6fac7a250f7 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -126,7 +126,11 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -105,7 +105,10 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
this.finishLoginAndWaitForClient(this.authenticatedProfile); }
} public void tickTimeout() {
// Paper end - login cookie API
- if (this.tick++ == 600) { - if (this.tick++ == 600) {
+ // Gale start - make slow login timeout configurable + // Gale start - make slow login timeout configurable
+ int slowLoginTimeout = org.galemc.gale.configuration.GaleGlobalConfiguration.get().misc.premiumAccountSlowLoginTimeout; + int slowLoginTimeout = org.galemc.gale.configuration.GaleGlobalConfiguration.get().misc.premiumAccountSlowLoginTimeout;
+
+ if (this.tick++ >= (slowLoginTimeout < 1 ? MAX_TICKS_BEFORE_LOGIN : slowLoginTimeout)) { + if (this.tick++ >= (slowLoginTimeout < 1 ? MAX_TICKS_BEFORE_LOGIN : slowLoginTimeout)) {
+ // Gale end - make slow login timeout configurable + // Gale end - make slow login timeout configurable
this.disconnect(Component.translatable("multiplayer.disconnect.slow_login")); this.disconnect(Component.translatable("multiplayer.disconnect.slow_login"));

View File

@@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
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 f752dceea48ed8264ae4cb60fdf2390f0e5019e1..9b715b5848b33dd023feccfa93c08924c92fbe13 100644 index 784a08d0aed30fd0362e408aaa5772003021c0ad..bbe123fd18fe97ae93bf562f32af73cdde722f70 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
@@ -2181,12 +2181,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2115,12 +2115,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@Override @Override
public void crit(Entity entityHit) { public void crit(Entity entityHit) {

View File

@@ -26,10 +26,10 @@ index 92a820d48057ffe2ef35919341b6cdf605ca939e..b9b1bf351070cd2a744cdb683974fb2a
double d1 = center.y - maxRange; double d1 = center.y - maxRange;
double d2 = center.x + maxRange; double d2 = center.x + maxRange;
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 9b715b5848b33dd023feccfa93c08924c92fbe13..99eaa04bfcd2d37d3e49513e20bb5037119ef84d 100644 index bbe123fd18fe97ae93bf562f32af73cdde722f70..feb4f7c70220e9c48a17a815631298bcb8366ded 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
@@ -562,7 +562,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -496,7 +496,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
long l1 = l * l; long l1 = l * l;
int i = l1 > 2147483647L ? Integer.MAX_VALUE : (int)l1; int i = l1 > 2147483647L ? Integer.MAX_VALUE : (int)l1;
int coprime = this.getCoprime(i); int coprime = this.getCoprime(i);

View File

@@ -85,7 +85,7 @@ index ad114ca013e0d09d40755acbe916586868a519ed..3f70fca36f67fa421314ff92d372a971
if (!tickRateManager.isEntityFrozen(entity)) { if (!tickRateManager.isEntityFrozen(entity)) {
entity.checkDespawn(); entity.checkDespawn();
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 e457dc20f76d813c32225733af0b29646d501202..57e669eeb2a05805b8ed81311344bc27292608f3 100644 index 96341ee17591135d77d78c94814313b66eed4c3d..28e2ad1238651b8adb47b77763b0c8ae8172fe8a 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
@@ -364,6 +364,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -364,6 +364,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -98,7 +98,7 @@ index e457dc20f76d813c32225733af0b29646d501202..57e669eeb2a05805b8ed81311344bc27
// Paper start - EAR 2 // Paper start - EAR 2
public final boolean defaultActivationState; public final boolean defaultActivationState;
diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java
index b87c6da5272becfa1159e8352f5be5491824f66f..9dc5a7e9fdb83d98c3554fea064b06f022da4496 100644 index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..388689c44cf63ade939e271d490051c9b3fe8034 100644
--- a/net/minecraft/world/entity/EntityType.java --- a/net/minecraft/world/entity/EntityType.java
+++ b/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java
@@ -1085,6 +1085,7 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT @@ -1085,6 +1085,7 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -299,10 +299,10 @@ index dd6666bd8b8df4148a1557627ce2a6ddab245ed6..6a9d3b749e251d3dac6fda13318bf5a0
super.customServerAiStep(level); super.customServerAiStep(level);
if ((this.tickCount + this.getId()) % 120 == 0) { if ((this.tickCount + this.getId()) % 120 == 0) {
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 73214ccad93ccd186c149e8ce8913eb0e3fa324a..9b9514362f32ab79816678ce4be25a4a87fe49aa 100644 index 6cf2af33d22d3df8374746f5926f3f2d5093431d..f37759161b2a682612c6676cdd0d15908259776c 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -178,6 +178,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -177,6 +177,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
(villager, poiType) -> poiType.is(PoiTypes.MEETING) (villager, poiType) -> poiType.is(PoiTypes.MEETING)
); );
@@ -311,7 +311,7 @@ index 73214ccad93ccd186c149e8ce8913eb0e3fa324a..9b9514362f32ab79816678ce4be25a4a
public Villager(EntityType<? extends Villager> entityType, Level level) { public Villager(EntityType<? extends Villager> entityType, Level level) {
this(entityType, level, VillagerType.PLAINS); this(entityType, level, VillagerType.PLAINS);
} }
@@ -286,6 +288,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -285,6 +287,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
// Paper end - EAR 2 // Paper end - EAR 2
@@ -319,7 +319,7 @@ index 73214ccad93ccd186c149e8ce8913eb0e3fa324a..9b9514362f32ab79816678ce4be25a4a
@Override @Override
protected void customServerAiStep(ServerLevel level) { protected void customServerAiStep(ServerLevel level) {
// Paper start - EAR 2 // Paper start - EAR 2
@@ -293,7 +296,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -292,7 +295,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
protected void customServerAiStep(ServerLevel level, final boolean inactive) { protected void customServerAiStep(ServerLevel level, final boolean inactive) {
// Paper end - EAR 2 // Paper end - EAR 2

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Minecraft Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: a112b6aca718e4500a6d48ca9d7158faf0f4adf9 Commit: 591baf2648d0f75ffecc52f1d169348af35246dd
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "net/minecraft/CrashReport.java.patch" * "net/minecraft/CrashReport.java.patch"
@@ -278,10 +278,10 @@ index 17f33a309ead525975a3090514a6367260f0af09..f4360d9472ba344f2e7afd6d798d313d
Commands.literal("export") Commands.literal("export")
.then( .then(
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 34524dc5a503bebcec99ada0d9560d6f4df48cdf..1014ab2aeb5e496124c99c938538e88d75561cd5 100644 index 8bab2c26e10e8495fd39be470bcb02917fe56f40..e72eda830644851656fae3118c513d7bd701be45 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
@@ -578,11 +578,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -579,11 +579,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world
private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world
private static int currTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world
@@ -478,7 +478,7 @@ index 9da9ab3b835a8dcc7e1da286be1de88a3f0240fa..4b8c9aaf1d143bc38f52f646e4e73b56
for (ServerPlayer serverPlayer : players) { for (ServerPlayer serverPlayer : players) {
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 ea9db57a1fe2f11739ceb062ea7cce15776f959a..a919d91eeaaeef0f79190cc5e78e4f8b2fb468dd 100644 index adba92a9ebef64561147427d1339f70e2701d93c..cbe614bb66679f9bda3ecb13a034432fbac7317d 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
@@ -69,6 +69,7 @@ public class GiveCommand { @@ -69,6 +69,7 @@ public class GiveCommand {
@@ -487,7 +487,7 @@ index ea9db57a1fe2f11739ceb062ea7cce15776f959a..a919d91eeaaeef0f79190cc5e78e4f8b
boolean flag = serverPlayer.getInventory().add(itemStack1); boolean flag = serverPlayer.getInventory().add(itemStack1);
+ if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping
if (flag && itemStack1.isEmpty()) { if (flag && itemStack1.isEmpty()) {
ItemEntity itemEntity = serverPlayer.drop(itemStack, false); ItemEntity itemEntity = serverPlayer.drop(itemStack, false, false, false, null); // Paper - do not fire PlayerDropItemEvent for /give command
if (itemEntity != null) { if (itemEntity != null) {
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 ca1406178cfb1a5a10947872585e2dcf3059b460..87fc8861948b50361ec04c5a23406d3abdec6eac 100644 index ca1406178cfb1a5a10947872585e2dcf3059b460..87fc8861948b50361ec04c5a23406d3abdec6eac 100644
@@ -925,12 +925,12 @@ index 3f70fca36f67fa421314ff92d372a97112a19025..95c128f028c3cce7d0b37821a6e75208
} }
// 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/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 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de502110cc 100644 index feb4f7c70220e9c48a17a815631298bcb8366ded..e217410145f7889ab4141947fc32d9d576a20326 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
@@ -430,6 +430,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -428,6 +428,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
+ public boolean purpurClient = false; // Purpur - Purpur client support + public boolean purpurClient = false; // Purpur - Purpur client support
+ private boolean tpsBar = false; // Purpur - Implement TPSBar + private boolean tpsBar = false; // Purpur - Implement TPSBar
@@ -939,7 +939,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
// 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;
@@ -627,6 +631,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -561,6 +565,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null);
this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false); this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false);
this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null); this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null);
@@ -950,7 +950,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
} }
@Override @Override
@@ -644,6 +652,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -578,6 +586,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition);
this.saveEnderPearls(output); this.saveEnderPearls(output);
this.getBukkitEntity().setExtraData(output); // CraftBukkit this.getBukkitEntity().setExtraData(output); // CraftBukkit
@@ -960,7 +960,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
} }
private void saveParentVehicle(ValueOutput output) { private void saveParentVehicle(ValueOutput output) {
@@ -849,6 +860,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -783,6 +794,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.trackEnteredOrExitedLavaOnVehicle(); this.trackEnteredOrExitedLavaOnVehicle();
this.updatePlayerAttributes(); this.updatePlayerAttributes();
this.advancements.flushDirty(this, true); this.advancements.flushDirty(this, true);
@@ -976,7 +976,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
} }
private void updatePlayerAttributes() { private void updatePlayerAttributes() {
@@ -1140,6 +1160,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1074,6 +1094,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
// Paper - moved up to sendClientboundPlayerCombatKillPacket() // Paper - moved up to sendClientboundPlayerCombatKillPacket()
sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent
Team team = this.getTeam(); Team team = this.getTeam();
@@ -984,7 +984,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) {
this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); this.server.getPlayerList().broadcastSystemMessage(deathMessage, false);
} else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
@@ -1246,6 +1267,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1180,6 +1201,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
if (this.isInvulnerableTo(level, damageSource)) { if (this.isInvulnerableTo(level, damageSource)) {
return false; return false;
} else { } else {
@@ -1003,7 +1003,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
Entity entity = damageSource.getEntity(); Entity entity = damageSource.getEntity();
if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false.
!(entity instanceof Player player && !this.canHarmPlayer(player)) !(entity instanceof Player player && !this.canHarmPlayer(player))
@@ -1486,6 +1519,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1420,6 +1453,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved(); this.unsetRemoved();
// CraftBukkit end // CraftBukkit end
@@ -1011,7 +1011,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
this.setServerLevel(level); this.setServerLevel(level);
this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event
this.connection.resetPosition(); this.connection.resetPosition();
@@ -1601,7 +1635,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1535,7 +1569,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0),
monster -> monster.isPreventingPlayerRest(this.level(), this) monster -> monster.isPreventingPlayerRest(this.level(), this)
); );
@@ -1020,7 +1020,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
return Either.left(Player.BedSleepingProblem.NOT_SAFE); return Either.left(Player.BedSleepingProblem.NOT_SAFE);
} }
} }
@@ -1638,7 +1672,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1572,7 +1606,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
CriteriaTriggers.SLEPT_IN_BED.trigger(this); CriteriaTriggers.SLEPT_IN_BED.trigger(this);
}); });
if (!this.level().canSleepThroughNights()) { if (!this.level().canSleepThroughNights()) {
@@ -1041,7 +1041,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
} }
this.level().updateSleepingPlayerList(); this.level().updateSleepingPlayerList();
@@ -1730,6 +1776,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1664,6 +1710,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@Override @Override
public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) {
@@ -1049,7 +1049,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos()));
this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText));
} }
@@ -2039,6 +2086,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1973,6 +2020,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.lastSentExp = -1; // CraftBukkit - Added to reset this.lastSentExp = -1; // CraftBukkit - Added to reset
} }
@@ -1076,7 +1076,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
@Override @Override
public void displayClientMessage(Component chatComponent, boolean actionBar) { public void displayClientMessage(Component chatComponent, boolean actionBar) {
this.sendSystemMessage(chatComponent, actionBar); this.sendSystemMessage(chatComponent, actionBar);
@@ -2263,6 +2330,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2197,6 +2264,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
); );
} }
@@ -1097,7 +1097,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
public void sendSystemMessage(Component mesage) { public void sendSystemMessage(Component mesage) {
this.sendSystemMessage(mesage, false); this.sendSystemMessage(mesage, false);
} }
@@ -2401,8 +2482,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2335,8 +2416,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public void resetLastActionTime() { public void resetLastActionTime() {
this.lastActionTime = Util.getMillis(); this.lastActionTime = Util.getMillis();
@@ -1166,7 +1166,7 @@ index 99eaa04bfcd2d37d3e49513e20bb5037119ef84d..c6fafc3cb31d0a3dbbeaf8a9493d70de
public ServerStatsCounter getStats() { public ServerStatsCounter getStats() {
return this.stats; return this.stats;
} }
@@ -3029,4 +3170,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2963,4 +3104,56 @@ 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
@@ -1272,36 +1272,23 @@ index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153
+ // Purpur end - Shift right click to use exp for mending + // Purpur end - Shift right click to use exp for mending
} }
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 ddc89e8960f7dc2f75f0e03ccbe6eda96a0499e2..8a4c8e2fb86274b5bf95bda510029f4c5077d836 100644 index 31091dd52172d447f98497097d8dabdfef720362..eb725c1b6da0c5ef48fa07d79070950f2b45e30e 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
@@ -56,6 +56,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -57,6 +57,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
private static final long KEEPALIVE_LIMIT = KEEPALIVE_LIMIT_IN_SECONDS * 1000;
// Gale end - Purpur - send multiple keep-alive packets // Gale end - Purpur - send multiple keep-alive packets
protected static final net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support protected static final net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support
public @Nullable String playerBrand; // Paper
+ protected static final net.minecraft.resources.ResourceLocation PURPUR_CLIENT = net.minecraft.resources.ResourceLocation.fromNamespaceAndPath("purpur", "client"); // Purpur - Purpur client support + protected static final net.minecraft.resources.ResourceLocation PURPUR_CLIENT = net.minecraft.resources.ResourceLocation.fromNamespaceAndPath("purpur", "client"); // Purpur - Purpur client support
public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie) {
this.server = server; this.server = server;
@@ -215,6 +216,12 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
return;
}
+ // Purpur start - Purpur client support
+ if (identifier.equals(PURPUR_CLIENT)) {
+ this.player.purpurClient = true;
+ }
+ // Purpur end - Purpur client support
+
if (identifier.equals(MINECRAFT_BRAND)) {
this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256);
}
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 a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77ebf11d142 100644 index 38376506f8b886ed66ec48b1a78dede2a7cabe99..e4114d44d089f8434461f2653a787ff0d3595a04 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
@@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl @@ -326,6 +326,20 @@ public class ServerGamePacketListenerImpl
this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event this.playerGameConnection = new io.papermc.paper.connection.PaperPlayerGameConnection(this); // Paper
} }
+ // Purpur start - AFK API + // Purpur start - AFK API
@@ -1321,7 +1308,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
@Override @Override
public void tick() { public void tick() {
if (this.ackBlockChangesUpTo > -1) { if (this.ackBlockChangesUpTo > -1) {
@@ -382,6 +396,12 @@ public class ServerGamePacketListenerImpl @@ -384,6 +398,12 @@ public class ServerGamePacketListenerImpl
if (this.player.getLastActionTime() > 0L if (this.player.getLastActionTime() > 0L
&& this.server.getPlayerIdleTimeout() > 0 && this.server.getPlayerIdleTimeout() > 0
&& Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits
@@ -1334,7 +1321,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
} }
@@ -651,6 +671,8 @@ public class ServerGamePacketListenerImpl @@ -653,6 +673,8 @@ public class ServerGamePacketListenerImpl
this.lastYaw = to.getYaw(); this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch(); this.lastPitch = to.getPitch();
@@ -1343,7 +1330,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
Location oldTo = to.clone(); Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
this.cserver.getPluginManager().callEvent(event); this.cserver.getPluginManager().callEvent(event);
@@ -730,6 +752,7 @@ public class ServerGamePacketListenerImpl @@ -732,6 +754,7 @@ public class ServerGamePacketListenerImpl
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
if (packet.getId() == this.awaitingTeleport) { if (packet.getId() == this.awaitingTeleport) {
if (this.awaitingPositionFromClient == null) { if (this.awaitingPositionFromClient == null) {
@@ -1351,7 +1338,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause
return; return;
} }
@@ -1268,6 +1291,10 @@ public class ServerGamePacketListenerImpl @@ -1270,6 +1293,10 @@ public class ServerGamePacketListenerImpl
final int maxBookPageSize = pageMax.intValue(); final int maxBookPageSize = pageMax.intValue();
final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D);
long byteAllowed = maxBookPageSize; long byteAllowed = maxBookPageSize;
@@ -1362,7 +1349,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
for (final String page : pageList) { for (final String page : pageList) {
final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
byteTotal += byteLength; byteTotal += byteLength;
@@ -1292,7 +1319,8 @@ public class ServerGamePacketListenerImpl @@ -1294,7 +1321,8 @@ public class ServerGamePacketListenerImpl
} }
if (byteTotal > byteAllowed) { if (byteTotal > byteAllowed) {
@@ -1372,7 +1359,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect
return; return;
} }
@@ -1311,31 +1339,45 @@ public class ServerGamePacketListenerImpl @@ -1313,31 +1341,45 @@ public class ServerGamePacketListenerImpl
Optional<String> optional = packet.title(); Optional<String> optional = packet.title();
optional.ifPresent(list::add); optional.ifPresent(list::add);
list.addAll(packet.pages()); list.addAll(packet.pages());
@@ -1422,7 +1409,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
itemStack.set( itemStack.set(
DataComponents.WRITTEN_BOOK_CONTENT, DataComponents.WRITTEN_BOOK_CONTENT,
new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true)
@@ -1349,6 +1391,16 @@ public class ServerGamePacketListenerImpl @@ -1351,6 +1393,16 @@ public class ServerGamePacketListenerImpl
return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText);
} }
@@ -1439,7 +1426,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
@Override @Override
public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
@@ -1388,7 +1440,15 @@ public class ServerGamePacketListenerImpl @@ -1390,7 +1442,15 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleMovePlayer(ServerboundMovePlayerPacket packet) { public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
@@ -1456,7 +1443,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause
} else { } else {
ServerLevel serverLevel = this.player.level(); ServerLevel serverLevel = this.player.level();
@@ -1570,7 +1630,7 @@ public class ServerGamePacketListenerImpl @@ -1572,7 +1632,7 @@ public class ServerGamePacketListenerImpl
movedWrongly = true; movedWrongly = true;
if (event.getLogWarning()) if (event.getLogWarning())
// Paper end // Paper end
@@ -1465,7 +1452,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
} // Paper } // Paper
} }
@@ -1635,6 +1695,8 @@ public class ServerGamePacketListenerImpl @@ -1637,6 +1697,8 @@ public class ServerGamePacketListenerImpl
this.lastYaw = to.getYaw(); this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch(); this.lastPitch = to.getPitch();
@@ -1474,7 +1461,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
Location oldTo = to.clone(); Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
this.cserver.getPluginManager().callEvent(event); this.cserver.getPluginManager().callEvent(event);
@@ -1690,6 +1752,13 @@ public class ServerGamePacketListenerImpl @@ -1692,6 +1754,13 @@ public class ServerGamePacketListenerImpl
this.player.tryResetCurrentImpulseContext(); this.player.tryResetCurrentImpulseContext();
} }
@@ -1488,7 +1475,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z);
this.lastGoodX = this.player.getX(); this.lastGoodX = this.player.getX();
this.lastGoodY = this.player.getY(); this.lastGoodY = this.player.getY();
@@ -1707,6 +1776,17 @@ public class ServerGamePacketListenerImpl @@ -1709,6 +1778,17 @@ public class ServerGamePacketListenerImpl
} }
} }
@@ -1506,7 +1493,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { private boolean shouldCheckPlayerMovement(boolean isElytraMovement) {
if (this.isSingleplayerOwner()) { if (this.isSingleplayerOwner()) {
return false; return false;
@@ -2104,6 +2184,7 @@ public class ServerGamePacketListenerImpl @@ -2106,6 +2186,7 @@ public class ServerGamePacketListenerImpl
boolean cancelled; boolean cancelled;
if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) {
@@ -1514,7 +1501,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand);
cancelled = event.useItemInHand() == Event.Result.DENY; cancelled = event.useItemInHand() == Event.Result.DENY;
} else { } else {
@@ -2755,6 +2836,7 @@ public class ServerGamePacketListenerImpl @@ -2753,6 +2834,7 @@ public class ServerGamePacketListenerImpl
AABB boundingBox = target.getBoundingBox(); AABB boundingBox = target.getBoundingBox();
if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range
@@ -1522,7 +1509,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
packet.dispatch( packet.dispatch(
new ServerboundInteractPacket.Handler() { new ServerboundInteractPacket.Handler() {
private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit
@@ -2767,6 +2849,8 @@ public class ServerGamePacketListenerImpl @@ -2765,6 +2847,8 @@ public class ServerGamePacketListenerImpl
ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event);
@@ -1531,7 +1518,7 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
// Entity in bucket - SPIGOT-4048 and SPIGOT-6859a // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a
if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) {
target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
@@ -3543,7 +3627,7 @@ public class ServerGamePacketListenerImpl @@ -3541,7 +3625,7 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleChangeGameMode(ServerboundChangeGameModePacket packet) { public void handleChangeGameMode(ServerboundChangeGameModePacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
@@ -1540,11 +1527,24 @@ index a07310aebd8406af27864358e15715fcc7694329..acb1eda4a4b10006e1dd641ee41ee77e
LOGGER.warn( LOGGER.warn(
"Player {} tried to change game mode to {} without required permissions", "Player {} tried to change game mode to {} without required permissions",
this.player.getGameProfile().getName(), this.player.getGameProfile().getName(),
@@ -3753,6 +3837,12 @@ public class ServerGamePacketListenerImpl
return;
}
+ // Purpur start - Purpur client support
+ if (identifier.equals(PURPUR_CLIENT)) {
+ this.player.purpurClient = true;
+ }
+ // Purpur end - Purpur client support
+
if (identifier.equals(MINECRAFT_BRAND)) {
this.player.connection.playerBrand = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256);
}
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index dc225eaa0daf238e091a0cf63a42158a30ecb7f0..c61a94a08486cdeba84ccfbc58ef3cabd4a461d8 100644 index f9fad100d3e5e4b44a5b0f88e288e6fac7a250f7..6d320ed179393e47398c44f2ba2b2285016f349e 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -319,7 +319,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -285,7 +285,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!");
ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot
} else { } else {
@@ -1554,7 +1554,7 @@ index dc225eaa0daf238e091a0cf63a42158a30ecb7f0..c61a94a08486cdeba84ccfbc58ef3cab
} }
} catch (AuthenticationUnavailableException var4) { } catch (AuthenticationUnavailableException var4) {
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 0acfb86df4a350e41ea1646a38dad14d43f2cb1d..0f02eef9bcae59bf3df6471b10dbfa8252337140 100644 index 1dad0f73adf361348466b3f0a0eb31143006b0e9..195e972dd9b3b5d29866c28cc88c80bae31916b4 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
@@ -412,6 +412,7 @@ public abstract class PlayerList { @@ -412,6 +412,7 @@ public abstract class PlayerList {
@@ -1573,16 +1573,7 @@ index 0acfb86df4a350e41ea1646a38dad14d43f2cb1d..0f02eef9bcae59bf3df6471b10dbfa82
ServerLevel serverLevel = player.level(); ServerLevel serverLevel = player.level();
player.awardStat(Stats.LEAVE_GAME); player.awardStat(Stats.LEAVE_GAME);
// CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
@@ -684,7 +686,7 @@ public abstract class PlayerList { @@ -964,6 +966,20 @@ public abstract class PlayerList {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)
// ? Component.translatable("multiplayer.disconnect.server_full")
// : null;
- if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)) {
+ if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission
event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure
}
}
@@ -997,6 +999,20 @@ public abstract class PlayerList {
} }
} }
@@ -1603,7 +1594,7 @@ index 0acfb86df4a350e41ea1646a38dad14d43f2cb1d..0f02eef9bcae59bf3df6471b10dbfa82
public void broadcastAll(Packet<?> packet, ResourceKey<Level> dimension) { public void broadcastAll(Packet<?> packet, ResourceKey<Level> dimension) {
for (ServerPlayer serverPlayer : this.players) { for (ServerPlayer serverPlayer : this.players) {
if (serverPlayer.level().dimension() == dimension) { if (serverPlayer.level().dimension() == dimension) {
@@ -1081,6 +1097,7 @@ public abstract class PlayerList { @@ -1048,6 +1064,7 @@ public abstract class PlayerList {
} else { } else {
b = (byte)(24 + permLevel); b = (byte)(24 + permLevel);
} }
@@ -1611,7 +1602,7 @@ index 0acfb86df4a350e41ea1646a38dad14d43f2cb1d..0f02eef9bcae59bf3df6471b10dbfa82
player.connection.send(new ClientboundEntityEventPacket(player, b)); player.connection.send(new ClientboundEntityEventPacket(player, b));
} }
@@ -1089,6 +1106,27 @@ public abstract class PlayerList { @@ -1056,11 +1073,32 @@ public abstract class PlayerList {
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
this.server.getCommands().sendCommands(player); this.server.getCommands().sendCommands(player);
} // Paper - Add sendOpLevel API } // Paper - Add sendOpLevel API
@@ -1638,7 +1629,13 @@ index 0acfb86df4a350e41ea1646a38dad14d43f2cb1d..0f02eef9bcae59bf3df6471b10dbfa82
+ // Purpur end - Barrels and enderchests 6 rows + // Purpur end - Barrels and enderchests 6 rows
} }
public boolean isWhiteListed(GameProfile profile) { // Paper start - whitelist verify event / login event
public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) {
- final boolean shouldKick = this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile);
+ final boolean shouldKick = this.players.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(profile)); // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining
final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent(
com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(profile),
io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message),
diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java
index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec9684437a7db 100644 index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec9684437a7db 100644
--- a/net/minecraft/server/players/SleepStatus.java --- a/net/minecraft/server/players/SleepStatus.java
@@ -4598,10 +4595,10 @@ index 517c546cfc8eca2191df57289e6a22ac64fc867c..8964bb5098c0dc36741af3656af6bc0b
} }
} }
diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java
index 4e74d5b3076f50f9294553b453f5903ef32f1e8a..e04da94daced96a7eb9fdb01c551bea667b72d76 100644 index f07dcf7d45b1b717faeae0c4129fb00a22fb7d57..9763a5e24e0fed9b49b6ac59911f6c9f8e893db5 100644
--- a/net/minecraft/world/entity/animal/HappyGhast.java --- a/net/minecraft/world/entity/animal/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java
@@ -118,6 +118,47 @@ public class HappyGhast extends Animal { @@ -124,6 +124,47 @@ public class HappyGhast extends Animal {
this.removeAllGoals(goal -> true); this.removeAllGoals(goal -> true);
} }
@@ -4649,7 +4646,7 @@ index 4e74d5b3076f50f9294553b453f5903ef32f1e8a..e04da94daced96a7eb9fdb01c551bea6
@Override @Override
protected void ageBoundaryReached() { protected void ageBoundaryReached() {
if (this.isBaby()) { if (this.isBaby()) {
@@ -141,7 +182,7 @@ public class HappyGhast extends Animal { @@ -147,7 +188,7 @@ public class HappyGhast extends Animal {
@Override @Override
protected float sanitizeScale(float scale) { protected float sanitizeScale(float scale) {
@@ -11304,10 +11301,10 @@ index a621e08fe4f88fcfa8da83bc44b23fc2ffaa5918..ab320cf5a8c68fd239e81172a2f3909a
Vec3 deltaMovement = Vex.this.getDeltaMovement(); Vec3 deltaMovement = Vex.this.getDeltaMovement();
Vex.this.setYRot(-((float)Mth.atan2(deltaMovement.x, deltaMovement.z)) * (180.0F / (float)Math.PI)); Vex.this.setYRot(-((float)Mth.atan2(deltaMovement.x, deltaMovement.z)) * (180.0F / (float)Math.PI));
diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java
index e12643c0a1aa9608c34cab96d5c04abc60428322..df95c6be4469eeefa248e5ef18cfaba3d4cdeea6 100644 index 835b522a77fc4e1ec84bd5134e12233a02b66a66..7f70b2387842f65da4632f1a27669a02d4e0402d 100644
--- a/net/minecraft/world/entity/monster/Vindicator.java --- a/net/minecraft/world/entity/monster/Vindicator.java
+++ b/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java
@@ -57,15 +57,56 @@ public class Vindicator extends AbstractIllager { @@ -56,15 +56,56 @@ public class Vindicator extends AbstractIllager {
super(entityType, level); super(entityType, level);
} }
@@ -11364,7 +11361,7 @@ index e12643c0a1aa9608c34cab96d5c04abc60428322..df95c6be4469eeefa248e5ef18cfaba3
this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Raider.class).setAlertOthers()); this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Raider.class).setAlertOthers());
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true));
@@ -132,6 +173,11 @@ public class Vindicator extends AbstractIllager { @@ -131,6 +172,11 @@ public class Vindicator extends AbstractIllager {
RandomSource random = level.getRandom(); RandomSource random = level.getRandom();
this.populateDefaultEquipmentSlots(random, difficulty); this.populateDefaultEquipmentSlots(random, difficulty);
this.populateDefaultEquipmentEnchantments(level, random, difficulty); this.populateDefaultEquipmentEnchantments(level, random, difficulty);
@@ -12348,10 +12345,10 @@ index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db632830
this.spawnCat(pos, level, true); this.spawnCat(pos, level, true);
} }
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2fabcaf19 100644 index f37759161b2a682612c6676cdd0d15908259776c..014bb5b6e82bb11b756430999522f4b8f9356d9f 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -179,6 +179,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -178,6 +178,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
); );
public long nextGolemPanic = -1; // Pufferfish public long nextGolemPanic = -1; // Pufferfish
@@ -12360,7 +12357,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
public Villager(EntityType<? extends Villager> entityType, Level level) { public Villager(EntityType<? extends Villager> entityType, Level level) {
this(entityType, level, VillagerType.PLAINS); this(entityType, level, VillagerType.PLAINS);
@@ -197,6 +199,103 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -196,6 +198,103 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE));
} }
@@ -12464,7 +12461,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
@Override @Override
public Brain<Villager> getBrain() { public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain(); return (Brain<Villager>)super.getBrain();
@@ -230,7 +329,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -229,7 +328,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
villagerBrain.setSchedule(Schedule.VILLAGER_DEFAULT); villagerBrain.setSchedule(Schedule.VILLAGER_DEFAULT);
villagerBrain.addActivityWithConditions( villagerBrain.addActivityWithConditions(
Activity.WORK, Activity.WORK,
@@ -12473,7 +12470,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT)) ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT))
); );
} }
@@ -262,7 +361,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -261,7 +360,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
@@ -12482,7 +12479,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
} }
public boolean assignProfessionWhenSpawned() { public boolean assignProfessionWhenSpawned() {
@@ -294,12 +393,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -293,12 +392,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
// Paper start - EAR 2 // Paper start - EAR 2
this.customServerAiStep(level, false); this.customServerAiStep(level, false);
} }
@@ -12506,7 +12503,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
// Pufferfish end // Pufferfish end
if (this.assignProfessionWhenSpawned) { if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false; this.assignProfessionWhenSpawned = false;
@@ -355,7 +463,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -354,7 +462,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return super.mobInteract(player, hand); return super.mobInteract(player, hand);
} else if (this.isBaby()) { } else if (this.isBaby()) {
this.setUnhappy(); this.setUnhappy();
@@ -12515,7 +12512,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
} else { } else {
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
boolean isEmpty = this.getOffers().isEmpty(); boolean isEmpty = this.getOffers().isEmpty();
@@ -368,9 +476,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -367,9 +475,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
if (isEmpty) { if (isEmpty) {
@@ -12529,7 +12526,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
this.startTrading(player); this.startTrading(player);
} }
@@ -507,7 +618,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -506,7 +617,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
public void updateDemand() { public void updateDemand() {
for (MerchantOffer merchantOffer : this.getOffers()) { for (MerchantOffer merchantOffer : this.getOffers()) {
@@ -12538,7 +12535,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
} }
} }
@@ -700,7 +811,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -699,7 +810,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override @Override
public boolean canBreed() { public boolean canBreed() {
@@ -12547,7 +12544,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
} }
private boolean hungry() { private boolean hungry() {
@@ -867,7 +978,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -866,7 +977,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
public boolean hasFarmSeeds() { public boolean hasFarmSeeds() {
@@ -12556,7 +12553,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
} }
@Override @Override
@@ -922,6 +1033,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -921,6 +1032,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) {
@@ -12564,7 +12561,7 @@ index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2
if (this.wantsToSpawnGolem(gameTime)) { if (this.wantsToSpawnGolem(gameTime)) {
AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0);
List<Villager> entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); List<Villager> entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb);
@@ -995,6 +1107,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -994,6 +1106,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override @Override
public void startSleeping(BlockPos pos) { public void startSleeping(BlockPos pos) {
@@ -14238,7 +14235,7 @@ index 3acc2ae8533f19a6f9b2b6a1d96271f1047384a4..793c0a380b84d246db748be7e8807f1c
return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY);
} }
diff --git a/net/minecraft/world/item/Items.java b/net/minecraft/world/item/Items.java diff --git a/net/minecraft/world/item/Items.java b/net/minecraft/world/item/Items.java
index cb27584b484c5103feb85e139a3dbf95a23a1236..b309312491bf822582d8cc182d609f7b74399ae8 100644 index b89a7fae0321cbce09faf1503ddc57ca5acaa148..4d5a0b1bc794a3029b0724c6dddeffa6f549a7d5 100644
--- a/net/minecraft/world/item/Items.java --- a/net/minecraft/world/item/Items.java
+++ b/net/minecraft/world/item/Items.java +++ b/net/minecraft/world/item/Items.java
@@ -383,7 +383,7 @@ public class Items { @@ -383,7 +383,7 @@ public class Items {
@@ -14250,7 +14247,7 @@ index cb27584b484c5103feb85e139a3dbf95a23a1236..b309312491bf822582d8cc182d609f7b
public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART); public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART);
public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY));
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE);
@@ -2089,7 +2089,7 @@ public class Items { @@ -2092,7 +2092,7 @@ public class Items {
"sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES) "sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES)
); );
public static final Item GLOW_BERRIES = registerItem( public static final Item GLOW_BERRIES = registerItem(

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Fix Pufferfish and Purpur patches
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 db1f0031a6ae6ba1b9ea265043b87817e2c746f8..1aab4d41054f8e780e6c0ccdb96affee19068311 100644 index f05fa801f35f4afcc93fcace6a98cee0fa3ec531..b567eed9e07e281c56ff707ad938661f37f4ee3f 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
@@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -65,10 +65,10 @@ index 35fd539eb2bfe60ad17ab1e558a01273666acc54..445bbdc8da7f1fdbddfc4d8787d78fea
this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory());
this.repaint(); this.repaint();
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 5031e4e9b59a1e013152f788b20c58646b30770f..1aaa94a2800687faa4d86698a4e1ad72bdaf15f3 100644 index e4114d44d089f8434461f2653a787ff0d3595a04..4674760a18926e2e83c481defccf1a06df358b7d 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
@@ -1319,7 +1319,7 @@ public class ServerGamePacketListenerImpl @@ -1321,7 +1321,7 @@ public class ServerGamePacketListenerImpl
} }
if (byteTotal > byteAllowed) { if (byteTotal > byteAllowed) {
@@ -78,7 +78,7 @@ index 5031e4e9b59a1e013152f788b20c58646b30770f..1aaa94a2800687faa4d86698a4e1ad72
this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect
return; return;
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 d8209037e988bc7a68f634a6650930bd1082c4d1..a2a4ad515a4ef0fa24948d0f47c5bd78ec7e6555 100644 index fb387919e51504beafd2e7947faa41795df18100..0cdd3eb97e74aa3955f014a1f8f6a7d1580d323f 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
@@ -543,23 +543,36 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -543,23 +543,36 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -128,7 +128,7 @@ index d8209037e988bc7a68f634a6650930bd1082c4d1..a2a4ad515a4ef0fa24948d0f47c5bd78
public Entity(EntityType<?> entityType, Level level) { public Entity(EntityType<?> entityType, Level level) {
this.type = entityType; this.type = entityType;
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 d7d6e0543dc26694891e4a9049b8162caadbf5e6..d59caf13e9066f2171c360e07a26122a540380a0 100644 index dd5343287503e2818e083696a17362091d94e652..b536461c672c608aeeb690f41ea457fc57768e4f 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
@@ -1049,13 +1049,13 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -1049,13 +1049,13 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Remove vanilla username check
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index c61a94a08486cdeba84ccfbc58ef3cabd4a461d8..37bc11ba3746808307bc6a8c87cea392146c55b1 100644 index 6d320ed179393e47398c44f2ba2b2285016f349e..79534beb5f4a3427078541fda287d9c950999c96 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -184,7 +184,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -163,7 +163,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
public void handleHello(ServerboundHelloPacket packet) { public void handleHello(ServerboundHelloPacket packet) {
Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet"); Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet");
// Paper start - Validate usernames // Paper start - Validate usernames

View File

@@ -7,10 +7,10 @@ This Check is added in 1.17.x -> 1.18.x that updated by Mojang.
By removing this check, it gives ability for hackers to use some modules of hack clients. By removing this check, it gives ability for hackers to use some modules of hack clients.
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 1aaa94a2800687faa4d86698a4e1ad72bdaf15f3..d1245f54d55e4a3c406feef3cc2d5e25bb6346ce 100644 index 4674760a18926e2e83c481defccf1a06df358b7d..6f7094004e2d38d3471c3582b3a10dfc7fce3b32 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
@@ -2108,8 +2108,13 @@ public class ServerGamePacketListenerImpl @@ -2110,8 +2110,13 @@ public class ServerGamePacketListenerImpl
BlockPos blockPos = hitResult.getBlockPos(); BlockPos blockPos = hitResult.getBlockPos();
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));

View File

@@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice
Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
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 6d453bdf4f265c23e7e349d07d766553ef0a4fad..737cba1729e980f58afa5e5aa83908c64c3a1a45 100644 index e217410145f7889ab4141947fc32d9d576a20326..1096bd9f5561f3bedd7939345844b03bbc895938 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
@@ -434,6 +434,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -432,6 +432,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
private boolean tpsBar = false; // Purpur - Implement TPSBar private boolean tpsBar = false; // Purpur - Implement TPSBar
private boolean compassBar = false; // Purpur - Add compass command private boolean compassBar = false; // Purpur - Add compass command
private boolean ramBar = false; // Purpur - Implement rambar commands private boolean ramBar = false; // Purpur - Implement rambar commands
@@ -21,10 +21,10 @@ index 6d453bdf4f265c23e7e349d07d766553ef0a4fad..737cba1729e980f58afa5e5aa83908c6
// 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;
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 7fdcdc311e5a3236df0c7d479d0e206e2fa15dd0..2f00e7899c36a2a34f810fc6083846eb3883131f 100644 index 195e972dd9b3b5d29866c28cc88c80bae31916b4..bdc912f5330896e967cbef4e3e545ff5182e591e 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
@@ -794,11 +794,11 @@ public abstract class PlayerList { @@ -761,11 +761,11 @@ public abstract class PlayerList {
byte b = (byte)(keepInventory ? 1 : 0); byte b = (byte)(keepInventory ? 1 : 0);
ServerLevel serverLevel = serverPlayer.level(); ServerLevel serverLevel = serverPlayer.level();
LevelData levelData = serverLevel.getLevelData(); LevelData levelData = serverLevel.getLevelData();
@@ -38,7 +38,7 @@ index 7fdcdc311e5a3236df0c7d479d0e206e2fa15dd0..2f00e7899c36a2a34f810fc6083846eb
serverPlayer.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle())); serverPlayer.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle()));
serverPlayer.connection.send(new ClientboundChangeDifficultyPacket(levelData.getDifficulty(), levelData.isDifficultyLocked())); serverPlayer.connection.send(new ClientboundChangeDifficultyPacket(levelData.getDifficulty(), levelData.isDifficultyLocked()));
serverPlayer.connection serverPlayer.connection
@@ -886,6 +886,8 @@ public abstract class PlayerList { @@ -853,6 +853,8 @@ public abstract class PlayerList {
return serverPlayer; return serverPlayer;
} }

View File

@@ -69,10 +69,10 @@ index 54bb75a2a128e7747ab01cb0d40c81fb4340ffd1..0fed0f181c4d1f31d01bdaa5dc9417cc
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 diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 799aa6e869a9e471a2aa415904efb7e29be213c6..e2edd7b6c6f4c9bb0e42ea9332b96d7537bc801a 100644 index 1096bd9f5561f3bedd7939345844b03bbc895938..900075e85f2085378389a974e500fc8acd25747e 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
@@ -440,6 +440,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -438,6 +438,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; 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(); private final ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.ViewDistanceHolder viewDistanceHolder = new ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.ViewDistanceHolder();
@@ -81,11 +81,11 @@ index 799aa6e869a9e471a2aa415904efb7e29be213c6..e2edd7b6c6f4c9bb0e42ea9332b96d75
@Override @Override
public final boolean moonrise$isRealPlayer() { public final boolean moonrise$isRealPlayer() {
return this.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/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 8a4c8e2fb86274b5bf95bda510029f4c5077d836..169d039a00339fc8eeb697ba03808f321ed4ad4c 100644 index 6f7094004e2d38d3471c3582b3a10dfc7fce3b32..76ad04e021b840b1595bfe01d07f1d7943937281 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -183,6 +183,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -3809,6 +3809,18 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
@@ -103,8 +103,8 @@ index 8a4c8e2fb86274b5bf95bda510029f4c5077d836..169d039a00339fc8eeb697ba03808f32
+ +
// Paper start // Paper start
if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.BrandPayload(String brand)) { if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.BrandPayload(String brand)) {
this.player.clientBrandName = brand; this.playerBrand = brand;
@@ -242,6 +254,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -3868,6 +3880,7 @@ public class ServerGamePacketListenerImpl
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); this.getCraftPlayer().addChannel(channel);
@@ -113,7 +113,7 @@ index 8a4c8e2fb86274b5bf95bda510029f4c5077d836..169d039a00339fc8eeb697ba03808f32
this.getCraftPlayer().removeChannel(channel); this.getCraftPlayer().removeChannel(channel);
} }
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 fe44069de549acc81a6037426a405d6fddb87897..0ed45220ce029e5ef538b86f89509f2d2156cbb9 100644 index bdc912f5330896e967cbef4e3e545ff5182e591e..e3898b41c2d19940e08b60cdac28ab07161d3c50 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
@@ -346,6 +346,9 @@ public abstract class PlayerList { @@ -346,6 +346,9 @@ public abstract class PlayerList {
@@ -134,15 +134,7 @@ index fe44069de549acc81a6037426a405d6fddb87897..0ed45220ce029e5ef538b86f89509f2d
// Paper end - Fix kick event leave message not being sent // Paper end - Fix kick event leave message not being sent
org.purpurmc.purpur.task.BossBarTask.removeFromAll(player.getBukkitEntity()); // Purpur - Implement TPSBar org.purpurmc.purpur.task.BossBarTask.removeFromAll(player.getBukkitEntity()); // Purpur - Implement TPSBar
ServerLevel serverLevel = player.level(); ServerLevel serverLevel = player.level();
@@ -651,6 +655,7 @@ public abstract class PlayerList { @@ -1507,6 +1511,7 @@ public abstract class PlayerList {
SocketAddress socketAddress = loginlistener.connection.getRemoteAddress();
ServerPlayer entity = new ServerPlayer(this.server, this.server.getLevel(Level.OVERWORLD), gameProfile, net.minecraft.server.level.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());
@@ -1523,6 +1528,7 @@ public abstract class PlayerList {
serverPlayer.connection.send(clientboundUpdateRecipesPacket); serverPlayer.connection.send(clientboundUpdateRecipesPacket);
serverPlayer.getRecipeBook().sendInitialRecipeBook(serverPlayer); serverPlayer.getRecipeBook().sendInitialRecipeBook(serverPlayer);
} }

View File

@@ -9,10 +9,10 @@ Original project: https://github.com/LeavesMC/Leaves
This patch is Powered by Xaero Map This patch is Powered by Xaero Map
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 e547d6c9ee9ad3438cc839389db26a3417cc4ba4..4de0da41eaa71edd0ec7c6829dce424795a63dd8 100644 index e3898b41c2d19940e08b60cdac28ab07161d3c50..22c551e8cfc6ab5822d4e6610033cc2d1aafd6c3 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
@@ -1235,6 +1235,7 @@ public abstract class PlayerList { @@ -1218,6 +1218,7 @@ public abstract class PlayerList {
player.connection.send(new ClientboundInitializeBorderPacket(worldBorder)); player.connection.send(new ClientboundInitializeBorderPacket(worldBorder));
player.connection.send(new ClientboundSetTimePacket(level.getGameTime(), level.getDayTime(), level.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT))); player.connection.send(new ClientboundSetTimePacket(level.getGameTime(), level.getDayTime(), level.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)));
player.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle())); player.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle()));

View File

@@ -9,13 +9,13 @@ Original project: https://github.com/LeavesMC/Leaves
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 d1245f54d55e4a3c406feef3cc2d5e25bb6346ce..8e0e119b41ca1e49d7e3f7874c5fb3c2b434e737 100644 index 76ad04e021b840b1595bfe01d07f1d7943937281..f8572720e4bf7b2b0b64fbe39a5a068d715b6e01 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
@@ -322,8 +322,11 @@ public class ServerGamePacketListenerImpl @@ -324,8 +324,11 @@ public class ServerGamePacketListenerImpl
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.playerGameConnection = new io.papermc.paper.connection.PaperPlayerGameConnection(this); // Paper
+ 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
} }

View File

@@ -92,7 +92,7 @@ index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..bbaf1a29f86a9bfc13795249d545b6f7
if (players.size() >= resultLimit) { if (players.size() >= resultLimit) {
return players; return players;
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 3a1822e0f37c86dfad56ae06c14fffb960ff99ec..32c934a489df7a06892265c6d762e88c3716a5c6 100644 index 0fed0f181c4d1f31d01bdaa5dc9417ccd68b3f03..534082a0441dcde9115652cb67dbc8310529ecee 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
@@ -1642,7 +1642,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1642,7 +1642,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -178,7 +178,7 @@ index 95c128f028c3cce7d0b37821a6e75208323fb4e9..2cf0fa70ae3d7675cac3cf7a0002097b
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 4210089d6ba271ef9d68e18699b1122f07e1946a..8d1571f3db4e7f6c4309b8a46ed0359ecdee85a5 100644 index 900075e85f2085378389a974e500fc8acd25747e..b53b989bd6efd747d1ee93dedfc59cbc758fcda3 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
@@ -216,7 +216,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -216,7 +216,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -191,7 +191,7 @@ index 4210089d6ba271ef9d68e18699b1122f07e1946a..8d1571f3db4e7f6c4309b8a46ed0359e
private final PlayerAdvancements advancements; private final PlayerAdvancements advancements;
private final ServerStatsCounter stats; private final ServerStatsCounter stats;
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 418d6970d46b3b592c17f7721ca3ecfd1edce8ad..70d394d8a257390af20bdea5895f7d8a74b16dec 100644 index 22c551e8cfc6ab5822d4e6610033cc2d1aafd6c3..1920e0ce0c70f4bf10635754819bbdf6a4d275ff 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
@@ -131,6 +131,7 @@ public abstract class PlayerList { @@ -131,6 +131,7 @@ public abstract class PlayerList {
@@ -382,12 +382,12 @@ index 418d6970d46b3b592c17f7721ca3ecfd1edce8ad..70d394d8a257390af20bdea5895f7d8a
this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
this.removeFromSendAllPlayerInfoBuckets(player); // Gale - Purpur - spread out sending all player info this.removeFromSendAllPlayerInfoBuckets(player); // Gale - Purpur - spread out sending all player info
this.server.getCustomBossEvents().onPlayerDisconnect(player); this.server.getCustomBossEvents().onPlayerDisconnect(player);
@@ -691,7 +837,7 @@ public abstract class PlayerList { @@ -1104,7 +1250,7 @@ public abstract class PlayerList {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)
// ? Component.translatable("multiplayer.disconnect.server_full") // Paper start - whitelist verify event / login event
// : null; public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) {
- if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission - final boolean shouldKick = this.players.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(profile)); // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining
+ if (this.realPlayers.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission // Leaves - only real player + final boolean shouldKick = this.realPlayers.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(profile)); // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining // Leaves - only real player
event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent(
} com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(profile),
} io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message),

View File

@@ -7,10 +7,10 @@ Replace `thenApply` with `thenCompose`. Once one task is completed then the next
to prevent blocking threads while waiting to complete all tasks. But may cause the sequence of future compose disorder. to prevent blocking threads while waiting to complete all tasks. But may cause the sequence of future compose disorder.
diff --git a/net/minecraft/Util.java b/net/minecraft/Util.java diff --git a/net/minecraft/Util.java b/net/minecraft/Util.java
index 0a69469c79aaa2466cda04f6acefed18e421d555..82ee6c27ebc2718ad88b640775d949ec6d7cfed2 100644 index 138a58c5e5698b926b01e0170733dc3dbc5589ec..64372e0fd4eb7018fc36d0feb667c296ea48f927 100644
--- a/net/minecraft/Util.java --- a/net/minecraft/Util.java
+++ b/net/minecraft/Util.java +++ b/net/minecraft/Util.java
@@ -620,17 +620,39 @@ public class Util { @@ -625,17 +625,39 @@ public class Util {
return Maps.transformValues(map, mapper); return Maps.transformValues(map, mapper);
} }

View File

@@ -10,10 +10,10 @@ Add Pufferfish DAB support for Camel, Sniffer
https://github.com/pufferfish-gg/Pufferfish/issues/83 https://github.com/pufferfish-gg/Pufferfish/issues/83
diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java
index e04da94daced96a7eb9fdb01c551bea667b72d76..e53773e086a589ee5fd83fde0bee1881ff43e926 100644 index 9763a5e24e0fed9b49b6ac59911f6c9f8e893db5..b7306bcc60c2986b7f9b054d217a2b8cd76b118e 100644
--- a/net/minecraft/world/entity/animal/HappyGhast.java --- a/net/minecraft/world/entity/animal/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java
@@ -415,9 +415,11 @@ public class HappyGhast extends Animal { @@ -421,9 +421,11 @@ public class HappyGhast extends Animal {
return HappyGhastAi.makeBrain(this.brainProvider().makeBrain(dynamic)); return HappyGhastAi.makeBrain(this.brainProvider().makeBrain(dynamic));
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Remove useless creating stats json bases on player name logic
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 70d394d8a257390af20bdea5895f7d8a74b16dec..f0c66fce913af9433d53572a3dd3fc31d512346b 100644 index 1920e0ce0c70f4bf10635754819bbdf6a4d275ff..430c5f02cb0f52a7a655a1b8bd23db8bf93fb43d 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
@@ -1574,6 +1574,8 @@ public abstract class PlayerList { @@ -1557,6 +1557,8 @@ public abstract class PlayerList {
if (serverStatsCounter == null) { if (serverStatsCounter == null) {
File file = this.server.getWorldPath(LevelResource.PLAYER_STATS_DIR).toFile(); File file = this.server.getWorldPath(LevelResource.PLAYER_STATS_DIR).toFile();
File file1 = new File(file, uuid + ".json"); File file1 = new File(file, uuid + ".json");
@@ -17,7 +17,7 @@ index 70d394d8a257390af20bdea5895f7d8a74b16dec..f0c66fce913af9433d53572a3dd3fc31
if (!file1.exists()) { if (!file1.exists()) {
File file2 = new File(file, displayName + ".json"); // CraftBukkit File file2 = new File(file, displayName + ".json"); // CraftBukkit
Path path = file2.toPath(); Path path = file2.toPath();
@@ -1581,6 +1583,8 @@ public abstract class PlayerList { @@ -1564,6 +1566,8 @@ public abstract class PlayerList {
file2.renameTo(file1); file2.renameTo(file1);
} }
} }

View File

@@ -19,10 +19,10 @@ index 1dc009e85403fe0b6a68daefecfe5cb25ad263cd..de450f9ef03944b101b483126af6a778
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo command org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo command
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur - Add ping command org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur - Add ping command
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 8dabe3ca6f5c5b0cd5f5a3801e1cbd853520738e..b71b4db16ac8b42c0061f15db05d4315dd7fecb4 100644 index b53b989bd6efd747d1ee93dedfc59cbc758fcda3..0df36e136fb0ce928a207f8f58dfe10839be8507 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
@@ -2490,6 +2490,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2424,6 +2424,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
// Purpur start - AFK API // Purpur start - AFK API
private boolean isAfk = false; private boolean isAfk = false;
@@ -33,7 +33,7 @@ index 8dabe3ca6f5c5b0cd5f5a3801e1cbd853520738e..b71b4db16ac8b42c0061f15db05d4315
@Override @Override
public void setAfk(boolean afk) { public void setAfk(boolean afk) {
@@ -2527,6 +2531,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2461,6 +2465,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, ""); String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, "");
String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, ""); String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, "");
if (afk) { if (afk) {
@@ -53,10 +53,10 @@ index 8dabe3ca6f5c5b0cd5f5a3801e1cbd853520738e..b71b4db16ac8b42c0061f15db05d4315
} else { } else {
getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true);
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 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac4ad0745d 100644 index f8572720e4bf7b2b0b64fbe39a5a068d715b6e01..c038ceb441897157a0c240a9970e676a297e40c3 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
@@ -2361,6 +2361,7 @@ public class ServerGamePacketListenerImpl @@ -2359,6 +2359,7 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleChatCommand(ServerboundChatCommandPacket packet) { public void handleChatCommand(ServerboundChatCommandPacket packet) {
@@ -64,7 +64,7 @@ index 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac
this.tryHandleChat(packet.command(), () -> { this.tryHandleChat(packet.command(), () -> {
// CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands
if (this.player.hasDisconnected()) { if (this.player.hasDisconnected()) {
@@ -2369,7 +2370,7 @@ public class ServerGamePacketListenerImpl @@ -2367,7 +2368,7 @@ public class ServerGamePacketListenerImpl
// CraftBukkit end // CraftBukkit end
this.performUnsignedChatCommand(packet.command()); this.performUnsignedChatCommand(packet.command());
this.detectRateSpam("/" + packet.command()); // Spigot this.detectRateSpam("/" + packet.command()); // Spigot
@@ -73,7 +73,7 @@ index 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac
} }
private void performUnsignedChatCommand(String command) { private void performUnsignedChatCommand(String command) {
@@ -2402,6 +2403,7 @@ public class ServerGamePacketListenerImpl @@ -2400,6 +2401,7 @@ public class ServerGamePacketListenerImpl
public void handleSignedChatCommand(ServerboundChatCommandSignedPacket packet) { public void handleSignedChatCommand(ServerboundChatCommandSignedPacket packet) {
Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(packet.lastSeenMessages()); Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(packet.lastSeenMessages());
if (!optional.isEmpty()) { if (!optional.isEmpty()) {
@@ -81,7 +81,7 @@ index 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac
this.tryHandleChat(packet.command(), () -> { this.tryHandleChat(packet.command(), () -> {
// CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands
if (this.player.hasDisconnected()) { if (this.player.hasDisconnected()) {
@@ -2410,7 +2412,7 @@ public class ServerGamePacketListenerImpl @@ -2408,7 +2410,7 @@ public class ServerGamePacketListenerImpl
// CraftBukkit end // CraftBukkit end
this.performSignedChatCommand(packet, optional.get()); this.performSignedChatCommand(packet, optional.get());
this.detectRateSpam("/" + packet.command()); // Spigot this.detectRateSpam("/" + packet.command()); // Spigot
@@ -90,7 +90,7 @@ index 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac
} }
} }
@@ -2517,12 +2519,17 @@ public class ServerGamePacketListenerImpl @@ -2515,12 +2517,17 @@ public class ServerGamePacketListenerImpl
return dispatcher.parse(command, this.player.createCommandSourceStack()); return dispatcher.parse(command, this.player.createCommandSourceStack());
} }
@@ -110,7 +110,7 @@ index 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac
this.player.resetLastActionTime(); this.player.resetLastActionTime();
// CraftBukkit start // CraftBukkit start
if (sync) { if (sync) {
@@ -2534,6 +2541,40 @@ public class ServerGamePacketListenerImpl @@ -2532,6 +2539,40 @@ public class ServerGamePacketListenerImpl
} }
} }
@@ -152,7 +152,7 @@ index 2eecf924618192e1b8cf3971ac6cc3c95ec7f235..1306f920b5908731d04004e1b180c3ac
synchronized (this.lastSeenMessages) { synchronized (this.lastSeenMessages) {
Optional var10000; Optional var10000;
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 f0c66fce913af9433d53572a3dd3fc31d512346b..84914c3245de053ba07b105e44f9d838fa3efc4c 100644 index 430c5f02cb0f52a7a655a1b8bd23db8bf93fb43d..56876236505d17663900857e4b6777f1778538a6 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
@@ -676,6 +676,7 @@ public abstract class PlayerList { @@ -676,6 +676,7 @@ public abstract class PlayerList {

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Virtual thread for user authenticator
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 37bc11ba3746808307bc6a8c87cea392146c55b1..9dce1d22c7de3a3dd0e0e8f117cfbb54d1b15042 100644 index 79534beb5f4a3427078541fda287d9c950999c96..f68923c5f6fbecd8f1c10a30dbd06ed0dfee8b84 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -54,7 +54,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -53,7 +53,7 @@ import org.bukkit.event.player.PlayerPreLoginEvent;
// CraftBukkit end public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, TickablePacketListener {
private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0); private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0);
static final Logger LOGGER = LogUtils.getLogger(); static final Logger LOGGER = LogUtils.getLogger();
- private static final java.util.concurrent.ExecutorService authenticatorPool = java.util.concurrent.Executors.newCachedThreadPool(new com.google.common.util.concurrent.ThreadFactoryBuilder().setNameFormat("User Authenticator #%d").setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LOGGER)).build()); // Paper - Cache authenticator threads - private static final java.util.concurrent.ExecutorService authenticatorPool = java.util.concurrent.Executors.newCachedThreadPool(new com.google.common.util.concurrent.ThreadFactoryBuilder().setNameFormat("User Authenticator #%d").setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LOGGER)).build()); // Paper - Cache authenticator threads

View File

@@ -103,10 +103,10 @@ index 87fc8861948b50361ec04c5a23406d3abdec6eac..77f11179836636424927843f5f10c3fd
// Paper start - Add setting for proxy online mode status // Paper start - Add setting for proxy online mode status
return properties.enforceSecureProfile return properties.enforceSecureProfile
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 169d039a00339fc8eeb697ba03808f321ed4ad4c..23fefdc7122ff8e195c27651dc3a83000f62a95e 100644 index eb725c1b6da0c5ef48fa07d79070950f2b45e30e..5f7bd65caf9ea8707674e243e9fedf84adde5913 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
@@ -371,10 +371,30 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -255,10 +255,30 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
} }
public void send(Packet<?> packet) { public void send(Packet<?> packet) {
@@ -138,10 +138,10 @@ index 169d039a00339fc8eeb697ba03808f321ed4ad4c..23fefdc7122ff8e195c27651dc3a8300
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 84914c3245de053ba07b105e44f9d838fa3efc4c..e4543611016a648314459144e43565300153f0fe 100644 index 56876236505d17663900857e4b6777f1778538a6..f439712ec2cc021360583b2ae70f837e2a9417ac 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
@@ -1534,7 +1534,7 @@ public abstract class PlayerList { @@ -1517,7 +1517,7 @@ public abstract class PlayerList {
public void broadcastChatMessage(PlayerChatMessage message, Predicate<ServerPlayer> shouldFilterMessageTo, @Nullable ServerPlayer sender, ChatType.Bound boundChatType, @Nullable Function<net.kyori.adventure.audience.Audience, Component> unsignedFunction) { public void broadcastChatMessage(PlayerChatMessage message, Predicate<ServerPlayer> shouldFilterMessageTo, @Nullable ServerPlayer sender, ChatType.Bound boundChatType, @Nullable Function<net.kyori.adventure.audience.Audience, Component> unsignedFunction) {
// Paper end // Paper end
boolean flag = this.verifyChatTrusted(message); boolean flag = this.verifyChatTrusted(message);
@@ -150,7 +150,7 @@ index 84914c3245de053ba07b105e44f9d838fa3efc4c..e4543611016a648314459144e4356530
OutgoingChatMessage outgoingChatMessage = OutgoingChatMessage.create(message); OutgoingChatMessage outgoingChatMessage = OutgoingChatMessage.create(message);
boolean flag1 = false; boolean flag1 = false;
@@ -1559,6 +1559,7 @@ public abstract class PlayerList { @@ -1542,6 +1542,7 @@ public abstract class PlayerList {
} }
public boolean verifyChatTrusted(PlayerChatMessage message) { public boolean verifyChatTrusted(PlayerChatMessage message) {

View File

@@ -22,13 +22,13 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 9dce1d22c7de3a3dd0e0e8f117cfbb54d1b15042..6b0b0ccc18a5da05685867656705e1fcf94b5891 100644 index f68923c5f6fbecd8f1c10a30dbd06ed0dfee8b84..2e014cd543a6a790a0023835199b0e956e49fd1f 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -70,6 +70,14 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -71,6 +71,14 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
private net.minecraft.server.level.ServerPlayer player; // CraftBukkit public @Nullable java.util.UUID requestedUuid; // Paper
public boolean iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation = false; // Paper - username validation overriding private final io.papermc.paper.connection.PaperPlayerLoginConnection paperLoginConnection; // Paper - Config API
private int velocityLoginMessageId = -1; // Paper - Add Velocity IP Forwarding Support private volatile boolean disconnecting = false; // Paper - Fix disconnect still ticking login
+ // Leaf start - Cache player profileResult + // Leaf start - Cache player profileResult
+ private static final com.github.benmanes.caffeine.cache.Cache<String, ProfileResult> playerProfileResultCache = com.github.benmanes.caffeine.cache.Caffeine.newBuilder() + private static final com.github.benmanes.caffeine.cache.Cache<String, ProfileResult> playerProfileResultCache = com.github.benmanes.caffeine.cache.Caffeine.newBuilder()
+ .expireAfterWrite(org.dreeam.leaf.config.modules.misc.Cache.cachePlayerProfileResultTimeout, java.util.concurrent.TimeUnit.MINUTES) + .expireAfterWrite(org.dreeam.leaf.config.modules.misc.Cache.cachePlayerProfileResultTimeout, java.util.concurrent.TimeUnit.MINUTES)
@@ -40,7 +40,7 @@ index 9dce1d22c7de3a3dd0e0e8f117cfbb54d1b15042..6b0b0ccc18a5da05685867656705e1fc
public ServerLoginPacketListenerImpl(MinecraftServer server, Connection connection, boolean transferred) { public ServerLoginPacketListenerImpl(MinecraftServer server, Connection connection, boolean transferred) {
this.server = server; this.server = server;
@@ -303,9 +311,30 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -269,9 +277,30 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
String string1 = Objects.requireNonNull(ServerLoginPacketListenerImpl.this.requestedUsername, "Player name not initialized"); String string1 = Objects.requireNonNull(ServerLoginPacketListenerImpl.this.requestedUsername, "Player name not initialized");
try { try {
@@ -74,7 +74,7 @@ index 9dce1d22c7de3a3dd0e0e8f117cfbb54d1b15042..6b0b0ccc18a5da05685867656705e1fc
if (profileResult != null) { if (profileResult != null) {
GameProfile gameProfile = profileResult.profile(); GameProfile gameProfile = profileResult.profile();
// CraftBukkit start - fire PlayerPreLoginEvent // CraftBukkit start - fire PlayerPreLoginEvent
@@ -350,6 +379,20 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -316,6 +345,20 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
// Paper end - Cache authenticator threads // Paper end - Cache authenticator threads
} }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable connection message
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 e4543611016a648314459144e43565300153f0fe..70bec2fc50c1e6a928e450e617e76dd4434172f9 100644 index f439712ec2cc021360583b2ae70f837e2a9417ac..511bddf252e1ae34a07171f1baf069d97efaa758 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
@@ -439,7 +439,7 @@ public abstract class PlayerList { @@ -439,7 +439,7 @@ public abstract class PlayerList {
@@ -35,7 +35,7 @@ index e4543611016a648314459144e43565300153f0fe..70bec2fc50c1e6a928e450e617e76dd4
this.cserver.getPluginManager().callEvent(playerQuitEvent); this.cserver.getPluginManager().callEvent(playerQuitEvent);
player.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage()); player.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
@@ -1687,4 +1687,40 @@ public abstract class PlayerList { @@ -1670,4 +1670,40 @@ public abstract class PlayerList {
public boolean isAllowCommandsForAllPlayers() { public boolean isAllowCommandsForAllPlayers() {
return this.allowCommandsForAllPlayers; return this.allowCommandsForAllPlayers;
} }

View File

@@ -23,10 +23,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
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 1306f920b5908731d04004e1b180c3ac4ad0745d..faa135c3eb1bfc8f52c90e6f88411fdf48ed9ee1 100644 index c038ceb441897157a0c240a9970e676a297e40c3..3173922dbb478e46f892304fb17b0f662fe62b40 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
@@ -328,17 +328,12 @@ public class ServerGamePacketListenerImpl @@ -330,17 +330,12 @@ public class ServerGamePacketListenerImpl
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
// Purpur start - AFK API // Purpur start - AFK API
@@ -48,7 +48,7 @@ index 1306f920b5908731d04004e1b180c3ac4ad0745d..faa135c3eb1bfc8f52c90e6f88411fdf
// Purpur end - AFK API // Purpur end - AFK API
@Override @Override
@@ -401,7 +396,7 @@ public class ServerGamePacketListenerImpl @@ -403,7 +398,7 @@ public class ServerGamePacketListenerImpl
&& Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits
// Purpur start - AFK API // Purpur start - AFK API
this.player.setAfk(true); this.player.setAfk(true);

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Do not place player if the server is full
Fix https://github.com/PaperMC/Paper/issues/10668 Fix https://github.com/PaperMC/Paper/issues/10668
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 70bec2fc50c1e6a928e450e617e76dd4434172f9..3cd9b0df617715d0b3e70a6096e52bb5d22ab426 100644 index 511bddf252e1ae34a07171f1baf069d97efaa758..ef283ec7934d143eeab482d99bf6fa8f327d2fe9 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
@@ -343,6 +343,13 @@ public abstract class PlayerList { @@ -343,6 +343,13 @@ public abstract class PlayerList {
@@ -14,7 +14,7 @@ index 70bec2fc50c1e6a928e450e617e76dd4434172f9..3cd9b0df617715d0b3e70a6096e52bb5
} }
// Gale end - MultiPaper - do not place player in world if kicked before being spawned in // Gale end - MultiPaper - do not place player in world if kicked before being spawned in
+ // Leaf start - Do not place player if the server is full - copied from canPlayerLogin + // Leaf start - Do not place player if the server is full - copied from canPlayerLogin
+ if (org.dreeam.leaf.config.modules.fixes.DontPlacePlayerIfFull.enabled && this.realPlayers.size() >= this.maxPlayers && !(player.getBukkitEntity().hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission // Leaves - only real player + if (org.dreeam.leaf.config.modules.fixes.DontPlacePlayerIfFull.enabled && this.realPlayers.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining // Leaves - only real player // Leaf - Do not place player if the server is full
+ connection.disconnect(io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage))); + connection.disconnect(io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)));
+ //playerconnection.disconnect(io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)), org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); + //playerconnection.disconnect(io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)), org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT);
+ return; + return;
@@ -23,12 +23,12 @@ index 70bec2fc50c1e6a928e450e617e76dd4434172f9..3cd9b0df617715d0b3e70a6096e52bb5
org.bukkit.Location loc = ev.getSpawnLocation(); org.bukkit.Location loc = ev.getSpawnLocation();
serverLevel = ((org.bukkit.craftbukkit.CraftWorld) loc.getWorld()).getHandle(); serverLevel = ((org.bukkit.craftbukkit.CraftWorld) loc.getWorld()).getHandle();
@@ -838,7 +845,7 @@ public abstract class PlayerList { @@ -1251,7 +1258,7 @@ public abstract class PlayerList {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)
// ? Component.translatable("multiplayer.disconnect.server_full") // Paper start - whitelist verify event / login event
// : null; public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) {
- if (this.realPlayers.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission // Leaves - only real player - final boolean shouldKick = this.realPlayers.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(profile)); // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining // Leaves - only real player
+ if (this.realPlayers.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission // Leaves - only real player // Leaf - Do not place player if the server is full - diff on change + final boolean shouldKick = this.realPlayers.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(profile)); // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining // Leaves - only real player // Leaf - Do not place player if the server is full - diff on change
event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent(
} com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(profile),
} io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message),

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-119417
Related MC issue: https://bugs.mojang.com/browse/MC/issues/MC-119417 Related MC issue: https://bugs.mojang.com/browse/MC/issues/MC-119417
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 b71b4db16ac8b42c0061f15db05d4315dd7fecb4..fdce25cdfdd91938a97dc381e4ada1744e64c931 100644 index 0df36e136fb0ce928a207f8f58dfe10839be8507..54acc0d45edbbbb2423b5fa477e3d895aeb3149d 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
@@ -2294,6 +2294,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2228,6 +2228,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, gameMode.getId())); this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, gameMode.getId()));
if (gameMode == GameType.SPECTATOR) { if (gameMode == GameType.SPECTATOR) {
this.removeEntitiesOnShoulder(); this.removeEntitiesOnShoulder();

View File

@@ -24,10 +24,10 @@ index a6be753d1284167e090c40e6dcfbaa56b4e3d774..867353500482247bbec79f407246902c
if (this.goalSelector.inactiveTick(this.activatedPriority, true) && !isThrottled) { // Pufferfish - pass activated priroity // Pufferfish - throttle inactive goal selector ticking if (this.goalSelector.inactiveTick(this.activatedPriority, true) && !isThrottled) { // Pufferfish - pass activated priroity // Pufferfish - throttle inactive goal selector ticking
this.goalSelector.tick(); this.goalSelector.tick();
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 165d0f50e7818b6daf834507033feaa2fabcaf19..5106013430c17d4a55f666163d0cb1e4c0497302 100644 index 014bb5b6e82bb11b756430999522f4b8f9356d9f..174c37fca6b2b03a6eb36d8c7c17b6e8ec49f1cd 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -375,7 +375,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -374,7 +374,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
if (this.getUnhappyCounter() > 0) { if (this.getUnhappyCounter() > 0) {
this.setUnhappyCounter(this.getUnhappyCounter() - 1); this.setUnhappyCounter(this.getUnhappyCounter() - 1);
} }

View File

@@ -400,10 +400,10 @@ index 08d12a1acc3a672a77daa15f82392cd603c30283..c5949a0e852ca6de84e8dd12e3d4ed85
} }
} }
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 faa135c3eb1bfc8f52c90e6f88411fdf48ed9ee1..0dec7852a4f225b9e9e94debf9259faea625028f 100644 index 3173922dbb478e46f892304fb17b0f662fe62b40..baa703a89583f72fab0ebbc40c85399022185c29 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
@@ -1914,7 +1914,7 @@ public class ServerGamePacketListenerImpl @@ -1916,7 +1916,7 @@ public class ServerGamePacketListenerImpl
} }
public void internalTeleport(PositionMoveRotation posMoveRotation, Set<Relative> relatives) { public void internalTeleport(PositionMoveRotation posMoveRotation, Set<Relative> relatives) {
@@ -413,7 +413,7 @@ index faa135c3eb1bfc8f52c90e6f88411fdf48ed9ee1..0dec7852a4f225b9e9e94debf9259fae
if (this.player.isRemoved()) { if (this.player.isRemoved()) {
LOGGER.info("Attempt to teleport removed player {} restricted", player.getScoreboardName()); LOGGER.info("Attempt to teleport removed player {} restricted", player.getScoreboardName());
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 6c9ce4a979c084c9024a954d8315424cb7be27c7..19881624b91f44c9332ad4ba147a66837864da06 100644 index d81d1303fc3d23b35dbc177dd6a4c7f489eb5381..78c212fb8a8a8ffefe6fc860f1e06d16ba09bb40 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
@@ -1342,13 +1342,13 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -1342,13 +1342,13 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin

View File

@@ -41,10 +41,10 @@ index 72cca4897f9697573fd6987a5f0d2df52761b8c3..04eea77cf84aaeb781608e48f2aa32f3
private static void throwHalfStack(Villager villager, Set<Item> stack, LivingEntity entity) { private static void throwHalfStack(Villager villager, Set<Item> stack, LivingEntity entity) {
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 5106013430c17d4a55f666163d0cb1e4c0497302..377e98469328f08db751c0f6a6f434b03f63c225 100644 index 174c37fca6b2b03a6eb36d8c7c17b6e8ec49f1cd..a3040736384e54f26794db2bc938d63734f9614d 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -974,7 +974,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -973,7 +973,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
private int countFoodPointsInInventory() { private int countFoodPointsInInventory() {
SimpleContainer inventory = this.getInventory(); SimpleContainer inventory = this.getInventory();

View File

@@ -38,10 +38,10 @@ index 0f311e603c8df175576a33d5d20369cbcda2be55..3a31f9132a7271ea476cc85c5a10ea7f
.forEach( .forEach(
entity -> { entity -> {
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 fdce25cdfdd91938a97dc381e4ada1744e64c931..4c1786201a4044db61e99c148fca4714e2b172ad 100644 index 54acc0d45edbbbb2423b5fa477e3d895aeb3149d..df8732fc451d8aafa46a7980c5e51b6347f0f1ad 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
@@ -1613,6 +1613,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1547,6 +1547,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.containerMenu.broadcastChanges(); this.containerMenu.broadcastChanges();
} }

View File

@@ -651,27 +651,19 @@ index 3a31f9132a7271ea476cc85c5a10ea7f327256bf..58ec5cfb21d4834c3aaa74f76ca8a536
// Paper start - extra debug info // Paper start - extra debug info
if (entity.valid) { if (entity.valid) {
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 4c1786201a4044db61e99c148fca4714e2b172ad..163ac7b4b6fefb0c4594548dfffc0ea6f24f0765 100644 index df8732fc451d8aafa46a7980c5e51b6347f0f1ad..f9664926de5706eda918b457301174734b0b0300 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
@@ -467,6 +467,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -466,6 +466,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return this.viewDistanceHolder;
} }
// Paper end - rewrite chunk system // Paper end - rewrite chunk system
+
// Paper start - improve keepalives
public long lastKeepAliveTx = System.nanoTime();
public static final record KeepAliveResponse(long txTimeNS, long rxTimeNS) {
@@ -532,6 +533,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
// Paper end - improve keepalives
+ public boolean hasTickedAtLeastOnceInNewWorld = false; // SparklyPaper - parallel world ticking (fixes bug in DreamResourceReset where the inventory is opened AFTER the player has changed worlds, if you click with the quick tp torch in a chest, because the inventory is opened AFTER the player has teleported) + public boolean hasTickedAtLeastOnceInNewWorld = false; // SparklyPaper - parallel world ticking (fixes bug in DreamResourceReset where the inventory is opened AFTER the player has changed worlds, if you click with the quick tp torch in a chest, because the inventory is opened AFTER the player has teleported)
+ +
public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) {
super(level, gameProfile); super(level, gameProfile);
this.textFilter = server.createTextFilterForPlayer(this); this.textFilter = server.createTextFilterForPlayer(this);
@@ -818,6 +821,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -752,6 +754,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@Override @Override
public void tick() { public void tick() {
@@ -679,7 +671,7 @@ index 4c1786201a4044db61e99c148fca4714e2b172ad..163ac7b4b6fefb0c4594548dfffc0ea6
// CraftBukkit start // CraftBukkit start
if (this.joining) { if (this.joining) {
this.joining = false; this.joining = false;
@@ -1494,6 +1498,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1428,6 +1431,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
teleportTransition.postTeleportTransition().onTransition(this); teleportTransition.postTeleportTransition().onTransition(this);
return this; return this;
} else { } else {
@@ -688,7 +680,7 @@ index 4c1786201a4044db61e99c148fca4714e2b172ad..163ac7b4b6fefb0c4594548dfffc0ea6
// CraftBukkit start // CraftBukkit start
/* /*
this.isChangingDimension = true; this.isChangingDimension = true;
@@ -1847,6 +1853,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1781,6 +1786,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return OptionalInt.empty(); return OptionalInt.empty();
} else { } else {
// CraftBukkit start // CraftBukkit start
@@ -701,7 +693,7 @@ index 4c1786201a4044db61e99c148fca4714e2b172ad..163ac7b4b6fefb0c4594548dfffc0ea6
this.containerMenu = abstractContainerMenu; // Moved up this.containerMenu = abstractContainerMenu; // Moved up
if (!this.isImmobile()) if (!this.isImmobile())
this.connection this.connection
@@ -1911,6 +1923,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1845,6 +1856,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
} }
@Override @Override
public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
@@ -714,7 +706,7 @@ index 4c1786201a4044db61e99c148fca4714e2b172ad..163ac7b4b6fefb0c4594548dfffc0ea6
// Paper end - Inventory close reason // Paper end - Inventory close reason
this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId)); this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId));
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 3cd9b0df617715d0b3e70a6096e52bb5d22ab426..f1002643589f67adce26667b1750a1296c1fb67d 100644 index ef283ec7934d143eeab482d99bf6fa8f327d2fe9..1b3a21ef16426234e782b1a297cd2e5c2505c666 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
@@ -251,6 +251,8 @@ public abstract class PlayerList { @@ -251,6 +251,8 @@ public abstract class PlayerList {
@@ -726,7 +718,7 @@ index 3cd9b0df617715d0b3e70a6096e52bb5d22ab426..f1002643589f67adce26667b1750a129
player.isRealPlayer = true; // Paper player.isRealPlayer = true; // Paper
player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed
GameProfile gameProfile = player.getGameProfile(); GameProfile gameProfile = player.getGameProfile();
@@ -888,6 +890,15 @@ public abstract class PlayerList { @@ -854,6 +856,15 @@ public abstract class PlayerList {
} }
public ServerPlayer respawn(ServerPlayer player, boolean keepInventory, Entity.RemovalReason reason, @Nullable org.bukkit.event.player.PlayerRespawnEvent.RespawnReason eventReason, @Nullable org.bukkit.Location location) { public ServerPlayer respawn(ServerPlayer player, boolean keepInventory, Entity.RemovalReason reason, @Nullable org.bukkit.event.player.PlayerRespawnEvent.RespawnReason eventReason, @Nullable org.bukkit.Location location) {
@@ -742,7 +734,7 @@ index 3cd9b0df617715d0b3e70a6096e52bb5d22ab426..f1002643589f67adce26667b1750a129
player.stopRiding(); // CraftBukkit player.stopRiding(); // CraftBukkit
this.players.remove(player); this.players.remove(player);
this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
@@ -899,6 +910,7 @@ public abstract class PlayerList { @@ -865,6 +876,7 @@ public abstract class PlayerList {
ServerPlayer serverPlayer = player; ServerPlayer serverPlayer = player;
Level fromWorld = player.level(); Level fromWorld = player.level();
player.wonGame = false; player.wonGame = false;
@@ -1018,10 +1010,10 @@ index 3614551856c594f3c0cfee984fcf03fad672b007..f4577f908ca9f279b72d89e5b0822d34
}); });
entity.getBrain().eraseMemory(MemoryModuleType.POTENTIAL_JOB_SITE); entity.getBrain().eraseMemory(MemoryModuleType.POTENTIAL_JOB_SITE);
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 377e98469328f08db751c0f6a6f434b03f63c225..743c0c956ddd9e35d3c9c7b45fa8d36490d648dd 100644 index a3040736384e54f26794db2bc938d63734f9614d..f456a44deac3645c44366ca1704ae25419baf52c 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -797,13 +797,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -796,13 +796,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.brain.getMemory(moduleType).ifPresent(pos -> { this.brain.getMemory(moduleType).ifPresent(pos -> {
ServerLevel level = server.getLevel(pos.dimension()); ServerLevel level = server.getLevel(pos.dimension());
if (level != null) { if (level != null) {

View File

@@ -26,18 +26,18 @@ Locally this patch drops the entity tracker tick by a full 1.5x.
Co-authored-by: Quang Tran <3d7777456@gmail.com> Co-authored-by: Quang Tran <3d7777456@gmail.com>
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 1014ab2aeb5e496124c99c938538e88d75561cd5..2fda4bf1aeecba183ba6301f83f582ae34f5a3da 100644 index e72eda830644851656fae3118c513d7bd701be45..01fb1bf0eba70b740b12731c79feadefc8fe96f0 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
@@ -147,6 +147,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -148,6 +148,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@Nullable public SocketAddress haProxyAddress; // Paper - Add API to get player's proxy address public @Nullable net.minecraft.server.level.ServerPlayer savedPlayerForLoginEventLegacy; // Paper - playerloginevent
// Paper start - Optimize network // Paper start - Optimize network
public boolean isPending = true; public boolean isPending = true;
+ private io.netty.channel.SingleThreadEventLoop eventLoop; // Paper - optimise packets that are not flushed + private io.netty.channel.SingleThreadEventLoop eventLoop; // Paper - optimise packets that are not flushed
public boolean queueImmunity; public boolean queueImmunity;
// Paper end - Optimize network // Paper end - Optimize network
@@ -158,6 +159,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -159,6 +160,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
public void channelActive(ChannelHandlerContext context) throws Exception { public void channelActive(ChannelHandlerContext context) throws Exception {
super.channelActive(context); super.channelActive(context);
this.channel = context.channel(); this.channel = context.channel();
@@ -45,7 +45,7 @@ index 1014ab2aeb5e496124c99c938538e88d75561cd5..2fda4bf1aeecba183ba6301f83f582ae
this.address = this.channel.remoteAddress(); this.address = this.channel.remoteAddress();
this.preparing = false; // Spigot this.preparing = false; // Spigot
if (this.delayedDisconnect != null) { if (this.delayedDisconnect != null) {
@@ -472,6 +474,11 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -473,6 +475,11 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
if (this.channel.eventLoop().inEventLoop()) { if (this.channel.eventLoop().inEventLoop()) {
this.doSendPacket(packet, channelFutureListener, flag); this.doSendPacket(packet, channelFutureListener, flag);
} else { } else {

View File

@@ -34,10 +34,10 @@ index 42dbd6d9e82130cfc5ae4669c460373631061451..b3356ad173027afafba931f31952c5b5
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 diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 163ac7b4b6fefb0c4594548dfffc0ea6f24f0765..479884c829a7550d39508bf37a2551f2ef52fcd1 100644 index f9664926de5706eda918b457301174734b0b0300..8423a1cacf23e86eeb9b277b11e21c84bc298ab6 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
@@ -876,6 +876,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -809,6 +809,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
} }
} }
// Purpur end - Ridables // Purpur end - Ridables
@@ -45,11 +45,11 @@ index 163ac7b4b6fefb0c4594548dfffc0ea6f24f0765..479884c829a7550d39508bf37a2551f2
} }
private void updatePlayerAttributes() { private void updatePlayerAttributes() {
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 23fefdc7122ff8e195c27651dc3a83000f62a95e..f90fc120d448ed2e3978682b189d4c955bc37051 100644 index baa703a89583f72fab0ebbc40c85399022185c29..983f2b1c12d2e64c099ba7c717b9d2bc7f1770ce 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -206,6 +206,8 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -3871,6 +3871,8 @@ public class ServerGamePacketListenerImpl
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
@@ -59,7 +59,7 @@ index 23fefdc7122ff8e195c27651dc3a83000f62a95e..f90fc120d448ed2e3978682b189d4c95
final byte[] data = discardedPayload.data(); final byte[] data = discardedPayload.data();
try { try {
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 1a03bf5184b1b85d4cea97dc73795e8725bf2613..58e1b90132898e30aa15ed08c76b53165473999a 100644 index 6c61c11f655002359fe8791b9a1704d354b8f993..daf2410db29adad3751da1b08fa1774d84190aff 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
@@ -690,6 +690,7 @@ public abstract class PlayerList { @@ -690,6 +690,7 @@ public abstract class PlayerList {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Reduce PlayerChunk Updates
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 0dec7852a4f225b9e9e94debf9259faea625028f..c5b2033c323695f71009d765b64e7ed8f94b9258 100644 index 983f2b1c12d2e64c099ba7c717b9d2bc7f1770ce..6dc940aa6ee513e5c87b6058ccaa90bba91bade9 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
@@ -1455,6 +1455,8 @@ public class ServerGamePacketListenerImpl @@ -1457,6 +1457,8 @@ public class ServerGamePacketListenerImpl
this.resetPosition(); this.resetPosition();
} }
@@ -17,7 +17,7 @@ index 0dec7852a4f225b9e9e94debf9259faea625028f..c5b2033c323695f71009d765b64e7ed8
if (this.player.hasClientLoaded()) { if (this.player.hasClientLoaded()) {
float f = Mth.wrapDegrees(packet.getYRot(this.player.getYRot())); final float toYaw = f; // Paper - OBFHELPER float f = Mth.wrapDegrees(packet.getYRot(this.player.getYRot())); final float toYaw = f; // Paper - OBFHELPER
float f1 = Mth.wrapDegrees(packet.getXRot(this.player.getXRot())); final float toPitch = f1; // Paper - OBFHELPER float f1 = Mth.wrapDegrees(packet.getXRot(this.player.getXRot())); final float toPitch = f1; // Paper - OBFHELPER
@@ -1732,7 +1734,7 @@ public class ServerGamePacketListenerImpl @@ -1734,7 +1736,7 @@ public class ServerGamePacketListenerImpl
&& !isFallFlying && !isFallFlying
&& !isAutoSpinAttack && !isAutoSpinAttack
&& this.noBlocksAround(this.player); && this.noBlocksAround(this.player);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Async switch connection state
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 2fda4bf1aeecba183ba6301f83f582ae34f5a3da..df012a4c67d474125fafa01b1677d9220fc817ae 100644 index 01fb1bf0eba70b740b12731c79feadefc8fe96f0..a6077984e139be5cbcc00f8f0828f1992d3604a6 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
@@ -342,6 +342,11 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -343,6 +343,11 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
if (protocolInfo.flow() != this.getReceiving()) { if (protocolInfo.flow() != this.getReceiving()) {
throw new IllegalStateException("Invalid inbound protocol: " + protocolInfo.id()); throw new IllegalStateException("Invalid inbound protocol: " + protocolInfo.id());
} else { } else {
@@ -20,7 +20,7 @@ index 2fda4bf1aeecba183ba6301f83f582ae34f5a3da..df012a4c67d474125fafa01b1677d922
this.packetListener = packetInfo; this.packetListener = packetInfo;
this.disconnectListener = null; this.disconnectListener = null;
UnconfiguredPipelineHandler.InboundConfigurationTask inboundConfigurationTask = UnconfiguredPipelineHandler.setupInboundProtocol(protocolInfo); UnconfiguredPipelineHandler.InboundConfigurationTask inboundConfigurationTask = UnconfiguredPipelineHandler.setupInboundProtocol(protocolInfo);
@@ -351,7 +356,14 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -352,7 +357,14 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
inboundConfigurationTask = inboundConfigurationTask.andThen(context -> context.pipeline().addAfter("decoder", "bundler", packetBundlePacker)); inboundConfigurationTask = inboundConfigurationTask.andThen(context -> context.pipeline().addAfter("decoder", "bundler", packetBundlePacker));
} }
@@ -36,7 +36,7 @@ index 2fda4bf1aeecba183ba6301f83f582ae34f5a3da..df012a4c67d474125fafa01b1677d922
} }
} }
@@ -373,6 +385,31 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -374,6 +386,31 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
} }
} }
@@ -69,7 +69,7 @@ index 2fda4bf1aeecba183ba6301f83f582ae34f5a3da..df012a4c67d474125fafa01b1677d922
if (this.packetListener != null) { if (this.packetListener != null) {
throw new IllegalStateException("Listener already set"); throw new IllegalStateException("Listener already set");
diff --git a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
index b57f4e2528d73c3ba949cb7e5dce73871049968c..6b6a51af0198db0e157ee4cf5bd6b7751b69d3e5 100644 index 91ca446e6e1d895d818fc7f844375101be6af5e8..8e24d76e24ad9788868934909a3c5e53823a5b13 100644
--- a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java --- a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
@@ -140,11 +140,34 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis @@ -140,11 +140,34 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis
@@ -110,10 +110,10 @@ index b57f4e2528d73c3ba949cb7e5dce73871049968c..6b6a51af0198db0e157ee4cf5bd6b775
try { try {
PlayerList playerList = this.server.getPlayerList(); PlayerList playerList = this.server.getPlayerList();
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 6b0b0ccc18a5da05685867656705e1fcf94b5891..889bab9613fb32d239bb0613db4a900a442116a3 100644 index 2e014cd543a6a790a0023835199b0e956e49fd1f..72115a4d2c54834f9edef02c83ed79f0fe380e78 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -493,11 +493,31 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -459,11 +459,31 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
this.disconnect(ServerCommonPacketListenerImpl.DISCONNECT_UNEXPECTED_QUERY); this.disconnect(ServerCommonPacketListenerImpl.DISCONNECT_UNEXPECTED_QUERY);
} }
@@ -145,4 +145,4 @@ index 6b0b0ccc18a5da05685867656705e1fcf94b5891..889bab9613fb32d239bb0613db4a900a
+ if (!org.dreeam.leaf.config.modules.network.AlternativeJoin.enabled) this.connection.setupOutboundProtocol(ConfigurationProtocols.CLIENTBOUND); // Leaf - Async switch connection state + if (!org.dreeam.leaf.config.modules.network.AlternativeJoin.enabled) this.connection.setupOutboundProtocol(ConfigurationProtocols.CLIENTBOUND); // Leaf - Async switch connection state
CommonListenerCookie commonListenerCookie = CommonListenerCookie.createInitial(Objects.requireNonNull(this.authenticatedProfile), this.transferred); CommonListenerCookie commonListenerCookie = CommonListenerCookie.createInitial(Objects.requireNonNull(this.authenticatedProfile), this.transferred);
ServerConfigurationPacketListenerImpl serverConfigurationPacketListenerImpl = new ServerConfigurationPacketListenerImpl( ServerConfigurationPacketListenerImpl serverConfigurationPacketListenerImpl = new ServerConfigurationPacketListenerImpl(
this.server, this.connection, commonListenerCookie, this.player // CraftBukkit this.server, this.connection, commonListenerCookie

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Only tick items at hand
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 479884c829a7550d39508bf37a2551f2ef52fcd1..6d8c500839062ca0cad2ffc58dad0de1626c0eb9 100644 index 8423a1cacf23e86eeb9b277b11e21c84bc298ab6..fcd6d892b96d3e82ebb1aecf9a7a595f7dbd757c 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
@@ -914,12 +914,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -847,12 +847,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
super.tick(); super.tick();
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add configurable death item drop knockback settings
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 6d8c500839062ca0cad2ffc58dad0de1626c0eb9..cc015575efcb0c3d56d33510a1f43f40996eab1a 100644 index fcd6d892b96d3e82ebb1aecf9a7a595f7dbd757c..9c84df53473a58a182a544fd9dd27491c0dc3638 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
@@ -1133,7 +1133,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1066,7 +1066,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
if (!keepInventory) { if (!keepInventory) {
for (ItemStack item : this.getInventory().getContents()) { for (ItemStack item : this.getInventory().getContents()) {
if (!item.isEmpty() && !EnchantmentHelper.has(item, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { if (!item.isEmpty() && !EnchantmentHelper.has(item, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) {

View File

@@ -79,10 +79,10 @@ index 6c7edbbf3935c40ccb78bee680ea75431718b9bd..fd2f79d976c9587b00380f8b8f784b32
public String toString() { public String toString() {
return "Reference{" + this.key + "=" + this.value + "}"; return "Reference{" + this.key + "=" + this.value + "}";
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 cc015575efcb0c3d56d33510a1f43f40996eab1a..672301fcfe89dda6fb20bc0cd18d18fc26cd2efa 100644 index 9c84df53473a58a182a544fd9dd27491c0dc3638..02e02aaa81921802ff61c35505acf7bb39f733c3 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
@@ -1979,7 +1979,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1912,7 +1912,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.awardStat(Stats.SWIM_ONE_CM, rounded); this.awardStat(Stats.SWIM_ONE_CM, rounded);
this.causeFoodExhaustion(this.level().spigotConfig.swimMultiplier * (float) rounded * 0.01F, org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.SWIM); // CraftBukkit - EntityExhaustionEvent // Spigot this.causeFoodExhaustion(this.level().spigotConfig.swimMultiplier * (float) rounded * 0.01F, org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.SWIM); // CraftBukkit - EntityExhaustionEvent // Spigot
} }
@@ -175,7 +175,7 @@ index c8354d46ed909090f7c15f396863bf7d73afcefa..3ee788b172240ccf38cb31385dff1336
} else if (!flag) { } else if (!flag) {
this.applyGravity(); this.applyGravity();
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 f95792b8642dc86a4d88e1d756de65d6cae2fa98..be8cc4aceafc183808a6d0f7278ef8378c4265e0 100644 index f1975e5ab19da6dd1d8b94503924471e3efab921..6f57a8de40a398312e14282ff6764a633a949049 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
@@ -463,7 +463,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -463,7 +463,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin

View File

@@ -22,10 +22,10 @@ index 22c1545a0329d56e0ec41ae4da1e1922aa1f9737..e89e4c26c40cbb3ef002022f22886d5f
} }
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 743c0c956ddd9e35d3c9c7b45fa8d36490d648dd..c029256175b27bb5f0d30e3fa7371f04c2069fd6 100644 index f456a44deac3645c44366ca1704ae25419baf52c..db23240fed3fb8b9bc2a7f670d7bfd8ab80ffcd6 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -1095,6 +1095,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1094,6 +1094,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
} }

View File

@@ -11,7 +11,7 @@ Some random optimizations
- Secret patches (WIP) - Secret patches (WIP)
diff --git a/net/minecraft/Util.java b/net/minecraft/Util.java diff --git a/net/minecraft/Util.java b/net/minecraft/Util.java
index 1f4208388a923f9a1667dc13d937955ac233d88e..6e3bd3944b56010c3eabcdcd11424518bbb980fa 100644 index 9f7288223bc1f13e3664d82d2e883336f527e5e2..ed51fd7c4c9f26dbcc348e6aefcafd367b1dd7bc 100644
--- a/net/minecraft/Util.java --- a/net/minecraft/Util.java
+++ b/net/minecraft/Util.java +++ b/net/minecraft/Util.java
@@ -96,7 +96,7 @@ public class Util { @@ -96,7 +96,7 @@ public class Util {
@@ -33,10 +33,10 @@ index 1f4208388a923f9a1667dc13d937955ac233d88e..6e3bd3944b56010c3eabcdcd11424518
public static void shutdownExecutors() { public static void shutdownExecutors() {
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 df012a4c67d474125fafa01b1677d9220fc817ae..7992df93f4eebb9ca41b9bca2784aec718d4efb8 100644 index a6077984e139be5cbcc00f8f0828f1992d3604a6..4142ef85071b13427f99808482a1f1344ee976d3 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
@@ -644,13 +644,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -645,13 +645,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
if (!(this.packetListener instanceof net.minecraft.server.network.ServerLoginPacketListenerImpl loginPacketListener) if (!(this.packetListener instanceof net.minecraft.server.network.ServerLoginPacketListenerImpl loginPacketListener)
|| loginPacketListener.state != net.minecraft.server.network.ServerLoginPacketListenerImpl.State.VERIFYING || loginPacketListener.state != net.minecraft.server.network.ServerLoginPacketListenerImpl.State.VERIFYING
|| Connection.joinAttemptsThisTick++ < MAX_PER_TICK) { || Connection.joinAttemptsThisTick++ < MAX_PER_TICK) {
@@ -100,7 +100,7 @@ index 4535858701b2bb232b9d2feb2af6551526232ddc..e65c62dbe4c1560ae153e4c4344e9194
- // Paper end - detailed watchdog information - // Paper end - detailed watchdog information
} }
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 c49d2f7314a35763831285d7d46d34dade2f0085..79f2b26bc466238ec83cd049f38d257b0000028d 100644 index 08c6f93bcc028c876e17870681382aa9fa2ba3ee..58a77b5aa49cb56eea33757e982ba1852bbfb679 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
@@ -1518,13 +1518,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -1518,13 +1518,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Paper Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: a112b6aca718e4500a6d48ca9d7158faf0f4adf9 Commit: 591baf2648d0f75ffecc52f1d169348af35246dd
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "Rebrand.patch" * "Rebrand.patch"
@@ -127,7 +127,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ } + }
+} +}
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
index 94bf04bb1c646ec5ba1d42f4b7b3e6c200707beb..3e41a308cf92b841b5375250d1380d16af3d0309 100644 index e6ad63a56dc0fc969dbf3ed5bdc36b4187331e30..f99ee5383bb9f33c1ebdbc74a640c2f7dc20a046 100644
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -142,6 +142,10 @@ public class MobGoalHelper { @@ -142,6 +142,10 @@ public class MobGoalHelper {
@@ -1068,10 +1068,10 @@ index 02deb9c37250144be9afa0fe55df2a49017a7070..dfb597fcb8d01ed6cf20eae57e260949
+ // Purpur end - Llama API + // Purpur end - Llama API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 3e18819ae23ab5ecd866d61cd0fd62ce1324109e..7f17c5025f25e44a917f5d6a65b8d958a982b301 100644 index 3ea6d207b2189fa6bebe101bfc98093c2c6b19c7..7f5eca8f32ae1afe3e6d2544b76cf0bbe131109f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -625,10 +625,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -575,10 +575,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public void setPlayerListName(String name) { public void setPlayerListName(String name) {
@@ -1088,7 +1088,7 @@ index 3e18819ae23ab5ecd866d61cd0fd62ce1324109e..7f17c5025f25e44a917f5d6a65b8d958
if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined
for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) { for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) { if (player.getBukkitEntity().canSee(this)) {
@@ -1442,6 +1447,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1392,6 +1397,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start - Teleport passenger API // Paper start - Teleport passenger API
// Don't allow teleporting between worlds while keeping passengers // Don't allow teleporting between worlds while keeping passengers
if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) {
@@ -1096,7 +1096,7 @@ index 3e18819ae23ab5ecd866d61cd0fd62ce1324109e..7f17c5025f25e44a917f5d6a65b8d958
return false; return false;
} }
@@ -1463,6 +1469,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1413,6 +1419,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} }
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API
@@ -1104,7 +1104,7 @@ index 3e18819ae23ab5ecd866d61cd0fd62ce1324109e..7f17c5025f25e44a917f5d6a65b8d958
return false; return false;
} }
@@ -2726,6 +2733,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2676,6 +2683,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f; return this.getHandle().getAbilities().walkingSpeed * 2f;
} }
@@ -1133,9 +1133,9 @@ index 3e18819ae23ab5ecd866d61cd0fd62ce1324109e..7f17c5025f25e44a917f5d6a65b8d958
private void validateSpeed(float value) { private void validateSpeed(float value) {
Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value);
} }
@@ -3569,4 +3598,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -3524,4 +3553,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setDeathScreenScore(final int score) { public PlayerGameConnection getConnection() {
getHandle().setScore(score); return this.getHandle().connection.playerGameConnection;
} }
+ +
+ // Purpur start - Purpur client support + // Purpur start - Purpur client support
@@ -1292,10 +1292,10 @@ index 33866c5a5591150de4c1d8f4c175122db3bd5bd4..5fd656f43985e3972c9f572d5b05bf5c
+ // Purpur end - Configurable chance for wolves to spawn rabid + // Purpur end - Configurable chance for wolves to spawn rabid
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index c5daefa56597bd13fe227fa014ca5225c00a2a2d..98b766d115856dbf3ea11a983c1304591032f1b0 100644 index 1d112510093d5eb5117adf16b92dd3411a610a4a..a162440a583801671787163d998d6b9546ef7e61 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -515,6 +515,15 @@ public class CraftEventFactory { @@ -525,6 +525,15 @@ public class CraftEventFactory {
} }
craftServer.getPluginManager().callEvent(event); craftServer.getPluginManager().callEvent(event);
@@ -1311,7 +1311,7 @@ index c5daefa56597bd13fe227fa014ca5225c00a2a2d..98b766d115856dbf3ea11a983c130459
return event; return event;
} }
@@ -1047,6 +1056,7 @@ public class CraftEventFactory { @@ -1057,6 +1066,7 @@ public class CraftEventFactory {
EntityDamageEvent event; EntityDamageEvent event;
if (damager != null) { if (damager != null) {
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);
@@ -1320,10 +1320,10 @@ index c5daefa56597bd13fe227fa014ca5225c00a2a2d..98b766d115856dbf3ea11a983c130459
event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions); event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions);
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
index c00ddfe41439954fa0fd87c0933f274c8a752eb6..5fde4c71915f55f100cd30406803d6fca5b573dc 100644 index 2f41a92465b9da28e026297cc3528898bb1c8412..83ae4b40e33e0dc58e0fd6aacf22e22ae0cd3684 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
@@ -150,8 +150,19 @@ public class CraftContainer extends AbstractContainerMenu { @@ -148,8 +148,19 @@ public class CraftContainer extends AbstractContainerMenu {
case PLAYER: case PLAYER:
case CHEST: case CHEST:
case ENDER_CHEST: case ENDER_CHEST:

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi Original project: https://github.com/KeYiMC/KeYi
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 7f17c5025f25e44a917f5d6a65b8d958a982b301..94efaf127c22b6bb722982bf1ccc63bfd6458153 100644 index 7f5eca8f32ae1afe3e6d2544b76cf0bbe131109f..571b1337b5a4dcbe0fe09b86198c8ed068a4e81b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3670,4 +3670,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -3625,4 +3625,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message)));
} }
// Purpur end - Death screen API // Purpur end - Death screen API

View File

@@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice
Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 94efaf127c22b6bb722982bf1ccc63bfd6458153..c5da43af18b507d348dae8fa46852c1d1af65742 100644 index 571b1337b5a4dcbe0fe09b86198c8ed068a4e81b..d612623cf25f454cc535c5d395758ed510d345f6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1392,6 +1392,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1342,6 +1342,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end - Teleportation API // Paper end - Teleportation API
} }

View File

@@ -73,10 +73,10 @@ index 476eefebace887064b728f08af40c746b6f70787..beae8a57a0ce9b8e7d81619efe4c39d9
if (entity instanceof EnderDragonPart complexPart) { if (entity instanceof EnderDragonPart complexPart) {
if (complexPart.parentMob instanceof EnderDragon) { if (complexPart.parentMob instanceof EnderDragon) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index c5da43af18b507d348dae8fa46852c1d1af65742..4fcc231b0acbb536f3f6466454555845fe54a815 100644 index d612623cf25f454cc535c5d395758ed510d345f6..d8dcb28810668b26b538a6d26038e295d10019e4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2294,7 +2294,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2244,7 +2244,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public boolean canSee(Player player) { public boolean canSee(Player player) {

View File

@@ -16,10 +16,10 @@ This seems stupid, but it does seem that it improves the performance a bit, and
We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4fcc231b0acbb536f3f6466454555845fe54a815..a6d89e3e6dcdfac785111706dfceabffa0a52cbf 100644 index d8dcb28810668b26b538a6d26038e295d10019e4..384b11fdf3606f0ee59ea1e58a3a312e3898fce6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -227,7 +227,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -228,7 +228,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private boolean hasPlayedBefore = false; private boolean hasPlayedBefore = false;
private final ConversationTracker conversationTracker = new ConversationTracker(); private final ConversationTracker conversationTracker = new ConversationTracker();
private final Set<String> channels = new HashSet<String>(); private final Set<String> channels = new HashSet<String>();
@@ -28,7 +28,7 @@ index 4fcc231b0acbb536f3f6466454555845fe54a815..a6d89e3e6dcdfac785111706dfceabff
private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player
private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>(); private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>();
private int hash = 0; private int hash = 0;
@@ -2299,9 +2299,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2249,9 +2249,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public boolean canSee(org.bukkit.entity.Entity entity) { public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -72,10 +72,10 @@ index beae8a57a0ce9b8e7d81619efe4c39d908869319..6b1926080eddf61ff9c0156a6846f7f0
} }
return set; return set;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index a6d89e3e6dcdfac785111706dfceabffa0a52cbf..66d555e97177e340ee1c07ae389a6c52855dd3d9 100644 index 384b11fdf3606f0ee59ea1e58a3a312e3898fce6..15d549931183e0c9a7dc54737fc2947af58934b0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2895,7 +2895,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2845,7 +2845,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
Iterator<AttributeInstance> iterator = collection.iterator(); Iterator<AttributeInstance> iterator = collection.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
AttributeInstance genericInstance = iterator.next(); AttributeInstance genericInstance = iterator.next();
@@ -85,10 +85,10 @@ index a6d89e3e6dcdfac785111706dfceabffa0a52cbf..66d555e97177e340ee1c07ae389a6c52
break; break;
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 98b766d115856dbf3ea11a983c1304591032f1b0..62cefed7674a6938698a57f5f89750d120461e9c 100644 index a162440a583801671787163d998d6b9546ef7e61..5e73db484a5526f4c39c7cc2de5ddc3ff037d2e4 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1798,6 +1798,26 @@ public class CraftEventFactory { @@ -1808,6 +1808,26 @@ public class CraftEventFactory {
} }
public static boolean handleBlockFormEvent(Level world, BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int flags, @Nullable Entity entity, boolean checkSetResult) { public static boolean handleBlockFormEvent(Level world, BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int flags, @Nullable Entity entity, boolean checkSetResult) {

View File

@@ -1508,7 +1508,7 @@ index 196835bdf95ba0e149b2977e9ef41698971f501f..eb7e63d4549e672ff1206055d2d75439
net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item); net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item);
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
index eb51cfce4069035664d2d1e3d30ab681e917dee6..aea45592a3e870b9474e64317c329c55ffbebfdb 100644 index db71a9fc02bfac7799b58f07da044e53b2273e98..842713df01a0bde562b2bef366af7d5429497bae 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
@@ -195,14 +195,14 @@ public final class CraftBlockStates { @@ -195,14 +195,14 @@ public final class CraftBlockStates {
@@ -1530,10 +1530,10 @@ index eb51cfce4069035664d2d1e3d30ab681e917dee6..aea45592a3e870b9474e64317c329c55
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 62cefed7674a6938698a57f5f89750d120461e9c..3c21b9701e0266bc56e6d3fc855bf49ed381441c 100644 index 5e73db484a5526f4c39c7cc2de5ddc3ff037d2e4..acb5182a59859f65653cd309ca85b8301ace5383 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -819,6 +819,28 @@ public class CraftEventFactory { @@ -829,6 +829,28 @@ public class CraftEventFactory {
} }
public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep. public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep.
@@ -1562,7 +1562,7 @@ index 62cefed7674a6938698a57f5f89750d120461e9c..3c21b9701e0266bc56e6d3fc855bf49e
public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) { public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) {
return handleBlockSpreadEvent(world, source, target, state, flags, false); return handleBlockSpreadEvent(world, source, target, state, flags, false);
@@ -834,7 +856,10 @@ public class CraftEventFactory { @@ -844,7 +866,10 @@ public class CraftEventFactory {
CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target); CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target);
snapshot.setData(state); snapshot.setData(state);

View File

@@ -2,7 +2,7 @@
<div align="center"> <div align="center">
[![下载](https://img.shields.io/badge/releases-blue?label=%e4%b8%8b%e8%bd%bd&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/zh/download) [![下载](https://img.shields.io/badge/releases-blue?label=%e4%b8%8b%e8%bd%bd&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/zh/download)
[![Github Actions 构建](https://img.shields.io/github/actions/workflow/status/Winds-Studio/Leaf/build-1216.yml?label=%e6%9e%84%e5%bb%ba&style=for-the-badge&colorA=19201a&colorB=298046)](https://github.com/Winds-Studio/Leaf/actions) [![Github Actions 构建](https://img.shields.io/github/actions/workflow/status/Winds-Studio/Leaf/build-1217.yml?label=%e6%9e%84%e5%bb%ba&style=for-the-badge&colorA=19201a&colorB=298046)](https://github.com/Winds-Studio/Leaf/actions)
![QQ](https://img.shields.io/badge/619278377-blue?label=QQ%e7%be%a4&style=for-the-badge&colorA=19201a&colorB=298046) ![QQ](https://img.shields.io/badge/619278377-blue?label=QQ%e7%be%a4&style=for-the-badge&colorA=19201a&colorB=298046)
[![文档](https://img.shields.io/badge/leafmc.one/zh/docs-blue?label=%e6%96%87%e6%a1%a3&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/zh/docs) [![文档](https://img.shields.io/badge/leafmc.one/zh/docs-blue?label=%e6%96%87%e6%a1%a3&style=for-the-badge&colorA=19201a&colorB=298046)](https://www.leafmc.one/zh/docs)
@@ -65,7 +65,7 @@
<dependency> <dependency>
<groupId>cn.dreeam.leaf</groupId> <groupId>cn.dreeam.leaf</groupId>
<artifactId>leaf-api</artifactId> <artifactId>leaf-api</artifactId>
<version>1.21.6-R0.1-SNAPSHOT</version> <version>1.21.7-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
``` ```
@@ -78,7 +78,7 @@ repositories {
} }
dependencies { dependencies {
compileOnly("cn.dreeam.leaf:leaf-api:1.21.6-R0.1-SNAPSHOT") compileOnly("cn.dreeam.leaf:leaf-api:1.21.7-R0.1-SNAPSHOT")
} }
java { java {

View File

@@ -2,15 +2,15 @@
set -e set -e
IS_EOL=false IS_EOL=false
IS_UNSUPPORTED=true IS_UNSUPPORTED=false
IS_DEV=false IS_DEV=false
JAR_NAME="leaf-1.21.6" JAR_NAME="leaf-1.21.7"
CURRENT_TAG="ver-1.21.6" CURRENT_TAG="ver-1.21.7"
RELEASE_NOTES="release_notes.md" RELEASE_NOTES="release_notes.md"
# Rename Leaf jar # Rename Leaf jar
mv ./leaf-server/build/libs/leaf-paperclip-1.21.6-R0.1-SNAPSHOT-mojmap.jar ./$JAR_NAME-${BUILD_NUMBER}.jar mv ./leaf-server/build/libs/leaf-paperclip-1.21.7-R0.1-SNAPSHOT-mojmap.jar ./$JAR_NAME-${BUILD_NUMBER}.jar
# Branch name # Branch name
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)

View File

@@ -64,7 +64,7 @@ fi
# Purpur updates # Purpur updates
if [ -n "$purpurHash" ]; then if [ -n "$purpurHash" ]; then
purpur=$(getCommits "PurpurMC/Purpur" "$purpurHash" "ver/1.21.6") # Update this on every version update purpur=$(getCommits "PurpurMC/Purpur" "$purpurHash" "ver/1.21.7") # Update this on every version update
# Updates found # Updates found
if [ -n "$purpur" ]; then if [ -n "$purpur" ]; then