YCLH ADDON STUDIO · v1.0.21

列车附加包生成器

下载客户端,离线一键生成行为包与资源包。
面向创作者 · 需配合宇创领航控制器主包使用

创作者须知 · 上架前请备案 所有创作者均可使用本工具制作宇创领航轨道交通附加包,须提交备案并通过后方可上架网易我的世界。免费附加包宇创领航不收取费用;付费附加包需支付创作研发费,模组收益归创作者所有。若备案为免费却私自付费发布,宇创领航有权停止该创作者使用本工具并要求赔偿。
Windows · Desktop

列车附加包生成器

双击运行,无需 Python。底部四页切换:生成、水牌、升级、关于。可上传生成器图标,也可把旧附加包升级成带本包生成器物品的新 ZIP。

下载 Windows 版 (.exe)
Android · Mobile

Addon Builder

手机端离线生成,与桌面版相同逻辑。底部栏切换功能页,支持上传图标、升级旧包,并导出到系统文件夹。

下载 Android 版 (.apk)
1

下载客户端

Windows 或 Android,离线可用

2

填写参数并生成

导入模型、可选上传生成器图标,一键导出 ZIP

3

备案后发布

装入行为包 + 资源包,配合主包游玩

✨ v1.0.21 新功能

NEW

底部四页切换

生成、水牌、升级、关于分成独立子页,底部栏一键切换。保存路径固定在顶部,不再把所有功能堆在同一长页。

NEW

本包列车生成器物品

每个附加包自带 yclh:<列车ID>scq。创造栏「宇创轨道交通」里能拿到,右键打开生成 UI 并锁定本包车系,多包共存互不抢物品。

NEW

自定义工具图标

生成时可上传 PNG。程序按列车 ID 自动命名为 textures/yclh_items/列车ID.png,不会删除原来的 spawn.png

NEW

升级旧附加包

早期生成、没有本包生成器物品的 ZIP,可连同图标一起导入。程序补齐物品、独立脚本和图标后另存新包,不覆盖原文件。

📖 创作者手册

以下内容为附加包模板技术说明,供其他创作者查阅。点击章节展开。

本包列车生成器物品与图标怎么用(v1.0.20)

从 v1.0.20 起,每个列车附加包都会自带一把本包列车生成器,不必再依赖主包里的通用 yclh:i_spawn 才能开本包车系。

列车 ID 怎么定

  • 填写了列车系列前缀,且不是默认 yclh7001 → 列车 ID = 该前缀,例如 yclh105 → 物品 yclh:yclh105scq
  • 未填或仍是 yclh7001 → 列车 ID = 附加包 ID,例如 yclh_yi → 物品 yclh:yclh_yiscq,避免多包抢同一个物品。

生成时上传图标

  1. 在「基本信息」里填好附加包 ID、显示名称、列车系列前缀。
  2. 选择 列车生成器工具图标(PNG)。建议正方形、透明底,和游戏物品图标一致。
  3. 点「生成并保存」。程序把文件写到 resource_pack_*/textures/yclh_items/列车ID.png,并改好 item_texture.json

不上传图标时,会把默认 spawn.png 复制为 列车ID.png不会删除 spawn.png。生成清单预览里能看到物品 ID 和图标路径。

游戏内怎么用

  1. 启用控制器主包 + 你的附加包(行为包、资源包都要开)。
  2. 创造栏打开分类「宇创轨道交通」,拿取本包生成器。
  3. 手持该物品右键:打开列车生成 UI,并锁定本包车系(跳过选模型页)。

主包自带的 yclh:i_spawn 仍然可用,会列出已注册的全部附加包。本包 scq 只负责打开「这一包」。

如何升级旧附加包(v1.0.20)

适用于早期用旧版生成器做出的附加包:游戏里没有本包生成器物品、缺少 yclh_spawn_* 脚本,或图标还停在共用的 spawn.png

准备

  • 把该附加包的 behavior_pack_*resource_pack_* 打进同一个 ZIP
  • 准备一张 PNG 作为新的生成器工具图标。
  • 在生成器顶部选好保存路径。

操作步骤

  1. 打开最新版客户端(exe / apk v1.0.21),点底部「升级」。
  2. 选择旧附加包 ZIP。
  3. 同时选择生成器工具图标 PNG。程序按注册 JSON 识别列车 ID,把图标自动命名为 列车ID.png
  4. 点「导入并导出升级后的 ZIP」。新文件名带 _功能升级,不会覆盖原 ZIP。

会自动补上什么

内容结果
生成器物品yclh:<列车ID>scq,出现在创造栏「宇创轨道交通」
物品图标textures/yclh_items/列车ID.png
独立脚本yclh_spawn_<addon_id>/(含 __init__.py),不占用主包 BlockEntityScripts
创造栏分类补齐 netease_tab(若旧包没有)
spawn.png保留不删

升级只补齐生成器相关文件,不会重做水牌。若你后来又换过模型,请另外使用「重新扫描现有附加包水牌」。

模板是什么 · 前置条件

本工具基于开源模板「轨道交通列车附加包(7001 默认四节编组)」克隆生成独立的 BP + RP。控制器主包闭源,玩家必须同时安装主包与你的附加包才能运行。

默认实体:yclh:yclh7001_1(车头)~ _4(车尾)。生成器会自动改命名空间、UUID、文件名,避免多附加包冲突。

自定义模型与水牌的正确操作流程(v1.0.15)
  1. 在 Blockbench 中将屏幕骨骼命名为 neiping*waiping*
  2. 骨骼末尾追加准确的 __face_north/south/east/west/up/down
  3. 在生成器四节车厢卡片中分别导入最终模型 JSON
  4. 生成器先替换模型,再烘焙 ScreenFace v2,最后写入 cars[].screensyreg.q
  5. 如果生成后又手工替换模型,必须使用客户端中的“重新扫描现有附加包水牌”生成新 ZIP。

不导入模型时会继续使用默认 7001 模型和默认屏幕数据;单纯替换生成后 ZIP 内的模型不会自动更新水牌。

模板目录结构
behavior_pack_yclh_default/
├── data/yclh_addons/yclh_default.json   ★ 主包扫描注册
├── netease_items_beh/yclh7001scq.json   ★ 本包列车生成器物品
├── netease_tab/                         ★ 创造栏「宇创轨道交通」
├── yclh_spawn_yclh_default/             ★ 独立脚本,勿放到 BlockEntityScripts
├── entities/          yclh7001_1~4.json
├── animation_controllers/  yclh7001_1_controller.json
└── functions/
    ├── tick.json → register(每 10 tick 节流)
    ├── yclh7001/    列车运行 mcfunction ×6
    └── yclh_addons/ 注册自检 mcfunction ×4

resource_pack_yclh_default/
├── entity/ + models/entity/   各 4 个 json
├── animations/yclh7001_1.animation.json   ★ 仅车头一份
├── animation_controllers/yclh7001_1_controller.json
├── netease_items_res/yclh7001scq.json
└── textures/yclh_items/
    ├── spawn.png          ★ 保留
    └── yclh7001.png       ★ 本包生成器图标(列车 ID)

模板 intentionally 不含

不含说明
textures/entity/*.png生成器从主包自动复制;可自定义路径
functions/*/ani/已废弃,灯光由主包 Python 触发
车身独立动画文件中间/车尾引用车头 animation_base
ani3~15、mode3~33已裁剪,与主包 UI 对齐
动画与实体分工

车头 yclh7001_1

16 条动画引用、8 个 animation_controllers(含 tilt_common):

open/close 四门 ani1 / ani2 mode1 / mode2 speed_meter notch wiper revinv tilt_common

车门动画名不可改,骨骼名可自定(见 animation.readme.txt)。

受电弓(可选,默认车头 + 第 2 节启用)

sdgq 升起 sdgl 降落 controller8 / ct8

动画名不可改,骨骼可在 Blockbench 中替换(见 *.animation.readme.txt)。

地板 Y 高度 floor_y(生成器「地板高度」)

车厢地板相对实体模型原点向上多少方块,不是世界坐标 Y。主包「列车地板」功能用此值把玩家放到正确高度。默认 1.2;7001 模板四节通常相同,填全局即可。

若某节模型 pivot 不同,可在该节单独填覆盖值。不同附加包仅当模型地板高度与 7001 不一致时才需改,否则保持 1.2。

注册 Y 偏移 headloc_y_offset(多包共存必看)

附加包注册时会在最近玩家头顶向上偏移 N 格 summon 一只 yclh:yclh_headloc 作为数据载体(never_despawn),再贴上 yreg.* 标签供主包扫描。生成器字段名 headloc_y_offset,默认模板为 36(即 execute at @p positioned ~ ~36 ~)。

每个附加包必须填不同的整数(如 30、33、36、39、42…)。与已有附加包重复会导致选择器 r=1,c=1 串台、注册冲突或车型错乱。发布前请在备案/交流群确认未被占用。

系列前缀自动命名

填写系列前缀(如 mytrain)后,四节实体短名自动变为 mytrain_1mytrain_4,实体 JSON、模型、贴图 PNG 同步改名。

车身 / 车尾 yclh7001_2~4

基础为倾斜 4 条 + 车门 4 条;勾选受电弓后额外保留 sdgq/sdgl + controller8

生成器自动完成的工作
  • manifest 四个 UUID 重生;BP 依赖新 RP
  • 命名空间 yclh:<addon_id>:
  • 文件名同步自定义:实体、模型、贴图 PNG、车头动画/控制器
  • 注册 JSON、register 广播按 display 与 visual_length 更新
  • 裁剪车身/车尾 RP 未用动画;删除 legacy ani/ mcfunction
  • 写入本包生成器物品 yclh:<列车ID>scq、独立脚本 yclh_spawn_<addon_id>/、创造栏分类
  • 生成器图标保存为 textures/yclh_items/列车ID.png(可上传;不上传则复制默认 spawn.png)

表单字段(exe / apk 相同)

字段说明
addon_id全模组唯一,小写字母开头
display生成 UI 车系名
series_prefix替换模板 yclh7001 串;同步实体短名为 前缀_1~_4
floor_y地板 Y 高度(方块),默认 1.2;全局填写,可每节覆盖
headloc_y_offset玩家头顶向上偏移格数 summon headloc,默认 36;每包唯一
spawn_icon_png可选,生成器工具图标 PNG(base64),写入 textures/yclh_items/列车ID.png
贴图四节各复制独立 PNG(yclh7001_1~_4 → 你的实体名.png)
entity_short实体短名 → 输出文件名
visual_length车长(方块),头尾 32.0、中间 28.75
animation_base仅车头填写,中间/车尾自动继承

输出 ZIP 解压后,分别复制 behavior_pack_* / resource_pack_* 到网易版对应目录。

注册与自检流程
tick.json → register.mcfunction(节流)
  └─ 每 10 tick → register_body
       ├─ tellraw 欢迎语
       ├─ check_main 检测主包(约 3 秒)
       └─ session 变化 → do_register(headloc + yreg 标签)

车型注册:主包扫描 behavior_packs/*/data/yclh_addons/*.json
  → 读取 addon_id / display / cars[] → 生成 UI「模型」按钮
命名规则 FAQ

addon_id 与文件夹名必须一致吗?

主包只认 JSON 内 addon_id 字段;生成器会三处统一,建议保持一致。

实体 yclh7001_1 必须改吗?

自用可不改;发布或多包共存须改命名空间和/或 entity_short,生成器一次性同步 entities、entity、models、注册 JSON。

多附加包共存

每个附加包必须使用不同的 addon_id。列车系列前缀也建议不同;若留空,本包生成器物品会写成 yclh:<addon_id>scq,脚本目录为 yclh_spawn_<addon_id>(含 __init__.py),不会与主包 BlockEntityScripts 冲突。主包 yclh:i_spawn 仍可检索全部附加包。

旧附加包没有生成器物品?

在生成器中使用「升级旧附加包」:导入旧 ZIP,并同时上传生成器图标 PNG。程序按列车 ID 命名为 textures/yclh_items/列车ID.png,补齐 scq 物品与独立脚本,另存新 ZIP,不覆盖原文件。

v1.0.21 更新说明
  • 底部四页:生成、水牌、升级、关于分成独立子页,底部栏切换
  • 顶部保存路径:生成、重扫水牌、升级旧包共用同一保存位置
  • 须知、备案与联系方式收进「关于」页,主界面更干净

请下载最新 exe / apk(v1.0.21)后使用。

v1.0.20 更新说明
  • 本包列车生成器物品:每个附加包生成 yclh:<列车ID>scq,右键打开生成 UI 并锁定本包车系;多包共存不再抢同一个物品
  • 自定义工具图标:生成时可上传 PNG,自动放到 textures/yclh_items/列车ID.png,保留 spawn.png
  • 升级旧附加包:导入旧 ZIP 并同时上传图标,补齐 scq 物品、独立脚本 yclh_spawn_* 与创造栏分类,另存新 ZIP
  • 独立脚本目录:附加包 Python 放在 yclh_spawn_<addon_id>/(含 __init__.py),禁止使用主包的 BlockEntityScripts

请下载最新 exe / apk(v1.0.21)后使用。旧版生成的附加包可用客户端「升级」页补齐。

v1.0.15 更新说明
  • 启动更新检测:拉取 update.json,低于 min_supported 强制更新,低于 latest 建议更新
  • 强制更新锁定:过旧版本禁用生成与水牌重扫,引导打开飞书下载页
  • Windows / Android 共用策略:两端读取同一策略文件,发版只需改一处

请下载最新 exe / apk(v1.0.15)后使用。

v1.0.14 更新说明
  • 四车型归纳识别:基于默认 7001、JNDT、Tokyu 与 Craf 的实测结果统一 ScreenFace v2 规则
  • 内屏自动朝车厢:端墙与侧墙按车厢几何中心选择物理面,不再依赖头尾车型文件名翻面
  • 倾斜顶屏保留指定面:显式 up/down 面优先,避免倾斜后的水平法线分量导致 JNDT 顶屏误翻
  • 外屏自动朝车外:只给内侧 UV 时自动跨过方块厚度构造外露面
  • 外壳遮挡自动补偿:比较同位置左右外屏外缘,自动外移内缩的一侧,避免玩家靠近时文字消失
  • 车型级精细覆盖:支持仅调整特定实体的间距、居中与缩放,不影响同包其他车厢

请下载最新 exe / apk(v1.0.14)后使用。

v1.0.13 更新说明
  • 支持生成前导入四节最终模型,并可重新扫描现有附加包水牌。
  • 生成 ScreenFace v2、cars[].screens 与 yreg.q,报告每节识别结果。
  • 支持旋转屏幕长边识别、外屏物理外露面与注册 Y 偏移。
v1.0.4 更新说明
  • 地板 Y 高度 floor_y:生成器表单一键设置,写入注册 JSON,无需手改
  • 受电弓:按节勾选,自动保留升起/降落动画与控制器
  • 系列前缀:填写后实体名、贴图、模型文件自动同步为 XXX_1~XXX_4
  • 四张贴图:修复仅生成 2 张的问题,四节各有一张默认贴图

请下载最新 exe / apk(v1.0.4)后使用;旧版生成的附加包可能缺少 floor_y 或受电弓配置。

地板 Y 高度怎么填?

生成器中的「地板高度 floor_y」就是此前所说的 Y 坐标数值,单位是方块

含义

从实体模型原点(pivot)沿竖直方向到车厢地板面的距离。主包开启「列车地板」后,会把玩家放到该高度,避免悬空或陷地。

要不要每个附加包不同?

  • 模型基于 7001 模板、地板高度相近 → 全局填 1.2 即可,四节留空用全局。
  • 自建模型、地板明显偏高/偏低 → 进游戏试「列车地板」,微调全局 floor_y(如 1.0~1.5)。
  • 某一节 pivot 特殊 → 仅在该节「本节 floor_y」单独填,其余用全局。

与 visual_length 的区别

visual_length水平方向车长(编组间距);floor_y竖直方向地板高度,两者互不影响。

常见问题
现象排查
未检测到控制器主包未安装或未启用主包
生成 UI 无车型BP 未启用;注册 JSON 缺失/错误
命名冲突addon_id 或 entity type 重复
列车不动cars[] 缺少 role: head
编组脱钩visual_length 与模型实际长度不符
生成 UI 无车型 / 注册失败检查 headloc_y_offset 是否与其他附加包重复;默认 36
地板模式悬空/陷地调整 floor_y;默认 1.2,模型不同可试 1.0~1.5
受电弓不升降对应节未勾选受电弓;或动画文件缺少 sdgq/sdgl
只有 2 张贴图请使用 v1.0.4 及以上客户端重新生成
多余 ani/*.mcfunction使用最新客户端,会自动删除
创造栏没有本包生成器请用 v1.0.20 重新生成,或使用「升级旧附加包」;确认 BP 含 netease_tab 且物品 category 为 ycgdjt
右键生成器没反应 / 多包抢物品确认物品是 yclh:<列车ID>scq 而不是共用的 yclh7001scq;脚本目录必须是 yclh_spawn_附加包ID
生成器图标仍是默认图生成或升级时请上传 PNG;图标文件名必须是列车ID.png,且 item_texture.json 指向该路径

模板 MIT 开源;控制器主包未开源,分发请注明需安装主包。

📚 附加包信息库

📞 工作室联系

  • 快手:宇创领航工作室
  • 抖音:宇创领航工作室
  • 微信公众号:宇创领航工作室
  • B站:宇创领航工作室
  • 官方 QQ 群:686257409