mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-27 22:38:11 +01:00
Expose Hand during BlockCanBuildEvent (#9636)
This commit is contained in:
parent
60d2ea03ad
commit
24f6e17ded
2 changed files with 86 additions and 0 deletions
54
patches/api/Expose-hand-during-BlockCanBuildEvent.patch
Normal file
54
patches/api/Expose-hand-during-BlockCanBuildEvent.patch
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The456gamer <the456gamer@the456gamer.dev>
|
||||||
|
Date: Mon, 21 Aug 2023 14:13:43 +0100
|
||||||
|
Subject: [PATCH] Expose hand during BlockCanBuildEvent
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java
|
||||||
|
+++ b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java
|
||||||
|
@@ -0,0 +0,0 @@ public class BlockCanBuildEvent extends BlockEvent {
|
||||||
|
|
||||||
|
protected BlockData blockData;
|
||||||
|
private final Player player;
|
||||||
|
+ private final org.bukkit.inventory.EquipmentSlot hand; // Paper - expose hand
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public BlockCanBuildEvent(@NotNull final Block block, @NotNull final BlockData type, final boolean canBuild) {
|
||||||
|
- this(block, null, type, canBuild);
|
||||||
|
+ this(block, null, type, canBuild, org.bukkit.inventory.EquipmentSlot.HAND); // Paper - expose hand
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -0,0 +0,0 @@ public class BlockCanBuildEvent extends BlockEvent {
|
||||||
|
* @param type the id of the block to place
|
||||||
|
* @param canBuild whether we can build
|
||||||
|
*/
|
||||||
|
+ @java.lang.Deprecated // Paper
|
||||||
|
+ @io.papermc.paper.annotation.DoNotUse // Paper
|
||||||
|
public BlockCanBuildEvent(@NotNull final Block block, @Nullable final Player player, @NotNull final BlockData type, final boolean canBuild) {
|
||||||
|
+ this(block, player, type, canBuild, org.bukkit.inventory.EquipmentSlot.HAND); // Paper start - expose hand
|
||||||
|
+ }
|
||||||
|
+ @org.jetbrains.annotations.ApiStatus.Internal
|
||||||
|
+ public BlockCanBuildEvent(@NotNull final Block block, @Nullable final Player player, @NotNull final BlockData type, final boolean canBuild, @NotNull final org.bukkit.inventory.EquipmentSlot hand) { // Paper end - expose hand
|
||||||
|
super(block);
|
||||||
|
this.player = player;
|
||||||
|
this.buildable = canBuild;
|
||||||
|
this.blockData = type;
|
||||||
|
+ this.hand = hand; // Paper
|
||||||
|
+ }
|
||||||
|
+ // Paper start
|
||||||
|
+ /**
|
||||||
|
+ * Gets the hand the player will use to place the block
|
||||||
|
+ *
|
||||||
|
+ * @return the EquipmentSlot representing the players hand.
|
||||||
|
+ */
|
||||||
|
+ @NotNull
|
||||||
|
+ public org.bukkit.inventory.EquipmentSlot getHand() {
|
||||||
|
+ return hand;
|
||||||
|
}
|
||||||
|
+ // Paper end
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether or not the block can be built here.
|
32
patches/server/Expose-hand-during-BlockCanBuildEvent.patch
Normal file
32
patches/server/Expose-hand-during-BlockCanBuildEvent.patch
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The456gamer <the456gamer@the456gamer.dev>
|
||||||
|
Date: Mon, 21 Aug 2023 14:13:42 +0100
|
||||||
|
Subject: [PATCH] Expose hand during BlockCanBuildEvent
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/item/BlockItem.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java
|
||||||
|
@@ -0,0 +0,0 @@ public class BlockItem extends Item {
|
||||||
|
boolean defaultReturn = (!this.mustSurvive() || state.canSurvive(context.getLevel(), context.getClickedPos())) && world.checkEntityCollision(state, entityhuman, voxelshapecollision, context.getClickedPos(), true); // Paper
|
||||||
|
org.bukkit.entity.Player player = (context.getPlayer() instanceof ServerPlayer) ? (org.bukkit.entity.Player) context.getPlayer().getBukkitEntity() : null;
|
||||||
|
|
||||||
|
- BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(context.getLevel(), context.getClickedPos()), player, CraftBlockData.fromData(state), defaultReturn);
|
||||||
|
+ BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(context.getLevel(), context.getClickedPos()), player, CraftBlockData.fromData(state), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - expose hand
|
||||||
|
context.getLevel().getCraftServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
return event.isBuildable();
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java b/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java
|
||||||
|
@@ -0,0 +0,0 @@ public class StandingAndWallBlockItem extends BlockItem {
|
||||||
|
boolean defaultReturn = world.isUnobstructed(iblockdata1, blockposition, CollisionContext.empty());
|
||||||
|
org.bukkit.entity.Player player = (context.getPlayer() instanceof ServerPlayer) ? (org.bukkit.entity.Player) context.getPlayer().getBukkitEntity() : null;
|
||||||
|
|
||||||
|
- BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(world, blockposition), player, CraftBlockData.fromData(iblockdata1), defaultReturn);
|
||||||
|
+ BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(world, blockposition), player, CraftBlockData.fromData(iblockdata1), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - expose hand
|
||||||
|
context.getLevel().getCraftServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
return (event.isBuildable()) ? iblockdata1 : null;
|
Loading…
Add table
Reference in a new issue