You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft基岩版2.0.0-beta脚本API运行命令权限问题求助

解决Minecraft基岩版脚本API取消聊天并执行命令的权限问题

核心问题在于world.beforeEvents.chatSend的回调处于只读上下文,无法直接调用player.runCommand();而world.afterEvents.chatSend虽为读写上下文,却不支持取消聊天消息。

可行的解决方案是利用system.run()将命令执行逻辑转移到读写阶段:

"use strict";

import { world, system } from "@minecraft/server";

world.beforeEvents.chatSend.subscribe((event) => {
    event.cancel = true;
    const player = event.sender;
    
    // 通过system.run将命令执行放到读写上下文
    system.run(() => {
        try {
            player.runCommand("say hello");
        } catch (err) {
            console.error("命令执行失败: " + err);
        }
    });
    
    player.sendMessage("已执行say hello命令");
});

原理说明

system.run()会把传入的回调函数安排到下一个游戏tick的读写阶段执行,既保留了beforeEvents.chatSend取消聊天消息的能力,又绕过了只读上下文的权限限制。添加try-catch是为了捕获命令执行时可能出现的错误(比如权限不足、命令格式错误),避免脚本崩溃。

内容的提问来源于stack exchange,提问作者rawsome1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:37:06