9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-29 11:59:17 +00:00

fix: prevent loss of item drops due to update suppression when breaking blocks(#525)

This commit is contained in:
MC_XiaoHei
2025-07-04 17:14:02 +08:00
parent 6c80eb62b1
commit c37d2873b5

View File

@@ -0,0 +1,26 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MC_XiaoHei <xor7xiaohei@gmail.com>
Date: Fri, 4 Jul 2025 17:13:15 +0800
Subject: [PATCH] Prevent loss of item drops due to update suppression when
breaking blocks
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
index 48bb795216ca3fb301813080de403a048bbfa98c..e62fca1668d5523453b3cae44dda2a01b33c7813 100644
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -382,7 +382,13 @@ public class ServerPlayerGameMode {
this.level.captureDrops = new java.util.ArrayList<>();
// CraftBukkit end
BlockState blockState1 = org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate() ? blockState : block.playerWillDestroy(this.level, pos, blockState, this.player); // Leaves - no block update
- boolean flag = this.level.removeBlock(pos, false);
+ boolean flag; // Leaves start - Prevent loss of item drops due to update suppression when breaking blocks
+ try {
+ flag = this.level.removeBlock(pos, false);
+ } catch (org.leavesmc.leaves.util.UpdateSuppressionException e) {
+ this.level.captureDrops = null;
+ throw e;
+ } // Leaves end - Prevent loss of item drops due to update suppression when breaking blocks
if (flag) {
block.destroy(this.level, pos, blockState1);
}