
概述
Moonlight Lib (曾用名 Selene)是 MehVahdJukaar 的跨平台前置库,包含了一系列共用代码,主要提供了动态资源生成、两种新的数据注册表、动态物品注册、跨平台代码支持等功能。
想要利用该库进行开发的模组开发者可以参考示例代码或者阅读 API 源码。
主要功能
动态资源生成
Moonlight 支持动态生成任意资源文件,包括数据以及资源。值得指出的是,它包含了一个支持动态生成材质的 API,具有图案提取、纹理裁切、重制图像形状以及重新上色等功能。
跨平台实用功能
Moonlight 包含了一些简单的实用代码来帮助开发者开发跨平台模组,它们通常只依赖静态辅助函数,而非注解或其他面向对象的实践,主要是通过简单地用辅助函数封装来模拟 Forge 的行为,对于 Fabric 也有类似的过程。
动态注册
Moonlight 有一套动态的物品注册系统,能够在常规的物品注册完成之后,读取某一类型的方块,根据读取结果去注册新的条目。
这个库内置了 WoodTypeRegistry 以及 LeavesTypeRegistry ,它们能够读取游戏中所有的木材以及树叶,泛用兼容:木材利用了这二者来动态注册新的木制装饰方块以及树叶装饰方块。
自定义村民交易
Moonlight 带来了一套数据驱动的村民交易系统,在数据包的 moonlight/villager_trades 目录下放置对应的交易配方文件即可,锦致装饰以及锯木机均使用了这一功能。
方块颜色 API
Moonlight 能够检测模组方块、物品的 DyeColor,并能够检测不同颜色的同一种方块。
自定义地图标记
Moonlight 有一个支持添加地图装饰和地图标记的系统,还允许在地图数据中存储简单的数据,并提供一些接口来使用这些数据,如物品提示。地图标记的注册也可以通过数据包实现。
动态村民 AI
在不直接修改村民原有的 AI 的情况下,向村民的日程安排中添加新的目标,还支持添加新的记忆类型。
自定义第一、第三人称物品动画
允许物品在第一人称与第三人称视角下具有不同的动画,如同弩那样。
磨砂轮进度触发器
使得特定物品在磨砂轮内被加工能够成为能直接于 JSON 内使用的进度触发条件。
虚拟流体系统
Moonlight 添加了一套与 Forge 的流体系统相独立的虚拟流体系统,它以一瓶(即 250 mB)为单位,同时支持桶、碗等容器,以更好地与原版相兼容。