跳到主要内容

FreeMinecraftModels

FreeMinecraftModels 既是一个自定义模型运行时,也是一个面向开发者的 API。

当前插件不再仅仅是"imports 文件夹加 /fmm reload"的工作流程。当前代码库新增了:

  • 首次设置流程,以及加入时的提醒,直到设置标记为完成为止
  • 基于 Nightbreak 的设置菜单,用于安装和更新官方模型包
  • plugins/FreeMinecraftModels/output/FreeMinecraftModels 生成资源包文件夹
  • plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip 生成压缩包工件
  • 更广泛的命令支持,涵盖设置、内容更新、生成、伪装、道具与调试
  • 挂载点骨骼 —— 名称以 m_ 开头的骨骼会在模型上创建可乘坐的座位点,让玩家骑乘自定义实体
  • 自定义 display 模型 JSON —— 在 .bbmodel 同目录下放置同名的 .json 文件(Blockbench display-item 导出)即可覆盖游戏内物品外观(需要 1.21.4+)
  • 自定义可脚本化物品 —— 在 YML 配置中设置 material: 的模型将成为可手持的自定义物品,支持完整的 Lua 脚本和 22 个物品钩子
  • 管理员内容浏览器/fmm admin)—— 供管理员浏览已安装包、文件夹、模型和自定义物品的物品栏菜单
  • 玩家可制作物品菜单/fmm)—— 显示所有可合成物品及其配方的物品栏菜单;点击物品即可查看 3×3 合成格、箭头和产物
  • 玩家伪装系统 —— /fmm disguise <model> [player]/fmm undisguise [player]/fmm disguiselist,并提供供第三方插件使用的公共 DisguiseAPI
  • 家具商店 —— 可选的、基于 Vault 的 /fmm shop,用于售卖可合成的道具,每个配方可通过 shopEnabled / shopPrice 单独配置
  • 玩家 UI API —— Lua 脚本可以向玩家显示 Boss 血条、动作栏和标题
  • LocationAPI —— 第三方插件可以注册地下城探测器和保护区提供者,从而驱动 FMM Lua 中的 em.location.is_in_dungeonem.location.is_protected 谓词

从这里开始

Lua 脚本

FreeMinecraftModels 同时为道具和自定义物品提供 Lua 脚本支持,由 MagmaCore 2.0 脚本引擎驱动。脚本存放在 plugins/FreeMinecraftModels/scripts/

道具钩子(8 个)

道具脚本可以响应以下钩子:

钩子触发时机
on_spawn道具被生成到世界中
on_game_tick道具存活期间的每一游戏刻
on_zone_enter玩家进入道具的交互区域
on_zone_leave玩家离开道具的交互区域
on_destroy道具从世界中移除
on_left_click玩家左键点击道具
on_right_click玩家右键点击道具
on_projectile_hit抛射物击中道具

道具脚本会收到一个 context.prop 表,其中包含 model_idcurrent_location 等字段,以及 play_animation(name)stop_animation() 等方法。

物品钩子(22 个)

自定义物品脚本(针对在 YML 中设置了 material: 的模型)可以响应以下钩子:

钩子触发时机
on_equip物品被装备(进入活动栏位)
on_unequip物品被卸下(离开活动栏位)
on_attack_entity玩家手持该物品攻击实体
on_kill_entity玩家手持该物品击杀实体
on_take_damage玩家在装备该物品时受到伤害
on_shield_block玩家使用盾牌格挡伤害
on_shoot_bow玩家射出弓
on_projectile_hit玩家射出的抛射物命中目标
on_projectile_launch玩家发射抛射物
on_right_click玩家手持物品时右键点击
on_left_click玩家手持物品时左键点击
on_shift_right_click手持物品时 Shift + 右键
on_shift_left_click手持物品时 Shift + 左键
on_interact_entity玩家手持物品右键点击实体
on_swap_hands物品在主副手之间切换
on_drop玩家丢弃物品
on_break_block玩家手持物品时破坏方块
on_consume物品被食用(食物/药水)
on_item_damage物品受到耐久度损耗
on_fish玩家使用钓鱼竿
on_death玩家在装备该物品时死亡
on_game_tick物品被装备期间的每一服务器刻

物品脚本会收到一个 context.item 表,其中包含与所持物品和持有玩家相关的字段和方法。Lua 脚本还可以使用玩家 UI API 来显示 Boss 血条、动作栏和标题。

当前说明

  • 当前内置在插件中的 Nightbreak 官方托管包:Basic Furniture PackBetterStructures Prop PackEliteMobs Prop PackCraftenmine's Weapons Item Pack 以及 Craftenmine Tools Item Pack
  • FreeMinecraftModels 在启动时和执行 /fmm reload 时会重建其资源包输出,并派发 FmmReloadedEvent,以便依赖插件可以重新关联其模型引用。
  • ResourcePackManager 仍是向客户端自动分发生成资源包的推荐方式。