PaperMC/paper-server/patches/sources/net/minecraft/world/item/StandingAndWallBlockItem.java.patch
2024-12-14 12:50:23 -08:00

24 lines
1.4 KiB
Diff

--- a/net/minecraft/world/item/StandingAndWallBlockItem.java
+++ b/net/minecraft/world/item/StandingAndWallBlockItem.java
@@ -42,7 +_,20 @@
}
}
- return blockState != null && level.isUnobstructed(blockState, clickedPos, CollisionContext.empty()) ? blockState : null;
+ // return blockState != null && level.isUnobstructed(blockState, clickedPos, CollisionContext.empty()) ? blockState : null;
+ // CraftBukkit start
+ if (blockState != null) {
+ boolean defaultReturn = level.isUnobstructed(blockState, clickedPos, CollisionContext.empty());
+ org.bukkit.entity.Player player = (context.getPlayer() instanceof net.minecraft.server.level.ServerPlayer) ? (org.bukkit.entity.Player) context.getPlayer().getBukkitEntity() : null;
+
+ org.bukkit.event.block.BlockCanBuildEvent event = new org.bukkit.event.block.BlockCanBuildEvent(org.bukkit.craftbukkit.block.CraftBlock.at(context.getLevel(), clickedPos), player, org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(blockState), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - Expose hand in BlockCanBuildEvent
+ context.getLevel().getCraftServer().getPluginManager().callEvent(event);
+
+ return (event.isBuildable()) ? blockState : null;
+ } else {
+ return null;
+ }
+ // CraftBukkit end
}
@Override