项目总览 - Go-Camping/No-Flesh-Within-Chest GitHub Wiki

了解项目的大体结构对于参与到项目中、进行项目维护,有着非常重大的意义。

项目结构

No Flesh Within Chest(nfwc)的几乎所有魔改都是基于kubejs及其相关附属mod。在阅读本章节时,编者默认认为你已经了解了kubejs的基础知识以及相对简单的js使用技巧。

在nfwc中,大部分事件通过以物品tag为维度的策略方法进行维护。用户注册自定义器官及各种自定义效果时往往仅需要注意向对应的策略中添加方法即可,不需要考虑更多的内部逻辑排布。

当前版本下,nfwc魔改的项目结构如下所示,在这里只会罗列与器官相关的文件,并不会逐个展示用途。

kubejs
|---assets  # kjs资源文件管理
|
|---client_scripts   # 客户端脚本
|     |---default_organ_tooltips.js       # 胸腔本体器官(含nbt)tooltips
|     |---enchant.js                      # 附魔提示修改
|     |---item_tooltips.js                # 物品tooltips
|     |---key_bind.js                     # 按键客户端事件
|     |---organ_tooltips.js               # 自定义器官tooltips
|
|---data             # 数据包管理
|
|---server_scripts   # 服务端脚本
|     |---champion                        # 精英怪实现
|     |---common                          # 常规方法
|     |---curios                          # 饰品效果实现
|     |     |- charm_event.js             # 器官容器实现
|     |     |- curio_change.js            # 饰品变更效果实现
|     |     |- entity_death.js            # 饰品佩戴下生物死亡事件
|     |     |- entity_hurt.js             # 饰品佩戴下生物受伤事件
|     |     |- player_tick.js             # 饰品佩戴下玩家tick事件(资源条显示)
|     |---magnificent_magic               # 宏伟魔法实现
|     |---mob_effect                      # 生物效果实现
|     |---organ                           # 器官效果实现
|     |     |- active_effect.js           # 激活事件
|     |     |- block_broken.js            # 方块破坏事件
|     |     |- chest_cavity_manager.js    # 胸腔初始化管理
|     |     |- enchant.js                 # 附魔事件
|     |     |- food_eaten.js              # 食物食用事件
|     |     |- item_right.js              # 物品右击事件
|     |     |- key_bind.js                # 按键事件
|     |     |- loot.js                    # 战利品事件
|     |     |- organ_manager.js           # 器官数据包载入
|     |     |- player_bear.js             # 玩家受伤事件
|     |     |- player_damage.js           # 玩家造成伤害事件
|     |     |- player_tick.js             # 玩家tick事件
|     |     |- util.js
|     |---recipes                         # 配方注册
|     |---ritual                          # 祭坛事件
|     |---utils                           # 工具类
|     |- event_stream.js                  # 自定义事件管理
|
|---startup_scripts  # 启动脚本
|     |---special                         # 非通用注册及特殊逻辑处理
|     |     |- l2_attribute.js            # 旧版本莱特兰注册属性显示 
|     |     |- sequenced_assembly_item.js # 序列装配中间件注册
|     |---utils                           # 工具类
|     |     |- constdef.js                # 非全局常量维护
|     |     |- organ_model.js             # 器官注册Model定义
|     |- creative_tab_register.js         # 自定义创造标签注册
|     |- curio_change.js                  # 饰品切换自定义事件入口
|     |- entity_hurt.js                   # 生物受伤自定义事件入口
|     |- global.js                        # 全局变量管理
|     |- item_register.js                 # 通用物品注册
|     |- key_bind_register.js             # 自定义按键注册
|     |- mob_effect_register.js           # 生物效果注册
|     |- organ_register.js                # 器官注册
|     |- spell_register.js                # iron spell'n book(isb)法术注册