列车附加包生成器
双击运行,无需 Python。底部四页切换:生成、水牌、升级、关于。可上传生成器图标,也可把旧附加包升级成带本包生成器物品的新 ZIP。
下载 Windows 版 (.exe)下载客户端,离线一键生成行为包与资源包。
面向创作者 · 需配合宇创领航控制器主包使用
双击运行,无需 Python。底部四页切换:生成、水牌、升级、关于。可上传生成器图标,也可把旧附加包升级成带本包生成器物品的新 ZIP。
下载 Windows 版 (.exe)手机端离线生成,与桌面版相同逻辑。底部栏切换功能页,支持上传图标、升级旧包,并导出到系统文件夹。
下载 Android 版 (.apk)Windows 或 Android,离线可用
导入模型、可选上传生成器图标,一键导出 ZIP
装入行为包 + 资源包,配合主包游玩
生成、水牌、升级、关于分成独立子页,底部栏一键切换。保存路径固定在顶部,不再把所有功能堆在同一长页。
每个附加包自带 yclh:<列车ID>scq。创造栏「宇创轨道交通」里能拿到,右键打开生成 UI 并锁定本包车系,多包共存互不抢物品。
生成时可上传 PNG。程序按列车 ID 自动命名为 textures/yclh_items/列车ID.png,不会删除原来的 spawn.png。
早期生成、没有本包生成器物品的 ZIP,可连同图标一起导入。程序补齐物品、独立脚本和图标后另存新包,不覆盖原文件。
以下内容为附加包模板技术说明,供其他创作者查阅。点击章节展开。
从 v1.0.20 起,每个列车附加包都会自带一把本包列车生成器,不必再依赖主包里的通用 yclh:i_spawn 才能开本包车系。
yclh7001 → 列车 ID = 该前缀,例如 yclh105 → 物品 yclh:yclh105scq。yclh7001 → 列车 ID = 附加包 ID,例如 yclh_yi → 物品 yclh:yclh_yiscq,避免多包抢同一个物品。resource_pack_*/textures/yclh_items/列车ID.png,并改好 item_texture.json。不上传图标时,会把默认 spawn.png 复制为 列车ID.png。不会删除 spawn.png。生成清单预览里能看到物品 ID 和图标路径。
主包自带的 yclh:i_spawn 仍然可用,会列出已注册的全部附加包。本包 scq 只负责打开「这一包」。
适用于早期用旧版生成器做出的附加包:游戏里没有本包生成器物品、缺少 yclh_spawn_* 脚本,或图标还停在共用的 spawn.png。
behavior_pack_* 和 resource_pack_* 打进同一个 ZIP。列车ID.png。_功能升级,不会覆盖原 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、文件名,避免多附加包冲突。
neiping* 或 waiping*。__face_north/south/east/west/up/down。cars[].screens 与 yreg.q。不导入模型时会继续使用默认 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)
| 不含 | 说明 |
|---|---|
textures/entity/*.png | 生成器从主包自动复制;可自定义路径 |
functions/*/ani/ | 已废弃,灯光由主包 Python 触发 |
| 车身独立动画文件 | 中间/车尾引用车头 animation_base |
| ani3~15、mode3~33 | 已裁剪,与主包 UI 对齐 |
16 条动画引用、8 个 animation_controllers(含 tilt_common):
车门动画名不可改,骨骼名可自定(见 animation.readme.txt)。
动画名不可改,骨骼可在 Blockbench 中替换(见 *.animation.readme.txt)。
指车厢地板相对实体模型原点向上多少方块,不是世界坐标 Y。主包「列车地板」功能用此值把玩家放到正确高度。默认 1.2;7001 模板四节通常相同,填全局即可。
若某节模型 pivot 不同,可在该节单独填覆盖值。不同附加包仅当模型地板高度与 7001 不一致时才需改,否则保持 1.2。
附加包注册时会在最近玩家头顶向上偏移 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_1~mytrain_4,实体 JSON、模型、贴图 PNG 同步改名。
基础为倾斜 4 条 + 车门 4 条;勾选受电弓后额外保留 sdgq/sdgl + controller8。
yclh: → <addon_id>:ani/ mcfunctionyclh:<列车ID>scq、独立脚本 yclh_spawn_<addon_id>/、创造栏分类textures/yclh_items/列车ID.png(可上传;不上传则复制默认 spawn.png)| 字段 | 说明 |
|---|---|
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「模型」按钮
主包只认 JSON 内 addon_id 字段;生成器会三处统一,建议保持一致。
自用可不改;发布或多包共存须改命名空间和/或 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,不覆盖原文件。
请下载最新 exe / apk(v1.0.21)后使用。
yclh:<列车ID>scq,右键打开生成 UI 并锁定本包车系;多包共存不再抢同一个物品textures/yclh_items/列车ID.png,保留 spawn.pngyclh_spawn_* 与创造栏分类,另存新 ZIPyclh_spawn_<addon_id>/(含 __init__.py),禁止使用主包的 BlockEntityScripts请下载最新 exe / apk(v1.0.21)后使用。旧版生成的附加包可用客户端「升级」页补齐。
update.json,低于 min_supported 强制更新,低于 latest 建议更新请下载最新 exe / apk(v1.0.15)后使用。
请下载最新 exe / apk(v1.0.14)后使用。
请下载最新 exe / apk(v1.0.4)后使用;旧版生成的附加包可能缺少 floor_y 或受电弓配置。
生成器中的「地板高度 floor_y」就是此前所说的 Y 坐标数值,单位是方块。
从实体模型原点(pivot)沿竖直方向到车厢地板面的距离。主包开启「列车地板」后,会把玩家放到该高度,避免悬空或陷地。
1.2 即可,四节留空用全局。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 开源;控制器主包未开源,分发请注明需安装主包。