This commit is contained in:
Owen1212055
2025-06-29 22:02:31 -04:00
parent 4045339e4c
commit 1bd489c01a
3 changed files with 16 additions and 17 deletions

View File

@@ -956,7 +956,7 @@
protected abstract void addAdditionalSaveData(ValueOutput output);
@Nullable
@@ -2039,11 +_,63 @@
@@ -2039,11 +_,60 @@
@Nullable
public ItemEntity spawnAtLocation(ServerLevel level, ItemStack stack, Vec3 offset) {
@@ -985,6 +985,7 @@
return null;
} else {
- ItemEntity itemEntity = new ItemEntity(level, this.getX() + offset.x, this.getY() + offset.y, this.getZ() + offset.z, stack);
- itemEntity.setDefaultPickUpDelay();
+ // CraftBukkit start - Capture drops for death event
+ if (this instanceof net.minecraft.world.entity.LivingEntity && !this.forceDrops) {
+ // Paper start - Restore vanilla drops behavior
@@ -998,10 +999,7 @@
+ return null;
+ }
+ // CraftBukkit end
+ ItemEntity itemEntity = new ItemEntity(level, this.getX() + offset.x, this.getY() + offset.y, this.getZ() + offset.z, stack.copy()); // Paper - copy so we can destroy original
+ stack.setCount(0); // Paper - destroy this item - if this ever leaks due to game bugs, ensure it doesn't dupe
+
itemEntity.setDefaultPickUpDelay();
+ ItemEntity itemEntity = new ItemEntity(level, this.getX() + offset.x, this.getY() + offset.y, this.getZ() + offset.z, stack.copy()); // Paper - copy
+ itemEntity.setDefaultPickUpDelay(); // Paper - diff on change (in dropConsumer)
+ // Paper start - Call EntityDropItemEvent
+ return this.spawnAtLocation(level, itemEntity);

View File

@@ -1643,18 +1643,6 @@
private void updatingUsingItem() {
if (this.isUsingItem()) {
if (ItemStack.isSameItem(this.getItemInHand(this.getUsedItemHand()), this.useItem)) {
@@ -3141,6 +_,11 @@
return null;
} else {
double d = this.getEyeY() - 0.3F;
+ // Paper start
+ final ItemStack tmp = stack.copy();
+ stack.setCount(0);
+ stack = tmp;
+ // Paper end
ItemEntity itemEntity = new ItemEntity(this.level(), this.getX(), d, this.getZ(), stack);
itemEntity.setPickUpDelay(40);
if (includeThrower) {
@@ -3172,7 +_,12 @@
protected void updateUsingItem(ItemStack usingItem) {

View File

@@ -171,6 +171,19 @@
ItemStack item = inventory.getItem(button);
Slot slot = this.slots.get(slotId);
ItemStack carried = slot.getItem();
@@ -530,7 +_,11 @@
}
carried = slot2.safeTake(i1, Integer.MAX_VALUE, player);
- player.drop(carried, true);
+ // CraftBukkit start - SPIGOT-8010: break loop
+ if (player.drop(carried, true) == null) {
+ break;
+ }
+ // CraftBukkit end - SPIGOT-8010: break loop
player.handleCreativeModeItemDrop(carried);
}
}
@@ -590,8 +_,9 @@
if (player instanceof ServerPlayer) {
ItemStack carried = this.getCarried();