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

Updated Upstream (Gale)

Paper Changes:
PaperMC/Paper@c2bb144f Properly save level data async (#12530)
PaperMC/Paper@e2ca4773 Remove simplify remote item matching option for now
This commit is contained in:
hayanesuru
2025-05-13 00:58:31 +09:00
parent aab1f8db99
commit 0893c933c9
21 changed files with 93 additions and 70 deletions

View File

@@ -2,7 +2,7 @@ group=cn.dreeam.leaf
mcVersion=1.21.4
version=1.21.4-R0.1-SNAPSHOT
galeCommit=d5d63524e02c6b7ff448ede990beb9edca897485
galeCommit=e6d2efb8f8dc092ac55647c745440ea3d60f8797
org.gradle.configuration-cache=true
org.gradle.caching=true

View File

@@ -724,7 +724,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862
private JComponent buildOnboardingPanel() {
String onboardingLink = "https://docs.papermc.io/paper/next-steps";
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 101f1a87a5fe920b57a5179da41cc91d88afa32e..b49dd636e730f0c5b609df68ee51bcd12efc1eaa 100644
index 1a4b037ae7272e5e1c1ffb1982149873f875f948..2a978aa96f4ba932e30f921e2e54bc40bad4b13e 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -205,6 +205,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -944,10 +944,10 @@ index 101f1a87a5fe920b57a5179da41cc91d88afa32e..b49dd636e730f0c5b609df68ee51bcd1
}
// 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
index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a13356b4ce56 100644
index 6ea1381a607c40759ae422b7dcacebf65b810605..09500e88414928fc21aee48036f23b7265e95114 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -399,6 +399,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -392,6 +392,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
public @Nullable String clientBrandName = null; // Paper - Brand support
public 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
@@ -958,7 +958,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
// Paper start - rewrite chunk system
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -567,6 +571,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -560,6 +564,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
if (tag != null) {
BlockPos.CODEC.parse(NbtOps.INSTANCE, tag).resultOrPartial(LOGGER::error).ifPresent(pos -> this.raidOmenPosition = pos);
}
@@ -969,7 +969,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
}
@Override
@@ -611,6 +619,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -604,6 +612,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
this.saveEnderPearls(compound);
@@ -979,7 +979,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
}
private void saveParentVehicle(CompoundTag tag) {
@@ -843,6 +854,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -836,6 +847,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.trackEnteredOrExitedLavaOnVehicle();
this.updatePlayerAttributes();
this.advancements.flushDirty(this);
@@ -995,7 +995,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
}
private void updatePlayerAttributes() {
@@ -1130,6 +1150,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1123,6 +1143,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
)
);
Team team = this.getTeam();
@@ -1003,7 +1003,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) {
this.server.getPlayerList().broadcastSystemMessage(deathMessage, false);
} else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
@@ -1223,6 +1244,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1216,6 +1237,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
if (this.isInvulnerableTo(level, damageSource)) {
return false;
} else {
@@ -1022,7 +1022,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
Entity entity = damageSource.getEntity();
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))
@@ -1449,6 +1482,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1442,6 +1475,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved();
// CraftBukkit end
@@ -1030,7 +1030,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
this.setServerLevel(level);
this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event
this.connection.resetPosition();
@@ -1566,7 +1600,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1559,7 +1593,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),
monster -> monster.isPreventingPlayerRest(this.serverLevel(), this)
);
@@ -1039,7 +1039,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
return Either.left(Player.BedSleepingProblem.NOT_SAFE);
}
}
@@ -1603,7 +1637,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1596,7 +1630,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
CriteriaTriggers.SLEPT_IN_BED.trigger(this);
});
if (!this.serverLevel().canSleepThroughNights()) {
@@ -1060,7 +1060,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
}
((ServerLevel)this.level()).updateSleepingPlayerList();
@@ -1711,6 +1757,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1704,6 +1750,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@Override
public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) {
@@ -1068,7 +1068,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos()));
this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText));
}
@@ -2016,6 +2063,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2009,6 +2056,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.lastSentExp = -1; // CraftBukkit - Added to reset
}
@@ -1095,7 +1095,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
@Override
public void displayClientMessage(Component chatComponent, boolean actionBar) {
this.sendSystemMessage(chatComponent, actionBar);
@@ -2243,6 +2310,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2236,6 +2303,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
);
}
@@ -1116,7 +1116,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
public void sendSystemMessage(Component mesage) {
this.sendSystemMessage(mesage, false);
}
@@ -2381,8 +2462,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2374,8 +2455,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
public void resetLastActionTime() {
this.lastActionTime = Util.getMillis();
@@ -1185,7 +1185,7 @@ index 50db1221d672d36b58b65177a746d365f7cdc386..d4098a1666f0eb7060caaf93f5c5a133
public ServerStatsCounter getStats() {
return this.stats;
}
@@ -3086,4 +3227,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -3079,4 +3220,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
}
// CraftBukkit end
@@ -2341,7 +2341,7 @@ index efee812785240c1ab1fd47514cfb236a3548f9cf..b982d4b7bdf39fcaf5f22cc889467d7b
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 696ef08b2d897c91a20bc22987b1f5c7047615be..ac006d8738592bc5cb77033adc8c442ce302a476 100644
index c068ce2034cffcf403091de16a43d54ba1290850..e66ad09280d8fb448953a6204d9fd81913227219 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -248,9 +248,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3232,7 +3232,7 @@ index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c1
double d = this.llama.distanceToSqr(this.llama.getCaravanHead());
if (d > 676.0) {
diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
index 579ca031d461ed4327fe4fb45c5289565322e64e..95fa516910a3834bbd4db6d11279e13a1f0dac41 100644
index 005793fdee5ab03a0fb5a56b03b3db74e38448a1..c67a88c9c77ece7c85ffb169ac96da4f28291228 100644
--- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
+++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
@@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal {
@@ -13256,7 +13256,7 @@ index 5e0d447409dc2223bb56cb8bb932e241bf88c78d..6e1544121c556cd8761dc86d4246e727
}
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index acca8c51d2030c675c157b10d0bbc6af631afe61..e6419715fab462b12790ecb175ce1e1a1fceed8f 100644
index 50af953a4698a3c6e16b840fab764dd733b3fbc9..3dcd8df0b395a8fed8bc0cbe0ff78f4ae0056fd3 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu {

View File

@@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice
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
index 668c173dc69b4ab77d91666dc2059f2b9afd7ee7..d44c3baa2ef30d5cd4c46e491ff9198fa558513c 100644
index 09500e88414928fc21aee48036f23b7265e95114..4160a1c6c063804f23c29c66231fa004bade3caa 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -403,6 +403,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -396,6 +396,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
private boolean tpsBar = false; // Purpur - Implement TPSBar
private boolean compassBar = false; // Purpur - Add compass command
private boolean ramBar = false; // Purpur - Implement rambar commands

View File

@@ -19,10 +19,10 @@ index ee7bdfd8f9da8d5989c9cc25f8cbcc94640361c5..8b9374ee6df71228bb8ea22661622a15
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo 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
index 6ea52b077cd867528edcea2f8c5d1f925f2f304f..ab302d642b1d7b6f59b9ee32a0c514d0abf8d1b1 100644
index 16a6aba187fa00fd7c3f739e46bc632987c1378f..8a9c2489730dd47cc776493695393e788fd2033e 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -2468,6 +2468,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2461,6 +2461,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
// Purpur start - AFK API
private boolean isAfk = false;
@@ -33,7 +33,7 @@ index 6ea52b077cd867528edcea2f8c5d1f925f2f304f..ab302d642b1d7b6f59b9ee32a0c514d0
@Override
public void setAfk(boolean afk) {
@@ -2505,6 +2509,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2498,6 +2502,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 suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, "");
if (afk) {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix-MC-119417
Related MC issue: https://bugs.mojang.com/browse/MC-119417
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index ab302d642b1d7b6f59b9ee32a0c514d0abf8d1b1..1957bd89e3ed34714c3633a27df63205a4b50b6b 100644
index 8a9c2489730dd47cc776493695393e788fd2033e..4f01b53bf801f99253efd27df6216912705d18af 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -2268,6 +2268,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -2261,6 +2261,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, gameMode.getId()));
if (gameMode == GameType.SPECTATOR) {
this.removeEntitiesOnShoulder();

View File

@@ -33,18 +33,18 @@ index c1130f596cf3443eeb62eb1b12587172fe0859ee..18590e0b1d94ee3266637c5f3ab65ead
@Override
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index e6419715fab462b12790ecb175ce1e1a1fceed8f..8a0d1aebad1f92c43112e279b9c5922fdd1fd432 100644
index 3dcd8df0b395a8fed8bc0cbe0ff78f4ae0056fd3..1e8a6b132926525fad405cbf3a2fab5d32e003e1 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -306,7 +306,12 @@ public abstract class AbstractContainerMenu {
private void synchronizeCarriedToRemote() {
if (!this.suppressRemoteUpdates) {
- if (!this.matchesRemote(this.getCarried(), this.remoteCarried)) { // Paper - add flag to simplify remote matching logic
- if (!ItemStack.matches(this.getCarried(), this.remoteCarried)) {
+ // Leaf start - Hide specified item components - Avoid some frequent client animations
+ final boolean matchResult = org.dreeam.leaf.config.modules.gameplay.HideItemComponent.enabled
+ ? !org.dreeam.leaf.util.item.ItemStackStripper.matchesStripped(this.getCarried(), this.remoteCarried)
+ : !this.matchesRemote(this.getCarried(), this.remoteCarried); // Paper - add flag to simplify remote matching logic
+ : ItemStack.matches(this.getCarried(), this.remoteCarried); // Paper - add flag to simplify remote matching logic
+ if (matchResult) {
+ // Leaf end - Hide specified item components - Avoid some frequent client animations
this.remoteCarried = this.getCarried().copy();

View File

@@ -9,10 +9,10 @@ happen but the visual "refresh" of a world change is hidden. Depending on the de
this can act as a "smooth teleport" to a world if the new world is very similar looking to the old one.
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 1957bd89e3ed34714c3633a27df63205a4b50b6b..5ae1a69893cc9bee7126607e90fbaed1e9a9af06 100644
index 4f01b53bf801f99253efd27df6216912705d18af..82a1715fea41e6a41c4ff441ea89f424f68ba190 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1476,6 +1476,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1469,6 +1469,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
LevelData worlddata = level.getLevelData();
this.connection.send(new ClientboundRespawnPacket(this.createCommonSpawnInfo(level), (byte) 3));
@@ -20,7 +20,7 @@ index 1957bd89e3ed34714c3633a27df63205a4b50b6b..5ae1a69893cc9bee7126607e90fbaed1
this.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked()));
PlayerList playerList = this.server.getPlayerList();
@@ -1485,7 +1486,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1478,7 +1479,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
// CraftBukkit end
this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur - Fix stuck in portals
this.setServerLevel(level);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cache eligible players for despawn checks
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index a9e7424bb55266c5e04c56dcf598ce7d149eeb21..ae5d3de44fb710b48fdabf04f5e706df1f9889b7 100644
index 61afe93ff7f6f6ac3967e948bf39b0ab559e2808..a66e5f6652d9633c856490de36d8d8fdf8a5298a 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -735,6 +735,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -38,10 +38,10 @@ index a9e7424bb55266c5e04c56dcf598ce7d149eeb21..ae5d3de44fb710b48fdabf04f5e706df
.forEach(
entity -> {
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 5ae1a69893cc9bee7126607e90fbaed1e9a9af06..fefaab58da149b082a4d1e3bed9ec84ae8488d45 100644
index 82a1715fea41e6a41c4ff441ea89f424f68ba190..8362def0dc61496a087bd859052bd80ebba83185 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1577,6 +1577,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1570,6 +1570,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.containerMenu.broadcastChanges();
}

View File

@@ -568,7 +568,7 @@ index d4048661575ebfaf128ba25da365843774364e0e..33dd16a26edd2974f04d9a868d3e58e8
// Gale start - Pufferfish - SIMD support
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index ae5d3de44fb710b48fdabf04f5e706df1f9889b7..31abf2da10bc9b4b7825ed4b3d4e9da52feb2e39 100644
index a66e5f6652d9633c856490de36d8d8fdf8a5298a..60e0296312030d25f917c568c17ce86d08e18122 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -182,7 +182,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -650,10 +650,10 @@ index ae5d3de44fb710b48fdabf04f5e706df1f9889b7..31abf2da10bc9b4b7825ed4b3d4e9da5
// Paper start - extra debug info
if (entity.valid) {
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index fefaab58da149b082a4d1e3bed9ec84ae8488d45..9100da3fe4e478cea7198cb4e028fcefccb3eb3c 100644
index 8362def0dc61496a087bd859052bd80ebba83185..09f517059aa47ca67329bc913243d4fdee09abe5 100644
--- a/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
@@ -427,6 +427,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return this.viewDistanceHolder;
}
// Paper end - rewrite chunk system
@@ -661,7 +661,7 @@ index fefaab58da149b082a4d1e3bed9ec84ae8488d45..9100da3fe4e478cea7198cb4e028fcef
public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) {
super(level, level.getSharedSpawnPos(), level.getSharedSpawnAngle(), gameProfile);
@@ -810,6 +811,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -803,6 +804,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@Override
public void tick() {
@@ -669,7 +669,7 @@ index fefaab58da149b082a4d1e3bed9ec84ae8488d45..9100da3fe4e478cea7198cb4e028fcef
// CraftBukkit start
if (this.joining) {
this.joining = false;
@@ -1455,6 +1457,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1448,6 +1450,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
teleportTransition.postTeleportTransition().onTransition(this);
return this;
} else {
@@ -678,7 +678,7 @@ index fefaab58da149b082a4d1e3bed9ec84ae8488d45..9100da3fe4e478cea7198cb4e028fcef
// CraftBukkit start
/*
this.isChangingDimension = true;
@@ -1826,6 +1830,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1819,6 +1823,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
return OptionalInt.empty();
} else {
// CraftBukkit start
@@ -691,7 +691,7 @@ index fefaab58da149b082a4d1e3bed9ec84ae8488d45..9100da3fe4e478cea7198cb4e028fcef
this.containerMenu = abstractContainerMenu; // Moved up
if (!this.isImmobile())
this.connection
@@ -1890,6 +1900,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1883,6 +1893,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
@Override
public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
@@ -1015,7 +1015,7 @@ index d212f57c8c0b2086f567fd30237b110203d9e8cb..ed4df82581b5411e54068ccc59ea85a7
} else {
Entity entity = owner.teleport(
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index 8a0d1aebad1f92c43112e279b9c5922fdd1fd432..d4fc9466d61a680b85859965a8f7dc795b8c7130 100644
index 1e8a6b132926525fad405cbf3a2fab5d32e003e1..ea3ddc712676b09298f821fac4145a164bccd7c7 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -92,8 +92,14 @@ public abstract class AbstractContainerMenu {

View File

@@ -34,7 +34,7 @@ index 98af1ad020a003db66d7319f33d43deec315aec5..e04a6db55d936277f2a852374f11d483
for (int i = 0; i < this.tickables.size(); i++) {
this.tickables.get(i).run();
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index a13ce614722d26dcbb2f7f3ceeb68915bbaec304..7f91637028c0f3a45b32e831f88e97185bfdbdc8 100644
index 38314fcb660f6cbb36d60434d24df5b579425eb3..f17980536b98f20443556ed294c970bc2d570bbb 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -283,6 +283,7 @@ public class ServerEntity {
@@ -46,10 +46,10 @@ index a13ce614722d26dcbb2f7f3ceeb68915bbaec304..7f91637028c0f3a45b32e831f88e9718
// Purpur start
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 9100da3fe4e478cea7198cb4e028fcefccb3eb3c..95e03045bcbee74ddac36ae36ce8c8c2f5769fa4 100644
index 09f517059aa47ca67329bc913243d4fdee09abe5..43c4b8e54842310e48bcdaa991c68ff9571d7249 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -866,6 +866,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -859,6 +859,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
}
}
// Purpur end - Ridables

View File

@@ -1,20 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Taiyou06 <kaandindar21@gmail.com>
Date: Thu, 8 May 2025 00:05:01 +0200
Subject: [PATCH] Save world async properly
P.S from Tai: I've been using this fix for weeks in my own server but didn't had balls to push it as thought it may cause issues but, it's merged in paper 1.21.5 now.
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index ba1dd51e7187a80e8438e46383257c22f5382130..6cb0c14cb7aa243bbee6ca9ba57da4cc6eafdfd8 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1439,7 +1439,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
if (doFull) {
- this.saveLevelData(true);
+ this.saveLevelData(false);
}
// chunk autosave is already called by the ChunkSystem during unload processing (ChunkMap#processUnloads)
// Copied from save()

View File

@@ -119,7 +119,7 @@ index 2e9eb04c7c4342393c05339906c267bca9ff29b1..c70d5a0db1dfd01eab323aefd07d6e81
try {
PlayerList playerList = this.server.getPlayerList();
diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index e9ce273812259627b61824ca4ffe83d301a4d946..d7c113706d94ea510ddf7d0fffa927a15b198e9a 100644
index 49f1743db193be1f10bfe6419231eb682e1068f7..b0ffd2077747b2325ab795eef457b9a0fa44754b 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -472,11 +472,32 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,

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
index 95e03045bcbee74ddac36ae36ce8c8c2f5769fa4..6eee16dccef1d0f04ba3532f5ee064478b842425 100644
index 43c4b8e54842310e48bcdaa991c68ff9571d7249..943f48c41214f440517ecf7f392e08f0e4d1b888 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -895,9 +895,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -888,9 +888,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
super.tick();
}

View File

@@ -0,0 +1,11 @@
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -185,6 +_,8 @@
public CompressionFormat compressionFormat = CompressionFormat.ZLIB;
@Comment("This setting controls if equipment should be updated when handling certain player actions.")
public boolean updateEquipmentOnPlayerActions = true;
+ @Comment("Only checks an item's amount and type instead of its full data during inventory desync checks.")
+ public boolean simplifyRemoteItemMatching = false;
public enum CompressionFormat {
GZIP,

View File

@@ -0,0 +1,32 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -221,6 +_,7 @@
private BorderChangeListener clientWorldBorderListener = this.createWorldBorderListener();
public org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus; // Paper - more resource pack API
private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit
+ private boolean simplifyContainerDesyncCheck = GlobalConfiguration.get().unsupportedSettings.simplifyRemoteItemMatching;
private long lastSaveTime; // Paper - getLastPlayed replacement API
public CraftPlayer(CraftServer server, ServerPlayer entity) {
@@ -3601,5 +_,21 @@
@Override
public void setDeathScreenScore(final int score) {
getHandle().setScore(score);
+ }
+
+ /**
+ * Returns whether container desync checks should skip the full item comparison of remote carried and changed slots
+ * and should instead only check their type and amount.
+ * <p>
+ * This is useful if the client is not able to produce the same item stack (or as of 1.21.5, its data hashes) as the server.
+ *
+ * @return whether to simplify container desync checks
+ */
+ public boolean simplifyContainerDesyncCheck() {
+ return simplifyContainerDesyncCheck;
+ }
+
+ public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) {
+ this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck;
}
}