#1272: Only allow one entity in CraftItem instead of two

This pr reverts a change made in 2012 which allowed CraftItem to be a also other entities such as an arrow.
I don't see any practical reason why the original change was done, other than to allow plugin developers to do some stuff in a cursed way.
With the introduction of the PlayerPickupArrowEvent in 2016 there is also a way to access the arrow involved in a better way.
Generally I think the current behavior is a bit strange and should be reverted.

By: DerFrZocker <derrieple@gmail.com>
This commit is contained in:
CraftBukkit/Spigot
2023-10-06 07:16:11 +11:00
parent 39de862c02
commit c4c6bf8a92
2 changed files with 19 additions and 21 deletions

View File

@@ -46,7 +46,7 @@
+ ItemStack itemstack = this.getPickupItem();
+ if (this.pickup == PickupStatus.ALLOWED && !itemstack.isEmpty() && entityhuman.getInventory().canHold(itemstack) > 0) {
+ EntityItem item = new EntityItem(this.level(), this.getX(), this.getY(), this.getZ(), itemstack);
+ PlayerPickupArrowEvent event = new PlayerPickupArrowEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), new org.bukkit.craftbukkit.entity.CraftItem(this.level().getCraftServer(), this, item), (org.bukkit.entity.AbstractArrow) this.getBukkitEntity());
+ PlayerPickupArrowEvent event = new PlayerPickupArrowEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), new org.bukkit.craftbukkit.entity.CraftItem(this.level().getCraftServer(), item), (org.bukkit.entity.AbstractArrow) this.getBukkitEntity());
+ // event.setCancelled(!entityhuman.canPickUpLoot); TODO
+ this.level().getCraftServer().getPluginManager().callEvent(event);
+