add data request to event (ctrl+pickblock)
This commit is contained in:
@@ -9,27 +9,30 @@
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
@@ -22,13 +_,18 @@
|
@@ -21,14 +_,21 @@
|
||||||
|
|
||||||
private int targetSlot;
|
private int targetSlot;
|
||||||
private int sourceSlot;
|
private int sourceSlot;
|
||||||
|
+ private final Location location;
|
||||||
+ private Location location;
|
+ private final Entity entity;
|
||||||
+ private Entity entity;
|
+ private boolean isRequestingData;
|
||||||
+
|
+
|
||||||
|
|
||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
- public PlayerPickItemEvent(final Player player, final int targetSlot, final int sourceSlot) {
|
- public PlayerPickItemEvent(final Player player, final int targetSlot, final int sourceSlot) {
|
||||||
+ public PlayerPickItemEvent(final Player player, final int targetSlot, final int sourceSlot, final Location location, final Entity entity) {
|
+ public PlayerPickItemEvent(final Player player, final int targetSlot, final int sourceSlot, final Location location, final Entity entity, boolean isRequestingData) {
|
||||||
super(player);
|
super(player);
|
||||||
this.targetSlot = targetSlot;
|
this.targetSlot = targetSlot;
|
||||||
this.sourceSlot = sourceSlot;
|
this.sourceSlot = sourceSlot;
|
||||||
+ this.location = location;
|
+ this.location = location;
|
||||||
+ this.entity = entity;
|
+ this.entity = entity;
|
||||||
|
+ this.isRequestingData = isRequestingData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,6 +_,14 @@
|
@@ -72,6 +_,18 @@
|
||||||
public void setSourceSlot(final @Range(from = -1, to = 35) int sourceSlot) {
|
public void setSourceSlot(final @Range(from = -1, to = 35) int sourceSlot) {
|
||||||
Preconditions.checkArgument(sourceSlot >= -1 && sourceSlot <= 35, "Source slot must be in range of the player's inventory slot, or -1");
|
Preconditions.checkArgument(sourceSlot >= -1 && sourceSlot <= 35, "Source slot must be in range of the player's inventory slot, or -1");
|
||||||
this.sourceSlot = sourceSlot;
|
this.sourceSlot = sourceSlot;
|
||||||
@@ -41,6 +44,10 @@
|
|||||||
+
|
+
|
||||||
+ public @org.jetbrains.annotations.Nullable Entity getEntity() {
|
+ public @org.jetbrains.annotations.Nullable Entity getEntity() {
|
||||||
+ return entity;
|
+ return entity;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public boolean isRequestingData() {
|
||||||
|
+ return isRequestingData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
- this.tryPickItem(cloneItemStack);
|
- this.tryPickItem(cloneItemStack);
|
||||||
+ Location location = new Location(this.player.getBukkitEntity().getWorld(), blockPos.getX(), blockPos.getY(), blockPos.getZ());
|
+ Location location = new Location(this.player.getBukkitEntity().getWorld(), blockPos.getX(), blockPos.getY(), blockPos.getZ());
|
||||||
+ this.tryPickItem(cloneItemStack, location, null);
|
+ this.tryPickItem(cloneItemStack, location, null, flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,13 +31,13 @@
|
|||||||
ItemStack pickResult = entity.getPickResult();
|
ItemStack pickResult = entity.getPickResult();
|
||||||
if (pickResult != null && !pickResult.isEmpty()) {
|
if (pickResult != null && !pickResult.isEmpty()) {
|
||||||
- this.tryPickItem(pickResult);
|
- this.tryPickItem(pickResult);
|
||||||
+ this.tryPickItem(pickResult, null, entity.getBukkitEntity());
|
+ this.tryPickItem(pickResult, null, entity.getBukkitEntity(), this.player.hasInfiniteMaterials() && packet.includeData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- private void tryPickItem(ItemStack stack) {
|
- private void tryPickItem(ItemStack stack) {
|
||||||
+ private void tryPickItem(ItemStack stack, Location location, org.bukkit.entity.Entity entity) {
|
+ private void tryPickItem(ItemStack stack, Location location, org.bukkit.entity.Entity entity, boolean isRequestingData) {
|
||||||
if (stack.isItemEnabled(this.player.level().enabledFeatures())) {
|
if (stack.isItemEnabled(this.player.level().enabledFeatures())) {
|
||||||
Inventory inventory = this.player.getInventory();
|
Inventory inventory = this.player.getInventory();
|
||||||
int i = inventory.findSlotMatchingItem(stack);
|
int i = inventory.findSlotMatchingItem(stack);
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
final int targetSlot = Inventory.isHotbarSlot(sourceSlot) ? sourceSlot : inventory.getSuitableHotbarSlot();
|
final int targetSlot = Inventory.isHotbarSlot(sourceSlot) ? sourceSlot : inventory.getSuitableHotbarSlot();
|
||||||
final org.bukkit.entity.Player bukkitPlayer = this.player.getBukkitEntity();
|
final org.bukkit.entity.Player bukkitPlayer = this.player.getBukkitEntity();
|
||||||
- final io.papermc.paper.event.player.PlayerPickItemEvent event = new io.papermc.paper.event.player.PlayerPickItemEvent(bukkitPlayer, targetSlot, sourceSlot);
|
- final io.papermc.paper.event.player.PlayerPickItemEvent event = new io.papermc.paper.event.player.PlayerPickItemEvent(bukkitPlayer, targetSlot, sourceSlot);
|
||||||
+ final io.papermc.paper.event.player.PlayerPickItemEvent event = new io.papermc.paper.event.player.PlayerPickItemEvent(bukkitPlayer, targetSlot, sourceSlot, location, entity);
|
+ final io.papermc.paper.event.player.PlayerPickItemEvent event = new io.papermc.paper.event.player.PlayerPickItemEvent(bukkitPlayer, targetSlot, sourceSlot, location, entity, isRequestingData);
|
||||||
if (!event.callEvent()) {
|
if (!event.callEvent()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user