Skip to content

认识KubeJS的文件夹

kjs在第一次运行后,会在版本文件夹下创建一个自己的魔改文件夹 kubejs ,在该目录里有如下文件夹,下面会介绍这些文件夹所存放的类型。

assets
data
client_scripts
config
server_scripts
startup_scripts

资源Assets

assets 其结构如下所示assets/<namespace>/...

其中namespace为命名空间,命名空间可以不止一个

如原版的命名空间为 minecraft,是存放游戏各类资源文件的目录,例如:
语言(lang)纹理(textures) 等。

详情查看minecraft wiki(#资源包#文件结构)

注意

建议将此处的资源文件仅用于服务自己使用kubejs创作的内容,而不要用于覆盖其他模组/资源包同名命名空间中的内容,即只使用自己的命名空间,避免与其他mod的命名空间同名,原因会在稍后的数据/资源包加载优先级处解释。

数据Data

data 其结构如下所示data/<namespace>/...

其中namespace为命名空间,命名空间可以不止一个

如原版的命名空间为 minecraft ,是存放游戏各类数据文件的目录,例如:
标签(tags)进度(advancement)战利品表(loot_table) 等。

详情查看minecraft wiki(#数据包#文件结构)

注意

建议将此处的数据文件仅用于服务自己使用kubejs创作的内容,而不要用于覆盖其他模组/数据包同名命名空间中的内容,即只使用自己的命名空间,避免与其他mod的命名空间同名,原因会在稍后的数据/资源包加载优先级处解释。

数据/资源包细则

优先级

数据/资源包加载优先级

当你在游戏设置中,点击选项->资源包... 你会打开选择加载资源包的界面,同样的,数据包也有一个界面,它在创建新的世界->更多->数据包,在我们此处讨论的加载优先级问题二者没有区别,因此我们拿更加熟悉的资源包加载举例。

加载优先级

注:此处对优先级的释义来自wiki 指令/datapack

前置知识

  1. 优先级并非加载顺序优先级,而是生效优先级。
  2. 优先级低先加载,优先级高后加载。
  3. 后加载会覆盖先加载的同命名空间下同路径的内容。
  4. 在资源包/数据包选择界面中,越靠上,优先级越高,加载靠后;越靠下,优先级越低,加载靠前。
    另一种说法,以“前后”的方式描述优先级:A数据/资源包位于B数据/资源包之后,在这个例子中B包先加载,优先级较低,A包后加载,优先级较高,A可以覆盖B同命名空间下同路径的内容。

优先级解释

也许你对优先级感到困惑,为什么优先级越高反而加载顺序越靠后?在常识中,优先级越高越先加载,反之越晚加载,这里的谬误在于将优先级当作指代加载顺序的优先级,这里的优先级事实上指的是生效优先级,回顾以上知识,你会发现高优先级晚加载,加载越晚,被覆盖的“几率”越小(请理解使用这样的表述,尽管它事实上不是一个概率问题),自身的内容生效的“几率”越大,因此,这个优先级指代的是生效优先级,优先级越高越生效,这样是不是感到合乎直觉了。

文件结构

为什么只推荐将kubejs的assets及data仅用于自己的创作?而不推荐用于覆盖?
  • 回顾知识点 后加载会覆盖先加载的同命名空间下同路径的内容。
  • 也就是说如果我们想要做到覆盖,我们是需要保证加载顺序一定要在被覆盖的mod资源/数据包加载之后的。
  • 而这里可以说明的是,kubejs自身的assets/data在无额外人为干涉的情况下,其加载顺序位于绝大部分mod之前,这恰恰不能满足我们覆盖的要求。
那么我的资源/数据包又是否会被玩家自行安装的资源包/数据包覆盖?
  • 回顾知识点 :后加载会覆盖先加载的同命名空间下同路径的内容。
  • 只要你保证你的命名空间是你自己的,在无意下,安装的其他资源/数据包是基本不会与你使用相同的命名空间的,也就不会覆盖。
  • 也有个例,但那很少很少,基本不会发生。

全局数据/资源包

有时我们真的需要全局数据/资源包的功能,如覆盖、使用其他作者的数据/资源包作品等,这里列出已知的提供此功能的模组。

配置文件

config 是存放配置文件的,可以自己定义一些配置文件丢里面

只限于KubeJS自己所提供的配置文件, 例如图标和窗口标题的修改等

客户端代码,除了逻辑处理代码可以写在客户端里,比如游戏内的物品渲染等。

使用F3+T时重载, 同时可以用/kubejs reload client_scripts指令进行脚本的重载。

(一般用于PonderJS等Mod)

Contributors

Changelog