javascript Minecraft基岩版@minecraft/服务器模块beforechat事件

46scxncf  于 2023-06-20  发布在  Java
关注(0)|答案(1)|浏览(126)
    • 清单依赖**
{
    "module_name": "@minecraft/server",
    "version": "1.2.0-beta"
},
    • Main. js**
import * as server from "@minecraft/server"

// This is the old version for listening to a chat event (1.1.0-beta):
server.world.events.beforeChat.subscribe(function (eventData) {
    let Player = eventData.sender
    let Message = eventData.message
    Player.tell($`[${Player}]: ${Message}`)
}

"server. world. events. beforeChat. subscribe"导致错误:*TypeError:无法读取未定义 * 的属性“subscribe
我想让服务器监听聊天消息事件,但我不确定在新版本中该如何实现。我看了一下微软的文档:

微软没有提供任何使用示例,我也找不到任何其他资源。

vc6uscn9

vc6uscn91#

对于最新版本的@minecraft-server,我将您的脚本更改为如下所示:

import * as server from "@minecraft/server"

server.world.beforeEvents.chatSend.subscribe(function (eventData) {
    let player = eventData.sender
    let message = eventData.message

    switch (message) {
        case "hello":
            player.sendMessage("Hello!")
            break
        case "!creative":
            eventData.cancel = true
            player.runCommand("gamemode c")
            break;
    }
})

我只是替换了这个函数,并放入了一个switch语句来检测玩家是否在聊天中发送了一个hello。请记住,使用sendMessage函数将始终保证在玩家消息之前发送。要解决这个问题,只需将beforeEvents更改为afterEvents。
在第二种情况下,我把“eventData.cancel = true”删除类似命令的球员消息。
记得在manifest.json中将@minecraft-server版本更新为1.3.0-beta!

"modules": [
    {
        "type": "script",
        "language": "javascript",
        "uuid": /*INSERT A UUID HERE*/,
        "entry": "scripts/main.js",
        "version": [
            1, 0, 0
        ]
    }
],
"dependencies": [
    {
        "module_name": "@minecraft/server",
        "version": "1.3.0-beta"
    }
]

我刚刚开始学习在基岩脚本,所以如果有任何问题在这里让我知道。

相关问题