Compare commits

...
Author SHA1 Message Date
Owen1212055 59f43ad200 Remove/Adjust diff that was changed based on this assumption 2024-12-26 17:47:36 -05:00
Owen1212055 6cc87f8fc0 Remove itemstack mutation on player drop method
This appears to cause alot of issues, as the general assumption when calling this method is that the itemstack would not be mutated.

The dupe that this was meant to resolve was patched.

Fixes #11520 / #11765
2024-12-26 17:35:39 -05:00
2 changed files with 1 additions and 35 deletions

No files matched your search

@@ -1,13 +1,5 @@
--- a/net/minecraft/server/commands/GiveCommand.java
+++ b/net/minecraft/server/commands/GiveCommand.java
@@ -51,6 +_,7 @@
private static int giveItem(CommandSourceStack source, ItemInput item, Collection<ServerPlayer> targets, int count) throws CommandSyntaxException {
ItemStack itemStack = item.createItemStack(1, false);
+ final Component displayName = itemStack.getDisplayName(); // Paper - get display name early
int maxStackSize = itemStack.getMaxStackSize();
int i = maxStackSize * 100;
if (count > i) {
@@ -66,7 +_,7 @@
ItemStack itemStack1 = item.createItemStack(min, false);
boolean flag = serverPlayer.getInventory().add(itemStack1);
@@ -17,17 +9,3 @@
if (itemEntity != null) {
itemEntity.makeFakeItem();
}
@@ -95,11 +_,11 @@
if (targets.size() == 1) {
source.sendSuccess(
- () -> Component.translatable("commands.give.success.single", count, itemStack.getDisplayName(), targets.iterator().next().getDisplayName()),
+ () -> Component.translatable("commands.give.success.single", count, displayName, targets.iterator().next().getDisplayName()), // Paper - use cached display name
true
);
} else {
- source.sendSuccess(() -> Component.translatable("commands.give.success.single", count, itemStack.getDisplayName(), targets.size()), true);
+ source.sendSuccess(() -> Component.translatable("commands.give.success.single", count, displayName, targets.size()), true); // Paper - use cached display name
}
return targets.size();
@@ -1382,7 +1382,7 @@
if (traceItem) {
if (!item.isEmpty()) {
- this.awardStat(Stats.ITEM_DROPPED.get(item.getItem()), droppedItem.getCount());
+ this.awardStat(Stats.ITEM_DROPPED.get(item.getItem()), item.getCount()); // Paper - Fix PlayerDropItemEvent using wrong item
+ this.awardStat(Stats.ITEM_DROPPED.get(item.getItem()), item.getCount()); // Paper - Use updated count on item provided from event
}
this.awardStat(Stats.DROP);
@@ -1399,18 +1399,6 @@
return itemEntity;
}
}
@@ -1955,6 +_,11 @@
return null;
} else {
double d = this.getEyeY() - 0.3F;
+ // Paper start
+ ItemStack tmp = droppedItem.copy();
+ droppedItem.setCount(0);
+ droppedItem = tmp;
+ // Paper end
ItemEntity itemEntity = new ItemEntity(this.level(), this.getX(), d, this.getZ(), droppedItem);
itemEntity.setPickUpDelay(40);
if (includeThrowerName) {
@@ -2008,6 +_,16 @@
}