外观
氛围动效
外观
氛围动效
物品转换成功不代表复杂生物和家具也成功。这页给出实体路线判断与重建方法。
Java 的实体模型常由多个来源组合出来。
来源包括数据包、ModelEngine、EliteMobs 和 BetterModel。
还有盔甲架、Display Entity 和技术实体。
基岩版需要自己的文件集合。
它包含 entity definition、geometry 和 render controller。
动画与材质同样是必需项。
Geyser 只把 Java 侧实体状态翻译过来。它不能把 Java 客户端的渲染规则原样传递。
| Java 侧实现 | 基岩版路线 | 自动转换结论 |
|---|---|---|
| 原版实体,仅替换全局贴图 | 覆盖对应基岩版原版实体资源 | 可手工完成,但会影响所有同类型实体 |
| 原版实体加 Java 名称或装备或 CMD 选择模型 | Geyser Entity API 或可识别的客户端状态 | 不要假定名称或 PDC 会自动成为基岩版条件 |
| CEM 或 OptiFine 或 EMF 模型 | 重新制作基岩版 geometry 与 animation | 没有通用的 Geyser JSON 转换路线 |
| ModelEngine 或 EliteMobs 或 BetterModel 生物 | 查明其使用的实体、技术实体和包资源,再分别适配 | 插件名称不能决定兼容性 |
item_display | GeyserDisplayEntity 等社区扩展,或改为自定义实体 | 官方 Geyser 当前不原生支持 Display Entity |
block_display | 手工基岩版实体或方块映射,或第三方扩展 | 复杂旋转、缩放和碰撞需单独设计 |
text_display | 基岩版 text、UI 或实体文字回退 | 不要期待 Java 字体和文字实体自动保留 |
| Java 服务器自定义实体类型 | Geyser Entity API 注册基岩版类型并在生成事件替换 | 需要 Geyser extension 和配套基岩版资源包 |
转换清单中的 route 必须写出上表中的具体路线。写「Rainbow 已完成」只能说明物品与方块已导出,不表示实体已完成。
官方文档当前把 Custom Entity API 标记为实验性。它在 Geyser API 2.11.0(26.2 更新)引入,未来可能改写。GeyserDefineEntityPropertiesEvent 虽然更早存在,但从 2.11.0 起使用的是 Bedrock 实体标识符,不是 Java 标识符。
官方路线需要两部分:
entity/、models/entity/、贴图、动画和渲染控制器。只放资源包不注册实体,基岩版不会凭文件名自动把某个 Java 僵尸变成自定义实体。只注册扩展不提供资源包,玩家只会看到缺失模型或默认模型。
以下是结构提示。具体 API 包名和方法签名必须以当前 Geyser API 文档与编译结果为准。
public final class MiragEdgeEntities implements Extension {
private final CustomEntityDefinition boss =
CustomEntityDefinition.of(Identifier.of("miragedge:boss_alpha"));
@Subscribe
public void onDefineEntities(GeyserDefineEntitiesEvent event) {
event.register(boss);
}
@Subscribe
public void onSpawn(ServerSpawnEntityEvent event) {
if (isBoss(event)) {
event.definition(boss);
}
}
}约束:
minecraft namespace,且必须全局唯一。entity/*.entity.json 一致。ServerSpawnEntityEvent 能看到 Geyser 翻译链上的实体信息,但它不会自动把 Paper、CE 或数据包的内部状态暴露为可查询字段。
isBoss 判断。官方 API 支持把 Java 侧状态暴露为基岩版 Molang 的 query.property(...) 可查询属性。属性数量和类型受 API 限制,当前文档要求每个实体类型最多 32 个属性。
把属性当作稳定协议:
miragedge:phase = idle | enraged | dying
miragedge:health_fraction = 0.0 .. 1.0
miragedge:variant = 0 .. N每个属性都要记录 Java 来源、默认值、更新时机和 Molang 使用位置。
还要记录失联时的回退值和性能成本。不要把每 tick 的大量 Java 状态都同步到基岩版。先证明动画确实需要它,再选择事件或低频更新。
复杂生物通常需要:
manifest.json
entity/miragedge_boss.entity.json
models/entity/miragedge_boss.geo.json
textures/entity/miragedge_boss.png
animations/miragedge_boss.animation.json
animation_controllers/miragedge_boss.controller.json
render_controllers/miragedge_boss.render_controller.json具体文件名由基岩版资源包规范与模型工具决定。不能从 Java 的 assets/<namespace>/models/... 直接改目录名。至少检查:
不要用旧转换工具的行为包输出作为生产方案
java2bedrock.sh 可以帮助理解早期 Java 模型转换和 sprite 映射思路,但它的 README 已明确依赖旧基岩版版本、实验开关和客户端行为包。当前 Geyser 资源包路线应以官方 custom content、Rainbow 和目标基岩版规范为准。
Geyser 官方文档明确说明,Java 的 item_display 与 block_display 等 Display Entity 仍不是 Geyser 原生支持对象。GeyserDisplayEntity 是社区 Geyser extension,README 说明它主要为 Item Display 提供支持,使玩家能看到 Nexo、CraftEngine、ItemsAdder 等物品展示。其 README 还把外部转换器 Kafal 作为生成 mapping 与 resource 的辅助工具。
使用它时必须把风险写进发布记录:
block_display、text_display、复杂骨骼动画或所有 CE 家具都支持。| 场景 | 通过条件 |
|---|---|
| 初次生成 | 基岩版在实体出现的同一 tick 或随后短时间内看到正确模型 |
| 旋转和缩放 | 与 Java 参考视角一致,没有轴翻转或比例漂移 |
| 区块重载 | 远离再返回、重新加载区块后模型仍存在 |
| 传送与跨维度 | 传送后没有残留旧实体或重复实体 |
| 资源包缓存 | 新 release 能替换旧包,不出现旧贴图 |
| 交互 | 若对象设计为装饰,点击与碰撞行为与 Java 预期一致;不兼容时明确标记为装饰专用 |
| 多对象组合 | 家具由多个 display 或技术实体组成时,所有零件同时出现且相对位置稳定 |
看到一个数据包 Boss 时,按以下顺序定位,不要直接说用 Rainbow:
entity、models、textures、optifine/cem、emf 和动画目录。item_display 承载、音效由 sounds.json 提供。coverage.json,并给玩家可接受的回退:原版实体、2D 图标、无动画装饰,或仅 Java。数据包可以继续在 Java 服务端运行,即使基岩版只得到简化模型。转换的最小成功标准应拆成四条:
Java 逻辑继续触发
+ Java 玩家视觉不回归
+ 基岩版玩家看到明确的可接受表示
+ 不会因基岩版资源包加载失败导致 Geyser 登录失败若一个 Boss 的攻击依赖 Java 函数,基岩版只需要正确看到阶段和伤害反馈。不要把函数搬进一个未经验证的基岩版行为包。
复杂实体不要把这些文件散落在服务器目录。它们包括扩展 JAR、实体包和 Rainbow 普通物品输出。
建议在 release 中保留:
entities/<release-id>/
├── extension/
│ └── miragedge-geyser-entities-<version>.jar
├── pack/
│ └── miragedge-entities-<release-id>.zip
├── source/
│ ├── geometry/
│ ├── animations/
│ └── bridge-contract.yml
├── report.md
└── coverage.jsonbridge-contract.yml 记录 Java entity signal、Bedrock identifier、property、默认值和扩展版本。更新扩展时同时更新资源包,不允许只换 JAR 不换包,或反过来。
以下情况应直接标记为 manual、unsupported 或 java-only,不要伪造自动转换成功:
两个交付等级必须分开
交付有两个等级:基岩版看到一个模型,以及基岩版获得完整的生物功能。
两者必须在文档和验收记录中分开。