跳转到内容

ModularShoot(模块化射击)

ModularShoot 是一个基于属性驱动、模块化组装的枪械系统框架模组,运行于 NeoForge 1.21.1。

框架定位:本模组仅提供注册 API、属性计算管线、射击引擎,不内置任何枪械或插件内容。所有内容由其他模组通过 API 或数据包添加。

核心特点

特点说明
单 ID + Data Component所有枪械共用一个物品 ID(modularshoot:gun),通过 Data Component 区分枪型;插件同理(modularshoot:plugin
纯框架0 个预置枪械、0 个预置插件、0 个预置特性——仅提供 API 和引擎
属性驱动枪械行为完全由属性 + 特性决定,无硬编码特殊逻辑。ADD_VALUE → ADD_MULTIPLIED_BASE → ADD_MULTIPLIED_TOTAL 三阶段叠加
双路注册支持 Java API 注册和数据包 JSON 注册,共享同一注册表。/reload 热重载 JSON,API 注册不受影响
非实体子弹子弹为轻量数据记录,由 BulletManager 管理,支持数千发同时飞行(chunk 分桶索引 + 胶囊体碰撞检测)
完全事件化所有扩展点通过事件 + 回调 API 暴露:射击事件、安装/拆卸事件、特性钩子、伤害处理器、右键/换弹事件
服务端权威射击、子弹飞行、命中判定均由服务端执行,客户端仅渲染,防作弊

快速导航

文档适合人群内容
API 参考想用代码调用框架功能的开发者ModularShootAPI 所有公开方法速查表
注册表参考想了解定义字段含义的开发者6 张动态注册表及每种定义的字段详解
数据包注册想用 JSON 注册内容的开发者数据包 JSON 文件路径、字段与格式说明
命令参考想用调试命令的开发者/modularshoot 子命令速查
示例集想直接看代码的开发者Java API 和 JSON 的所有集中示例

6 张框架注册表

注册表 ID用途注册方式
modularshoot:guns枪械定义Java API / 数据包 JSON
modularshoot:plugins插件定义Java API / 数据包 JSON
modularshoot:plugin_types插件种类定义Java API / 数据包 JSON
modularshoot:traits布尔特性定义Java API / 数据包 JSON
modularshoot:states持久状态定义Java API / 数据包 JSON
modularshoot:attribute_meta属性元数据(默认值、显示信息、绑定)数据包 JSON

属性本体Attribute 实例)需用原版 DeferredRegister 注册到 BuiltInRegistries.ATTRIBUTE,不在上述动态注册表中。

预置属性

框架预注册 9 个数值属性(modularshoot 命名空间):

属性 ID说明默认值
hit_damage每次命中伤害1.0
fire_rate每秒射击次数(上限 20,≤0 时禁止射击)1.0
range子弹最大飞行距离(格)50.0
accuracy_yaw水平散布角度(度)10.0
accuracy_pitch垂直散布角度(度)10.0
entity_penetration穿透实体数(0 不穿透)0
bullet_speed子弹飞行速度(格/秒)20.0
bullet_size子弹碰撞球半径(0 为射线)0.5
block_penetration穿透方块数(0 不穿透)0

关键事件一览

事件触发时机可取消
PreShootEvent射击条件判断通过后
PostShootEvent子弹注册后
GunRightClickEvent非 GUI 中右键枪械
ReloadEvent按下换弹键(默认 R)
PrePluginInstallEvent插件安装校验通过后
PostPluginInstallEvent插件写入组件后
PrePluginUninstallEvent插件拆卸前
PostPluginUninstallEvent插件拆卸后

基于 MIT 许可发布