Skip to content

Commit 47aefa5

Browse files
committed
Fix block pick request handler
1 parent 262c9ef commit 47aefa5

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

server/src/main/java/org/cloudburstmc/server/player/CloudPlayer.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ public class CloudPlayer extends EntityHuman implements CommandSender, ChunkLoad
238238
public long lastSkinChange;
239239

240240
@Getter
241-
@Setter
242241
private int selectedHotbarSlot = 0;
243242

244243
public CloudPlayer(BedrockServerSession session, ClientChainData chainData) {
@@ -3291,6 +3290,16 @@ public void sendHeldItemSlot() {
32913290
this.onInventorySlotChange(this.container, this.selectedHotbarSlot);
32923291
}
32933292

3293+
public void setSelectedHotbarSlot(int slot) {
3294+
this.selectedHotbarSlot = slot;
3295+
3296+
PlayerHotbarPacket packet = new PlayerHotbarPacket();
3297+
packet.setSelectedHotbarSlot(slot);
3298+
packet.setContainerId(ContainerId.INVENTORY);
3299+
packet.setSelectHotbarSlot(true);
3300+
this.sendPacket(packet);
3301+
}
3302+
32943303
public void sendInventoryContents() {
32953304
this.onInventoryContentsChange(this.container);
32963305
}

server/src/main/java/org/cloudburstmc/server/player/handler/PlayerPacketHandler.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -767,9 +767,18 @@ public PacketSignal handle(InteractPacket packet) {
767767

768768
@Override
769769
public PacketSignal handle(BlockPickRequestPacket packet) {
770+
if (player.isSpectator()) {
771+
log.debug("Got block-pick request from " + player.getName() + " when in spectator mode");
772+
return PacketSignal.HANDLED;
773+
}
774+
770775
Vector3i pickPos = packet.getBlockPosition();
771776
Block block = player.getLevel().getBlock(pickPos.getX(), pickPos.getY(), pickPos.getZ());
772777

778+
if (block.getState().getType() == AIR) {
779+
log.debug("Got block-pick request from " + player.getName() + " for air block");
780+
return PacketSignal.HANDLED;
781+
}
773782

774783
ItemStack serverItem = ItemStack.from(block.getState());
775784

@@ -788,11 +797,6 @@ public PacketSignal handle(BlockPickRequestPacket packet) {
788797
}
789798

790799
PlayerBlockPickEvent pickEvent = new PlayerBlockPickEvent(player, block, serverItem);
791-
if (player.isSpectator()) {
792-
log.debug("Got block-pick request from " + player.getName() + " when in spectator mode");
793-
pickEvent.setCancelled();
794-
}
795-
796800
player.getServer().getEventManager().fire(pickEvent);
797801

798802
if (!pickEvent.isCancelled()) {

0 commit comments

Comments
 (0)