2021-06-21 07:12:04 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sun, 20 Jun 2021 21:55:59 -0700
Subject: [PATCH] Fix PlayerDropItemEvent using wrong item
2024-04-26 18:22:55 +02:00
diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java
index c81fd3e1108fb0a02f9240263404af2b968c8494..0d9de4c61c7b26a6ff37c12fde629161fd0c3d5a 100644
--- a/src/main/java/net/minecraft/server/commands/GiveCommand.java
+++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java
@@ -38,6 +38,7 @@ public class GiveCommand {
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 j = itemstack.getMaxStackSize();
int k = j * 100;
@@ -79,11 +80,11 @@ public class GiveCommand {
if (targets.size() == 1) {
source.sendSuccess(() -> {
- return Component.translatable("commands.give.success.single", count, itemstack.getDisplayName(), ((ServerPlayer) targets.iterator().next()).getDisplayName());
+ return Component.translatable("commands.give.success.single", count, displayName, ((ServerPlayer) targets.iterator().next()).getDisplayName()); // Paper - use cached display name
}, true);
} else {
source.sendSuccess(() -> {
- return Component.translatable("commands.give.success.single", count, itemstack.getDisplayName(), targets.size());
+ return Component.translatable("commands.give.success.single", count, displayName, targets.size()); // Paper - use cached display name
}, true);
}
2021-08-06 18:46:25 +02:00
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
2024-11-29 02:39:40 +01:00
index bbbf48a43c48ba0db7ee74a8b9a1f1beeb211f68..286876246559eb38d6aa591c79afceb63d561aeb 100644
2021-08-06 18:46:25 +02:00
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
2024-11-26 18:46:12 +01:00
@@ -2744,7 +2744,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
2021-08-06 18:46:25 +02:00
2024-07-06 21:19:14 +02:00
if (flag1) {
2021-08-06 18:46:25 +02:00
if (!itemstack1.isEmpty()) {
2024-07-06 21:19:14 +02:00
- this.awardStat(Stats.ITEM_DROPPED.get(itemstack1.getItem()), itemstack.getCount());
2024-01-19 13:22:30 +01:00
+ this.awardStat(Stats.ITEM_DROPPED.get(itemstack1.getItem()), itemstack1.getCount()); // Paper - Fix PlayerDropItemEvent using wrong item
2021-08-06 18:46:25 +02:00
}
this.awardStat(Stats.DROP);
2024-11-26 18:46:12 +01:00
@@ -2760,6 +2760,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
2024-10-23 20:15:25 +02:00
return null;
} else {
2021-06-21 07:12:04 +02:00
double d0 = this.getEyeY() - 0.30000001192092896D;
+ // Paper start
2024-10-23 20:15:25 +02:00
+ ItemStack tmp = stack.copy();
+ stack.setCount(0);
+ stack = tmp;
2021-06-21 07:12:04 +02:00
+ // Paper end
2024-10-23 20:15:25 +02:00
ItemEntity entityitem = new ItemEntity(this.level(), this.getX(), d0, this.getZ(), stack);
2021-06-21 07:12:04 +02:00
entityitem.setPickUpDelay(40);