20.3.4 global[] 的使用


global[] 可以允许你在不重启游戏的情况下重新加载部分Startup阶段的脚本,或用于储存信息等。

一、Forge事件

以1.16.5中的Forge事件为例,其可改写为

// 使用global改写前
onForgeEvent("net.minecraftforge.event.entity.player.PlayerEvent$PlayerChangedDimensionEvent", event=>{
    event.player.sendStatusMessage("你来到了" + event.getTo().getLocation(), false)
})


// 使用global改写后
onForgeEvent('net.minecraftforge.event.entity.player.PlayerEvent$PlayerChangedDimensionEvent', event => {
    global['test_id'](event);
});

global['test_id'] = (event) => {
    event.player.sendStatusMessage("你来到了" + event.getTo().getLocation(), false)
}

改写后,你可以修改 global['test_id']的内容来在不重启游戏的情况下重新加载Forge事件内容,你可以使用 /kubejs reload startup_scripts 来重载该函数。

二、内容注册中的部分事件

类似地,部分内容注册中的事件也可以使用global改写(例如第七章 自定义方块中使用到的RandomTickEvent ):

与之类似的还有食用食物的ItemFoodEatenEvent等,在此就不再赘述了。

三、存储数据

以下以存储玩家登入信息为例:

效果:

这有帮助吗?