mirror of
https://github.com/PaperMC/Paper.git
synced 2025-07-26 09:42:06 -07:00
Update
This commit is contained in:
@@ -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);
|
||||
|
@@ -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) {
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user