Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-18 20:40:08 +01:00
[Bleeding] Use player.getItemInHand(), instead of a new ItemStack. Addresses BUKKIT-767
Dieser Commit ist enthalten in:
Ursprung
70c5f06425
Commit
d7f6d2d929
@ -47,7 +47,7 @@ public class ItemBed extends Item {
|
||||
world.setTypeIdAndData(i, j, k, blockbed.id, i1);
|
||||
|
||||
// CraftBukkit start - bed
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, blockbed);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
event.getBlockPlaced().setTypeIdAndData(blockState.getTypeId(), blockState.getRawData(), false);
|
||||
|
@ -68,7 +68,7 @@ public class ItemBlock extends Item {
|
||||
|
||||
world.suppressPhysics = true;
|
||||
world.setTypeIdAndData(i, j, k, id, this.filterData(itemstack.getData()));
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ, block);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ);
|
||||
id = world.getTypeId(i, j, k);
|
||||
int data = world.getData(i, j, k);
|
||||
replacedBlockState.update(true);
|
||||
|
@ -97,7 +97,7 @@ public class ItemDoor extends Item {
|
||||
world.setTypeIdAndData(i, j, k, block.id, l);
|
||||
// CraftBukkit start
|
||||
if (entityhuman != null) {
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, block);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
event.getBlockPlaced().setTypeIdAndData(blockState.getTypeId(), blockState.getRawData(), false);
|
||||
|
@ -68,7 +68,7 @@ public class ItemFlintAndSteel extends Item {
|
||||
world.setTypeId(i, j, k, Block.FIRE.id);
|
||||
|
||||
// CraftBukkit start
|
||||
BlockPlaceEvent placeEvent = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, Block.FIRE.id);
|
||||
BlockPlaceEvent placeEvent = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ);
|
||||
|
||||
if (placeEvent.isCancelled() || !placeEvent.canBuild()) {
|
||||
placeEvent.getBlockPlaced().setTypeIdAndData(0, (byte) 0, false);
|
||||
|
@ -35,7 +35,7 @@ public class ItemHoe extends Item {
|
||||
world.setTypeId(i, j, k, block.id);
|
||||
|
||||
// CraftBukkit start - Hoes - blockface -1 for 'SELF'
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, block);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
event.getBlockPlaced().setTypeId(blockState.getTypeId());
|
||||
|
@ -55,7 +55,7 @@ public class ItemRedstone extends Item {
|
||||
world.suppressPhysics = true;
|
||||
world.setRawTypeId(i, j, k, Block.REDSTONE_WIRE.id); // We update after the event
|
||||
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, Block.REDSTONE_WIRE);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ);
|
||||
blockState.update(true);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
|
@ -68,7 +68,7 @@ public class ItemReed extends Item {
|
||||
* replace this with.
|
||||
*/
|
||||
if (world.setRawTypeId(i, j, k, this.id)) { // <-- world.e does this to place the block
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ, block);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
// CraftBukkit - undo; this only has reed, repeater and pie blocks
|
||||
|
@ -29,7 +29,7 @@ public class ItemSeeds extends Item {
|
||||
world.setTypeId(i, j + 1, k, this.id);
|
||||
|
||||
// CraftBukkit start - seeds
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, this.id);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
event.getBlockPlaced().setTypeId(0);
|
||||
|
@ -57,7 +57,7 @@ public class ItemSign extends Item {
|
||||
}
|
||||
|
||||
// CraftBukkit start - sign
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, l == 1 ? Block.SIGN_POST : Block.WALL_SIGN);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
event.getBlockPlaced().setTypeIdAndData(blockState.getTypeId(), blockState.getRawData(), false);
|
||||
|
@ -37,7 +37,7 @@ public class ItemWaterLily extends ItemColoredBlock {
|
||||
world.setTypeId(i, j + 1, k, Block.WATER_LILY.id);
|
||||
|
||||
// CraftBukkit start - waterlily
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, Block.WATER_LILY.id);
|
||||
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k);
|
||||
|
||||
if (event.isCancelled() || !event.canBuild()) {
|
||||
event.getBlockPlaced().setTypeId(0);
|
||||
|
@ -64,27 +64,18 @@ public class CraftEventFactory {
|
||||
/**
|
||||
* Block place methods
|
||||
*/
|
||||
public static BlockPlaceEvent callBlockPlaceEvent(World world, EntityHuman who, BlockState replacedBlockState, int clickedX, int clickedY, int clickedZ, int type) {
|
||||
return callBlockPlaceEvent(world, who, replacedBlockState, clickedX, clickedY, clickedZ, net.minecraft.server.Block.byId[type]);
|
||||
}
|
||||
|
||||
public static BlockPlaceEvent callBlockPlaceEvent(World world, EntityHuman who, BlockState replacedBlockState, int clickedX, int clickedY, int clickedZ, net.minecraft.server.Block block) {
|
||||
return callBlockPlaceEvent(world, who, replacedBlockState, clickedX, clickedY, clickedZ, new ItemStack(block));
|
||||
}
|
||||
|
||||
public static BlockPlaceEvent callBlockPlaceEvent(World world, EntityHuman who, BlockState replacedBlockState, int clickedX, int clickedY, int clickedZ, ItemStack itemstack) {
|
||||
public static BlockPlaceEvent callBlockPlaceEvent(World world, EntityHuman who, BlockState replacedBlockState, int clickedX, int clickedY, int clickedZ) {
|
||||
CraftWorld craftWorld = ((WorldServer) world).getWorld();
|
||||
CraftServer craftServer = ((WorldServer) world).getServer();
|
||||
|
||||
Player player = (who == null) ? null : (Player) who.getBukkitEntity();
|
||||
CraftItemStack itemInHand = new CraftItemStack(itemstack);
|
||||
|
||||
Block blockClicked = craftWorld.getBlockAt(clickedX, clickedY, clickedZ);
|
||||
Block placedBlock = replacedBlockState.getBlock();
|
||||
|
||||
boolean canBuild = canBuild(craftWorld, player, placedBlock.getX(), placedBlock.getZ());
|
||||
|
||||
BlockPlaceEvent event = new BlockPlaceEvent(placedBlock, replacedBlockState, blockClicked, itemInHand, player, canBuild);
|
||||
BlockPlaceEvent event = new BlockPlaceEvent(placedBlock, replacedBlockState, blockClicked, player.getItemInHand(), player, canBuild);
|
||||
craftServer.getPluginManager().callEvent(event);
|
||||
|
||||
return event;
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren