Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4df26a83fe | ||
|
|
92b60b483d | ||
|
|
f2f609f0fe | ||
|
|
68e097f2b2 |
@@ -0,0 +1,53 @@
|
|||||||
|
--- a/src/main/java/io/papermc/paper/event/player/PlayerPickItemEvent.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/event/player/PlayerPickItemEvent.java
|
||||||
|
@@ -1,6 +_,8 @@
|
||||||
|
package io.papermc.paper.event.player;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
+import org.bukkit.Location;
|
||||||
|
+import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
@@ -21,14 +_,21 @@
|
||||||
|
|
||||||
|
private int targetSlot;
|
||||||
|
private int sourceSlot;
|
||||||
|
+ private final Location location;
|
||||||
|
+ private final Entity entity;
|
||||||
|
+ private boolean isRequestingData;
|
||||||
|
+
|
||||||
|
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
|
- 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, boolean isRequestingData) {
|
||||||
|
super(player);
|
||||||
|
this.targetSlot = targetSlot;
|
||||||
|
this.sourceSlot = sourceSlot;
|
||||||
|
+ this.location = location;
|
||||||
|
+ this.entity = entity;
|
||||||
|
+ this.isRequestingData = isRequestingData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -72,6 +_,18 @@
|
||||||
|
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");
|
||||||
|
this.sourceSlot = sourceSlot;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public @org.jetbrains.annotations.Nullable Location getLocation() {
|
||||||
|
+ return location;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public @org.jetbrains.annotations.Nullable Entity getEntity() {
|
||||||
|
+ return entity;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public boolean isRequestingData() {
|
||||||
|
+ return isRequestingData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@@ -16,6 +16,40 @@
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
// Paper start - Don't suggest if tab-complete is disabled
|
// Paper start - Don't suggest if tab-complete is disabled
|
||||||
|
@@ -977,7 +_,8 @@
|
||||||
|
addBlockDataToItem(blockState, serverLevel, blockPos, cloneItemStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
- this.tryPickItem(cloneItemStack);
|
||||||
|
+ Location location = new Location(this.player.getBukkitEntity().getWorld(), blockPos.getX(), blockPos.getY(), blockPos.getZ());
|
||||||
|
+ this.tryPickItem(cloneItemStack, location, null, flag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1001,12 +_,12 @@
|
||||||
|
if (entity != null && this.player.canInteractWithEntity(entity, 3.0)) {
|
||||||
|
ItemStack pickResult = entity.getPickResult();
|
||||||
|
if (pickResult != null && !pickResult.isEmpty()) {
|
||||||
|
- this.tryPickItem(pickResult);
|
||||||
|
+ this.tryPickItem(pickResult, null, entity.getBukkitEntity(), this.player.hasInfiniteMaterials() && packet.includeData());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- private void tryPickItem(ItemStack stack) {
|
||||||
|
+ private void tryPickItem(ItemStack stack, Location location, org.bukkit.entity.Entity entity, boolean isRequestingData) {
|
||||||
|
if (stack.isItemEnabled(this.player.level().enabledFeatures())) {
|
||||||
|
Inventory inventory = this.player.getInventory();
|
||||||
|
int i = inventory.findSlotMatchingItem(stack);
|
||||||
|
@@ -1014,7 +_,7 @@
|
||||||
|
final int sourceSlot = i;
|
||||||
|
final int targetSlot = Inventory.isHotbarSlot(sourceSlot) ? sourceSlot : inventory.getSuitableHotbarSlot();
|
||||||
|
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, location, entity, isRequestingData);
|
||||||
|
if (!event.callEvent()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
@@ -2497,6 +_,7 @@
|
@@ -2497,6 +_,7 @@
|
||||||
|
|
||||||
// Spigot start - spam exclusions
|
// Spigot start - spam exclusions
|
||||||
|
|||||||
@@ -16,21 +16,23 @@
|
|||||||
if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return state; // Paper - prevent noteblock instrument from updating
|
if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return state; // Paper - prevent noteblock instrument from updating
|
||||||
boolean flag = direction.getAxis() == Direction.Axis.Y;
|
boolean flag = direction.getAxis() == Direction.Axis.Y;
|
||||||
return flag
|
return flag
|
||||||
@@ -94,6 +_,7 @@
|
@@ -97,6 +_,7 @@
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston) {
|
|
||||||
+ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.POWERED, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level)).callEvent()) return;
|
|
||||||
if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return; // Paper - prevent noteblock powered-state from updating
|
if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return; // Paper - prevent noteblock powered-state from updating
|
||||||
boolean hasNeighborSignal = level.hasNeighborSignal(pos);
|
boolean hasNeighborSignal = level.hasNeighborSignal(pos);
|
||||||
if (hasNeighborSignal != state.getValue(POWERED)) {
|
if (hasNeighborSignal != state.getValue(POWERED)) {
|
||||||
@@ -125,7 +_,9 @@
|
+ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.POWERED, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level)).callEvent()) return;
|
||||||
|
if (hasNeighborSignal) {
|
||||||
|
this.playNote(null, state, level, pos);
|
||||||
|
state = level.getBlockState(pos); // CraftBukkit - SPIGOT-5617: update in case changed in event
|
||||||
|
@@ -125,7 +_,11 @@
|
||||||
@Override
|
@Override
|
||||||
protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) {
|
protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) {
|
||||||
if (!level.isClientSide) {
|
if (!level.isClientSide) {
|
||||||
- if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) state = state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating
|
- if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) state = state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating
|
||||||
+ if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates ||
|
+ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.PITCH, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level)).callEvent())
|
||||||
+ !new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.PITCH, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level)).callEvent())
|
+ return InteractionResult.SUCCESS;
|
||||||
|
+
|
||||||
|
+ if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates)
|
||||||
+ state = (BlockState) state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating
|
+ state = (BlockState) state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating
|
||||||
level.setBlock(pos, state, 3);
|
level.setBlock(pos, state, 3);
|
||||||
this.playNote(player, state, level, pos);
|
this.playNote(player, state, level, pos);
|
||||||
|
|||||||
Reference in New Issue
Block a user