方块交互 (Block Interactions)

预计阅读时间: 2 分钟

右键点击方块、破坏方块等

此页面上列出的所有方块事件都可以放在 server_scripts/client_scripts/ 中。

破坏事件 (Broken Event)

方块破坏事件是可取消的。

以下是一个在石头被破坏后用圆石替换它的示例。

1.19.2+ 1.18.2及以下

BlockEvents.broken('minecraft:stone', event => {
  event.block.set('minecraft:cobblestone')
  event.cancel()
})
onEvent('block.break', event => {
  if(event.block.id != 'minecraft:stone') return
  event.block.set('minecraft:cobblestone')
  event.cancel()
})

探测器事件 (Detector Events)

WIP

耕地踩踏事件 (Farmland Trampled Event)

耕地踩踏事件是可取消的。

耕地踩踏事件仅在1.19.2及更高版本上存在!

以下是一个当玩家穿着带有摔落保护4附魔的靴子时取消事件的示例。

BlockEvents.farmlandTrampled(event => {
  if(event.player.feetArmorItem.hasEnchantment('minecraft:feather_falling', 4)) event.cancel()
})

左键点击事件 (Left Clicked Event)

左键点击事件是可取消的。

以下是一个在左键点击沙子时给予玩家石头并移除沙子的示例。

1.19.2+ 1.18.2及以下

BlockEvents.leftClicked('minecraft:sand', event => {
  event.player.give('minecraft:cobblestone')
  event.block.set('minecraft:air')
})
onEvent('block.left_click', event => {
  if(event.block.id != 'minecraft:sand') return
  event.player.give('minecraft:cobblestone')
  event.block.set('minecraft:air')
})

放置事件 (Placed Event)

方块放置事件是可取消的。

以下是一个在放置工作台时用橡木原木替换它的示例。

1.19.2+ 1.18.2及以下

BlockEvents.placed('minecraft:crafting_table', event => {
  event.player.tell('NO CRAFTING FOR YOU')
  event.block.set('minecraft:oak_log')
})
onEvent('block.place', event => {
  if(event.block.id != 'minecraft:crafting_table') return
  event.player.tell('NO CRAFTING FOR YOU')
  event.block.set('minecraft:oak_log')
})

右键点击事件 (Right Clicked Event)

右键点击事件是可取消的。

以下是一个在右键点击箱子时取消事件的示例。

1.19.2+ 1.18.2及以下

BlockEvents.rightClicked('minecraft:chest', event => event.cancel())
onEvent('block.right_click', event => {
  if(event.block.id == 'minecraft:chest') event.cancel()
})