mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-06 08:17:44 +01:00
PlayerAttemptPickupItemEvent
This commit is contained in:
parent
eb52c5e2f2
commit
8eb7ab6946
@ -27,7 +27,7 @@
|
|||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
@@ -33,6 +20,26 @@
|
@@ -33,6 +20,27 @@
|
||||||
import net.minecraft.world.level.gameevent.GameEvent;
|
import net.minecraft.world.level.gameevent.GameEvent;
|
||||||
import net.minecraft.world.level.portal.TeleportTransition;
|
import net.minecraft.world.level.portal.TeleportTransition;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
@ -51,10 +51,11 @@
|
|||||||
+import org.bukkit.event.entity.EntityRemoveEvent;
|
+import org.bukkit.event.entity.EntityRemoveEvent;
|
||||||
+import org.bukkit.event.player.PlayerPickupItemEvent;
|
+import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||||
+// CraftBukkit end
|
+// CraftBukkit end
|
||||||
|
+import org.bukkit.event.player.PlayerAttemptPickupItemEvent; // Paper
|
||||||
|
|
||||||
public class ItemEntity extends Entity implements TraceableEntity {
|
public class ItemEntity extends Entity implements TraceableEntity {
|
||||||
|
|
||||||
@@ -52,6 +59,8 @@
|
@@ -52,6 +60,8 @@
|
||||||
@Nullable
|
@Nullable
|
||||||
public UUID target;
|
public UUID target;
|
||||||
public final float bobOffs;
|
public final float bobOffs;
|
||||||
@ -63,7 +64,7 @@
|
|||||||
|
|
||||||
public ItemEntity(EntityType<? extends ItemEntity> type, Level world) {
|
public ItemEntity(EntityType<? extends ItemEntity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
@@ -133,12 +142,15 @@
|
@@ -133,12 +143,15 @@
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
if (this.getItem().isEmpty()) {
|
if (this.getItem().isEmpty()) {
|
||||||
@ -83,7 +84,7 @@
|
|||||||
|
|
||||||
this.xo = this.getX();
|
this.xo = this.getX();
|
||||||
this.yo = this.getY();
|
this.yo = this.getY();
|
||||||
@@ -188,9 +200,11 @@
|
@@ -188,9 +201,11 @@
|
||||||
this.mergeWithNeighbours();
|
this.mergeWithNeighbours();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +96,7 @@
|
|||||||
|
|
||||||
this.hasImpulse |= this.updateInWaterStateAndDoFluidPushing();
|
this.hasImpulse |= this.updateInWaterStateAndDoFluidPushing();
|
||||||
if (!this.level().isClientSide) {
|
if (!this.level().isClientSide) {
|
||||||
@@ -201,14 +215,42 @@
|
@@ -201,14 +216,42 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +141,7 @@
|
|||||||
public BlockPos getBlockPosBelowThatAffectsMyMovement() {
|
public BlockPos getBlockPosBelowThatAffectsMyMovement() {
|
||||||
return this.getOnPos(0.999999F);
|
return this.getOnPos(0.999999F);
|
||||||
}
|
}
|
||||||
@@ -229,7 +271,10 @@
|
@@ -229,7 +272,10 @@
|
||||||
|
|
||||||
private void mergeWithNeighbours() {
|
private void mergeWithNeighbours() {
|
||||||
if (this.isMergable()) {
|
if (this.isMergable()) {
|
||||||
@ -152,7 +153,7 @@
|
|||||||
return entityitem != this && entityitem.isMergable();
|
return entityitem != this && entityitem.isMergable();
|
||||||
});
|
});
|
||||||
Iterator iterator = list.iterator();
|
Iterator iterator = list.iterator();
|
||||||
@@ -259,7 +304,7 @@
|
@@ -259,7 +305,7 @@
|
||||||
ItemStack itemstack1 = other.getItem();
|
ItemStack itemstack1 = other.getItem();
|
||||||
|
|
||||||
if (Objects.equals(this.target, other.target) && ItemEntity.areMergable(itemstack, itemstack1)) {
|
if (Objects.equals(this.target, other.target) && ItemEntity.areMergable(itemstack, itemstack1)) {
|
||||||
@ -161,7 +162,7 @@
|
|||||||
ItemEntity.merge(this, itemstack, other, itemstack1);
|
ItemEntity.merge(this, itemstack, other, itemstack1);
|
||||||
} else {
|
} else {
|
||||||
ItemEntity.merge(other, itemstack1, this, itemstack);
|
ItemEntity.merge(other, itemstack1, this, itemstack);
|
||||||
@@ -287,11 +332,16 @@
|
@@ -287,11 +333,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void merge(ItemEntity targetEntity, ItemStack targetStack, ItemEntity sourceEntity, ItemStack sourceStack) {
|
private static void merge(ItemEntity targetEntity, ItemStack targetStack, ItemEntity sourceEntity, ItemStack sourceStack) {
|
||||||
@ -179,7 +180,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -320,12 +370,17 @@
|
@@ -320,12 +371,17 @@
|
||||||
} else if (!this.getItem().canBeHurtBy(source)) {
|
} else if (!this.getItem().canBeHurtBy(source)) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@ -198,7 +199,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -382,22 +437,70 @@
|
@@ -382,22 +438,86 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.getItem().isEmpty()) {
|
if (this.getItem().isEmpty()) {
|
||||||
@ -221,6 +222,22 @@
|
|||||||
+ int remaining = i - canHold;
|
+ int remaining = i - canHold;
|
||||||
+ boolean flyAtPlayer = false; // Paper
|
+ boolean flyAtPlayer = false; // Paper
|
||||||
+
|
+
|
||||||
|
+ // Paper start - PlayerAttemptPickupItemEvent
|
||||||
|
+ if (this.pickupDelay <= 0) {
|
||||||
|
+ PlayerAttemptPickupItemEvent attemptEvent = new PlayerAttemptPickupItemEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.Item) this.getBukkitEntity(), remaining);
|
||||||
|
+ this.level().getCraftServer().getPluginManager().callEvent(attemptEvent);
|
||||||
|
+
|
||||||
|
+ flyAtPlayer = attemptEvent.getFlyAtPlayer();
|
||||||
|
+ if (attemptEvent.isCancelled()) {
|
||||||
|
+ if (flyAtPlayer) {
|
||||||
|
+ player.take(this, i);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ // Paper end - PlayerAttemptPickupItemEvent
|
||||||
|
+
|
||||||
+ if (this.pickupDelay <= 0 && canHold > 0) {
|
+ if (this.pickupDelay <= 0 && canHold > 0) {
|
||||||
+ itemstack.setCount(canHold);
|
+ itemstack.setCount(canHold);
|
||||||
+ // Call legacy event
|
+ // Call legacy event
|
||||||
@ -272,7 +289,7 @@
|
|||||||
itemstack.setCount(i);
|
itemstack.setCount(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,7 +595,7 @@
|
@@ -492,7 +612,7 @@
|
||||||
|
|
||||||
public void makeFakeItem() {
|
public void makeFakeItem() {
|
||||||
this.setNeverPickUp();
|
this.setNeverPickUp();
|
||||||
|
Loading…
Reference in New Issue
Block a user