跳到主要内容

FreeMinecraftModels 常见问题

如果这里没有你的问题,请查看侧边栏,可能已有专门的说明页面。

入门

如何安装与使用 FreeMinecraftModels?​

详情

安装:

  1. 下载 FreeMinecraftModels.jar 并放入 plugins 文件夹。
  2. 重启服务器以生成插件文件夹。
  3. 运行 /fmm setup 打开首次设置和内容管理菜单。
  4. 使用官方内容包时,通过 /nightbreaklogin <token> 关联 Nightbreak。
  5. 使用 /fmm setup 或 /fmm downloadall 管理 Nightbreak 官方内容。
  6. 手动导入单独模型时,将扩展名为小写 .bbmodel 的文件直接放在 ~/plugins/FreeMinecraftModels/imports/,然后运行 /fmm reload。有配套文件的模型需要使用启用的模型目录或打包导入;参见模型制作说明。
  7. 生成的资源包位于 ~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip。

分发资源包:

  • 方案 A(推荐):安装 Resource Pack Manager 自动分发。
  • 方案 B:通过 server.properties 或托管服务手动配置。

生成模型:

  • /fmm spawn static <id>:生成临时装饰模型。
  • /fmm spawn dynamic <id>:生成附着于实体的模型。
  • /fmm spawn prop <id>:生成持久化世界模型。

管理:

  • /fmm:打开可合成物品菜单,需要 freeminecraftmodels.menu。
  • /fmm setup:打开内容管理和首次设置菜单。
  • /fmm recommendedplugins:浏览配套插件。
  • /fmm downloadall:下载最新插件更新,然后下载可访问但缺失或过期的内容;jar 会在重启或执行 /fmm applypluginupdate 后生效。
  • /fmm downloadallcontent:只下载可访问但缺失或过期的内容,不含插件 jar。
  • /fmm updatecontent:更新过期的官方内容。
  • /fmm downloadpluginupdate:只下载最新插件 jar 更新。
  • /fmm applypluginupdate:无需重启服务器即可应用已下载的插件更新。
  • /fmm forcereinstallcontent <package|all>:不论版本,重新下载选定内容;完全缺失的包可直接指定其 slug。
  • /fmm reload:重载插件并转换新模型。
  • /fmm version:显示插件版本。
  • /fmm stats:显示实体数量统计。
  • /nightbreaklogin <token> / /nightbreaklogout:MagmaCore 的共享顶层命令,用于保存和清除 Nightbreak 账户令牌,需要 nightbreak.login。
  • /freeminecraftmodelschangelog [dismiss|disable]:管理员在游戏中阅读未读更新说明;登录时也会提供可点击提示。

玩家功能:

  • /fmm disguise <modelID> [player]:用自定义模型伪装自己或指定玩家。
  • /fmm undisguise [player]:移除伪装。
  • /fmm disguiselist:列出当前伪装的玩家。
  • /fmm itemify <model> <material>:创建生成指定模型的放置物品。
  • /fmm craftify <modelID>:打开道具合成配方编辑器。
  • /fmm shop:打开可选的 Vault 家具商店,仅在 shop_config.yml 启用时可用。
  • /fmm mount <modelID>:生成伪装为自定义模型的可骑乘马,属于实验性功能。

调试:

  • /fmm hitbox visualize [duration]:用粒子在指定刻数内显示附近模型碰撞箱(默认 100,非正数使用 100,上限 1200)。
  • /fmm location:报告注册的保护和地下城提供者,并在当前位置检查。
  • /fmm debug bedrock [on|off]:设置详细 [FMM-BedrockDebug] 日志的状态,未指定状态时报告当前状态;状态在 /fmm reload 后保留,新启动服务器时关闭。
  • /fmm debug props [on|off]:在启动、实体加载和生成前检查时诊断重叠道具,或报告其当前状态;重载后保留状态,服务器重新启动时重置。
  • /fmm packetdebug [ticks]:按指定模型时钟刻数采样数据包负载(默认 1,范围 1–200,无效输入使用 1),报告每刻数量、各观察者的分发量、最大接收者和类型分布。
  • /fmm filmic [on|off]:临时把每个已加载模型发送给所有已加载其所在区块的玩家,用于 ReplayMod 录制。不建议在录制以外的场合使用。参见电影模式。

管理员操作:

  • /fmm deleteall [radius]:删除所有已加载的模型实体和道具,无确认提示,请谨慎使用。仅玩家可指定可选半径,将范围限制在相应方块距离内。

权限:

  • freeminecraftmodels.*,默认 OP:通配符授予 freeminecraftmodels.admin、freeminecraftmodels.deleteall、freeminecraftmodels.disguise.self、freeminecraftmodels.disguise.others 和 freeminecraftmodels.bypassregionprotection。它也是 /fmm reload、/fmm stats、/fmm spawn、/fmm itemify、/fmm craftify、/fmm mount、/fmm hitbox visualize、/fmm debug、/fmm packetdebug、/fmm filmic、/fmm location、/fmm setup、/fmm initialize、/fmm recommendedplugins、/fmm downloadall、/fmm downloadallcontent、/fmm updatecontent、/fmm downloadpluginupdate、/fmm applypluginupdate 和 /fmm forcereinstallcontent 要求的字面权限。
  • freeminecraftmodels.admin,默认 OP:用于 /fmm admin 内容浏览器和 /fmm giveitem。
  • freeminecraftmodels.disguise.self,默认 OP:允许玩家伪装或解除自己的伪装。
  • 指定目标的 disguise 和 undisguise 同时需要 freeminecraftmodels.disguise.self 和 freeminecraftmodels.disguise.others;disguiselist 只需 .others。
  • freeminecraftmodels.deleteall,默认 OP:用于 /fmm deleteall,属于通配符的子权限。
  • freeminecraftmodels.bypassregionprotection,默认 OP:绕过 FMM 的区域保护检查,不会覆盖其他插件的全部事件处理,也不会绕过物理空间检查。
  • freeminecraftmodels.menu,默认 true:所有玩家可通过 /fmm 打开可合成物品浏览器。
  • freeminecraftmodels.shop,默认 true:所有玩家可打开已启用的 /fmm shop。
  • nightbreak.login,默认 OP:由 MagmaCore 注册,不在 plugin.yml 中;用于 /nightbreaklogin 和 /nightbreaklogout。

未另行说明的命令默认仅 OP 可用。按需向其他玩家授予权限。

模型功能与限制

模型大小和旋转有什么限制?​

详情

大小:

  • 按每个骨骼内的全部方块检查,不按整个模型检查。
  • 转换器将方块坐标乘以 0.4,再重新居中每个骨骼。警告阈值为缩放后坐标中的 192,不是已验证的 192 模型像素或 12 方块渲染上限。
  • 警告不会拒绝或缩小骨骼。如果几何显示失败,请缩小方块、将它们靠拢或拆分到多个骨骼,并在目标客户端检查生成模型。
  • 整个模型可以跨多个骨骼;没有大小警告不能证明生成资源包的几何有效。

方块旋转:

  • Minecraft 1.21.6 及以后: 将角度拆成基本变换(0°、±90°、±180°,烘焙到几何中)后,转换器接受 ±45° 内的任意余角。制作时保持常规的 −180° 到 180° 范围并检查结果;接受角度分解不等于验证渲染。
  • Minecraft 1.21.4 / 1.21.5: 余角必须是原生支持的 −45°、−22.5°、0°、22.5° 或 45°,所以允许 0°、±22.5°、±45°、±67.5°、±90°、±112.5°、±135°、±157.5°、±180°,即 22.5° 的各倍数。
  • 所有版本只支持单轴方块旋转。循环从 Z 扫到 X 并覆盖选择,因此 X/Y/Z 顺序中第一个非零轴生效。
  • [22.5, 0, 45] 保留 X 旋转,丢失 Z 旋转。
  • 无法分解的角度记录为 Could not decompose rotation angle ... for model name <model>,并按原值应用,通常显示不正确。

**骨骼旋转:**支持任意角度和多轴旋转。可见骨骼增加每位观察者的渲染和数据包工作,结构和元数据骨骼并非全部显示。

尽量减少可见骨骼和观察者数量。Java 使用数据包实体显示可见骨骼,Bedrock 后端采用不同表示。骨骼数不等于普通 Bukkit 实体数。

支持哪些动画?​

详情

FMM 将五个名称绑定到自动运行状态:

  • spawn:模型创建时播放一次,然后进入 idle。
  • idle:循环,直到底层实体的 X 或 Z 速度非零。
  • walk:水平移动时循环,接地且 X、Z 速度都为零时返回 idle。
  • attack:播放一次,然后返回 idle。
  • death:通过 removeWithDeathAnimation() 移除时播放一次。

其他名称都是自定义动画,不会自行触发,但可通过 API 或 Lua 按名称播放。

关于 jump

AnimationStateType 枚举有 JUMP,walk 状态也会在实体离地时请求它,但动画管理器没有注册跳跃状态,因此这个自动转换目前没有作用。名为 jump 的动画仍可明确触发,走的是普通自定义动画路径。

工作原理:

  • 在 Blockbench 使用上述小写名称,FMM 会绑定对应状态。
  • 导入时从 .bbmodel 读取关键帧,烘焙为每刻帧。
  • 状态动画根据实体状态自动触发。
  • 开发者可使用 ModeledEntity 的 playAnimation(animationName, blend, loop),或 Lua 的 context.prop:play_animation(name, blend, loop)。

玩家伪装不同: /fmm disguise 在共享播放引擎运行前,按 attack、jump、sneak、walk、idle 的优先级选择这五个名称。sneak 和 jump 在伪装上有自动触发,普通模型仍可明确播放它们。单次动画会暂停全部新选择 20 刻。缺少 idle 时会记录警告,没有其他动作时可能停留在最后一帧。参见玩家伪装。

循环模式、插值、关键帧时间和 IK 请参见动画。唤魔者还会检测附近的唤魔者尖牙,自动触发攻击动画。

什么是虚拟骨骼?它们如何工作?​

详情

虚拟骨骼使用保留名称,为模型增加功能。

碰撞箱:

  • 名称必须是 hitbox,不区分大小写。
  • 创建交互区和碰撞箱,方块定义宽度、深度和高度;X 和 Z 可不同,也不会改变伪装玩家的碰撞箱。
  • 必须位于 outliner 的顶层,嵌套在其他组内时按普通骨骼处理。
  • 应只有一个方块。额外方块记录 has more than one value defining a hitbox! Only the first cube will be used;空组记录 has a hitbox bone but no hitbox cube!,尺寸保持为零。方块位置和旋转不会偏移碰撞箱。
  • 不播放动画、不渲染,也不导出到 Bedrock 几何。

名牌:

  • 前缀 tag_,用于在模型上方显示实体名称。
  • 可选的自定义锚点;没有时使用碰撞箱上方的备用位置。参见为什么我的模型没有名字?。
  • 不需要方块,仅为文字显示的位置锚点,通常放在头部上方。

头部旋转: 前缀 h_,自动追踪玩家或实体的头部朝向。

隐藏和结构骨骼:

  • 前缀 b_。
  • Java 骨骼渲染器隐藏它们;Bedrock 几何导出器不筛除 b_ 骨骼。
  • 用于仍需参与骨架层次、但不应产生几何的结构、组织或元数据骨骼。

挂载点:

  • 前缀 m_,每个骨骼定义一个由 MountPointManager 管理的座位。
  • 座位随骨骼动画移动,多个骨骼提供多个座位。
  • 不导出到 Bedrock 几何。
  • 参见挂载点骨骼。

在 Blockbench 使用这些名称创建骨骼,插件会自动应用对应功能。

故障排查

我看到的不是自定义模型,而是马铠。​

详情

这表示预期的自定义外观没有应用。确认 FMM 已生成模型、当前资源包包含它,且客户端已下载并接受该包。合并冲突只是可能原因之一。

MagmaGuy 开发的 Resource Pack Manager 可自动合并资源包,可从 Spigot 这里 下载。

RSPM 可以合并、托管并分发生成的包。按照设置指南检查启用的包来源和可达的托管地址,再重新连接客户端,确认模型显示。

添加 .bbmodel 后为什么看不到模型?​

详情

1. 忘记重载。 放入 .bbmodel 后运行 /fmm reload 并检查控制台。候选内容验证被拒绝时保留当前运行环境,执行命令本身不能证明新内容已生效。

2. 资源包未应用。 玩家需要启用 FMM 包。检查 ~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip,使用 RSPM 自动分发,或通过 server.properties 和托管服务手动分发。

3. 文件位置错误。 单独的 .bbmodel 直接放入 ~/plugins/FreeMinecraftModels/imports/。此途径保留源文件,可在后续重载中再次转换,不导入单独的配套 YAML,也不递归处理任意文件夹。有配套文件的模型可放入 models/ 或正确打包后导入。官方包使用 /fmm setup 或 /fmm downloadall。

4. 模型有错误。 检查重载期间的控制台错误,例如不支持的旋转、过大尺寸或纹理问题。

5. 合并问题。 客户端有包却仍显示基础材质时,检查生成定义、纹理路径、合并结果和客户端包版本。RSPM 可管理合并和配发,但安装本身不证明成功。

6. ID 冲突。 查找 [FMM Models] Rejected normalized model ID collision。两个或更多文件规范化为同一个 ID 且内容不同,全部会被拒绝。参见ID 冲突。

为什么模型因 ID 冲突而被拒绝?​

详情

FMM 将文件名转成小写,再把 a-z、0-9、.、_、- 以外的字符替换成下划线,用作运行时模型 ID 和资源包文件名。

以下文件都会得到 my_table:

My Table.bbmodel
my table.bbmodel
my_table.bbmodel
MY_TABLE.bbmodel

转换前会扫描模型目录树查找这类冲突。如果所有冲突文件逐字节完全相同(例如两个内容包附带了同一个模型),FMM 会加载其中一份,并直接跳过其余文件,不产生警告。否则会拒绝所有冲突文件,而不仅是多出来的那些,避免由加载顺序决定结果。控制台输出:

[FMM Models] Rejected normalized model ID collision '<id>'. These files normalize to the same ID: <paths>. Rename the files so every normalized model ID is unique; no colliding model was loaded.

修复: 根据警告列出的绝对路径重命名文件,使规范化 ID 不同,再运行 /fmm reload。

预防: 在整个模型树中使用唯一的小写下划线名称,如 stone_table.bbmodel。不同文件夹不能让重复基本名变得唯一,另一个名称仍可能规范化为相同 ID。

被拒绝的模型不会生成 Java 资源,也不会进入 Bedrock 自定义实体包。

为什么模型没有名字?​

当前运行环境不再要求 tag_ 骨骼才能显示名称。存在时使用按字母排序的第一个标签骨骼,没有时使用碰撞箱上方的位置。

确认所属插件设置了非空显示名,且未隐藏名牌。位置不对时检查碰撞箱,或在 Blockbench 添加无方块的 tag_name 锚点。多个标签骨骼不会重复显示名称。参见名牌制作。

ViaVersion 可能导致资源包无法正常显示。​

详情

当前 FMM 要求 Minecraft 1.21.4 或更新服务器。协议转换允许新客户端连接,并不能使旧服务器成为受支持的 FMM 环境。

排查时先用与受支持服务器版本一致的客户端重现,确认下载了当前包且能显示其物品模型格式,再比较协议转换连接。记录服务器、客户端和协议插件版本,不要把每个缺失模型都归因于 ViaVersion。

为什么模型导致卡顿或性能问题?​

详情

可见骨骼多会增加变换、数据包和客户端渲染工作,观察者数量也有影响。

优化:

  • 减少骨骼数和同时生成的模型数。
  • 无需底层生物实体时使用静态模型;静态模型也能播放动画。
  • 避免在同一区域集中大量高骨骼数模型。

Java 使用每骨骼的数据包实体,排除隐藏和仅元数据的显示路径;Bedrock 后端可把整个模型表示为自定义实体。50 骨骼模型不一定创建 50 个普通服务器实体,也不一定向每个客户端发送 50 个可见实体。

设计时减少骨骼,按实际生成数量测试性能,并在添加模型时监控 TPS。

测量: 在受影响区域运行 /fmm packetdebug 20。它报告后续 20 个模型时钟刻的数据包数、观察者分发量、最大接收者和数据包类型。这有助于调查流量,不是 CPU 分析,也不能证明客户端已渲染。

内置优化: config.yml 中以下选项默认采用优化行为;其他值用于调试,不是调优建议。

  • skipUnchangedBoneUpdates,默认 true:跳过未改变的变换更新,除非骨骼被明确标记为已更改,例如颜色变化。不会消除全部模型处理和观察者流量。
  • useDeltaMetadataPackets,默认 true:每刻元数据包只带变化的变换,不重新序列化整个物品展示数据。
  • maxModelsForProximityOverride,默认 25:10 方块内模型通常跳过视线检测并始终显示,避免突然出现。世界加载模型达到该值时,该世界关闭此例外,近处也做遮挡剔除。多楼层 NPC 中心里玩家收到其他楼层模型时可检查此项。

参见配置。

高级功能

我需要 Resource Pack Manager 吗?​

详情

RSPM 可选,但强烈推荐。它自动合并多个插件的资源包、托管而无需外部服务,并在登录时分发。它减少手动管理,但仍要验证来源选择、托管和客户端接受情况。

没有 RSPM 时,需要手动合并 FMM 与其他包,将结果托管在可达的下载 URL,并配置 server.properties 或其他发送器把 URL 交给玩家。server.properties 本身不托管文件。每次新增模型也要更新包。

RSPM 提供统一的合并、托管和发送流程。排查模型缺失时,仍应检查输出和真实客户端。

下载 RSPM:https://www.spigotmc.org/resources/resource-pack-manager.118574/

它与 FMM 均由 MagmaGuy 开发。

可以在自己的插件中使用 FMM 吗?​

详情

可以,通过开发者 API 集成。

Maven/Gradle: 仓库 https://repo.magmaguy.com/releases。

  • GroupId:com.magmaguy
  • ArtifactId:FreeMinecraftModels
  • Scope:provided;必须单独安装在服务器,不要 shade 到自己的插件。

主要类是 ModeledEntity(基类)、StaticEntity、DynamicEntity 和 PropEntity。

StaticEntity staticEntity = StaticEntity.create(id, location);
if (staticEntity == null) {
Bukkit.getLogger().warning("Failed to create model");
return;
}
staticEntity.setRightClickCallback(...);
staticEntity.remove();

FMM 必须独立安装,不能打包进你的插件。详见官方 README。

如何将玩家伪装为自定义模型?​

详情

/fmm disguise 将玩家外观变成自定义模型。

/fmm disguise <modelID> [player]
/fmm undisguise [player]
/fmm disguiselist

玩家对其他人隐形,模型叠加在玩家位置并跟随移动,适用于角色扮演和活动。

/fmm disguise dragon              # Disguise yourself
/fmm disguise dragon Steve # Disguise another player
/fmm undisguise Steve # Undisguise Steve
/fmm disguiselist # List everyone currently disguised

要求:

  • 自身伪装需要 freeminecraftmodels.disguise.self,默认 OP。
  • 指定玩家的 disguise 和 undisguise 同时需要 freeminecraftmodels.disguise.self、freeminecraftmodels.disguise.others;disguiselist 只需 .others。
  • 控制台需要指定玩家名。
  • modelID 必须精确匹配已加载模型。
  • 其他插件可使用公共 DisguiseAPI。

行为: 玩家碰撞箱不变,其他玩家看到模型而不是皮肤;再次伪装会替换原伪装。相关效果变化后,只有该伪装最初添加了隐形效果,FMM 才会恢复它;预先存在的效果不会被恢复。参见玩家伪装。

如何创建可放置的模型物品?​

详情

/fmm itemify 创建能在世界中放置模型的特殊物品。

/fmm itemify <model> <material>
  • model:模型文件夹中的有效模型 ID。
  • material:Minecraft 材质,如 STICK、PAPER 或 DIAMOND。
/fmm itemify lamp_post STICK

物品有金色格式化名称(如“✦ Wolf ✦”)和说明 Lore,直接加入背包。请留出空间,溢出部分不会掉落。主手右键放置道具,受 FMM 放置检查约束;非创造模式在成功生成后消耗物品。

可用于建筑装饰、家具“刷怪蛋”、保留已配置保护检查的放置物品分发,以及创造建造套装。

需要 freeminecraftmodels.*,且必须由游戏中的玩家执行,不能用控制台。

如何调试模型碰撞箱?​

详情

此命令用粒子显示模型碰撞箱:

/fmm hitbox visualize [duration]

duration 为可选参数,默认 100 刻。非正数使用 100 刻,上限 1200;20 刻为 1 秒。

/fmm hitbox visualize 100      # Show for 5 seconds
/fmm hitbox visualize 200 # Show for 10 seconds

它搜索 10 方块内模型并用粒子显示定向包围盒 OBB 边界,便于比较模型与碰撞边界,检查尺寸和旋转。

投射物检测检查跟踪位置之间的线段以捕获穿越薄 OBB 的情况,没有前一位置时改用重叠检测。按最近目标优先处理。普通投射物可命中一个模型目标,穿透箭可命中 pierce level + 1 个不同模型目标。取消命中会阻止回调或默认伤害,但仍消耗目标额度。参见投射物 API。

适合比较视觉与碰撞箱、调试交互、旋转和点击检测,需要 freeminecraftmodels.*。FMM 碰撞箱随模型旋转,与普通 Minecraft AABB 不同。

可以创建可骑乘的自定义模型吗?​

详情

可以,使用实验性的 /fmm mount:

/fmm mount <modelID>

在当前位置生成马,伪装成指定模型,自动驯服并装鞍。一刻后尝试让你骑上:没有挂载点时直接骑马,有挂载点时通过标记盔甲架。

/fmm mount dragon

需要 freeminecraftmodels.* 和有效模型 ID。

这是实验性功能,使用驯服的成年马,移动速度基础值为 0.3、跳跃力量基础值为 0.7,马的碰撞箱不变。适合为坐骑设计的模型,可用于角色扮演坐骑、VIP 交通工具或冒险地图中的骑乘生物。

什么是挂载点骨骼?​

详情

用特别命名的骨骼直接定义座位。在 Blockbench 使用区分大小写的 m_ 前缀,如 m_seat、m_back;每个骨骼创建一个供玩家使用的座位。

  • 座位位置跟随骨骼,包括动画。
  • 多个骨骼创建多个座位。
  • 座位管理器通过 API 或 Lua 接受玩家,选择第一个空位;使用尺寸为零的临时 Interaction 实体,乘坐时更新。

检查: 生成或放置道具并右键,或调用 Lua context.prop:mount(player)。/fmm mount <modelID> 创建马作为底层实体的实验性坐骑,使用不同的骑乘路径。

可用于多座载具、特定座位位置的生物或肩部宠物。

自定义物品

什么是自定义物品?​

自定义物品是在模型旁的 YAML 中定义 material: 的手持物品,使用 fmm_item_id 标识;/fmm itemify 创建的道具放置物品使用 model_id。

创建同名模型和 YAML,设置 material,按需添加 name、lore 和带命名空间的 enchantments:

isEnabled: true
material: DIAMOND_SWORD
name: "&6Flame Blade"
enchantments:
- "minecraft:fire_aspect,2"

用 freeminecraftmodels.admin 执行 /fmm giveitem <id> 或 /fmm admin 获取。

自定义物品还会运行 Lua 脚本吗?​

不会。旧装备物品运行环境及其 22 个钩子已停用。手持物品定义含非空 scripts: 时会被跳过,旧的无命名空间附魔条目(如 FIRE_ASPECT,2)也会被跳过。文件不会转换或重写;道具 Lua 脚本不变。

物品效果使用提供者管理的附魔,魔杖和法杖使用魔法武器定义。

菜单

FMM 提供哪些菜单?​

详情

除了单独的设置、配方编辑和可选商店菜单,还有以下两个内容浏览菜单。

玩家菜单 /fmm:

  • freeminecraftmodels.menu 默认 true,所有玩家可用。
  • 只显示成功注册合成配方的条目,registerCraftingRecipes: false 会将它们从浏览器移除。
  • 点击显示详情和 3×3 合成格预览。
  • 查看的是纸质道具放置物品的配方,与自定义手持物品不同。

管理员菜单 /fmm admin:

  • freeminecraftmodels.admin 默认 OP。
  • 显示已启用且有加载内容的包、未打包模型文件夹、根级模型和成功注册的自定义物品。
  • 包和文件夹条目打开列表,单个条目给予物品;包启用和下载使用 /fmm setup。

显示模型

什么是显示模型?​

详情

显示模型让自定义物品在手中或背包中使用 3D 外观,替代基础材质。

  1. 在 Blockbench 使用 File > Export > Java Block/Item 导出 .json。
  2. 放在 .bbmodel 旁,使用相同基本名,如 magic_sword.json 和 magic_sword.bbmodel。
  3. 运行 /fmm reload。

行为:

  • 注册的显示模型可在客户端接受生成包后替换手持和背包外观。
  • 无命名空间的纹理引用使用对应的数字键;找不到时会使用可用的已提取纹理,不保证是索引零。已有命名空间的引用保留。
  • 没有 .json 时使用普通材质外观。
  • 当前插件要求 Minecraft 1.21.4 或更新;旧渲染分支不代表支持旧服务器。

需要 1.21.4 或更新服务器,以及模型旁有效的 Blockbench“Java Block/Item”导出 .json;格式错误的 JSON 不会注册。弓和弩的状态组需要所有对应状态模型与显示 JSON 文件。