开启左侧

[AI制作][MTR 4.0.5+ 1.20.1 Fabric]MTR仿12306线上国铁购票模组 mtr12306 beta 1.0.0

[复制链接]
(已复活)朗日 昨天 12:43
本帖最后由 (已复活)朗日 于 2026-11-11 19:41 编辑
9 w0 A* \6 s2 O8 O% ^1 g$ q% L8 ]" T5 `1 W$ g6 r6 L( u! t, r
注:本模组由Deepseek V4.1 Flash 1017编写,各位大佬们测试出bug请反馈喵,我会及时修正压力AI的喵
: w1 ^$ g1 D& ~5 M0 j. x3 y下面是模组简介和下载链接:
* t. p% _1 ~  X( N1 Z% G5 @, A" ?4 @+ {1 _, x
适用版本:Minecraft 1.20.1 / Fabric,需要 MTR 4.0.5 或更高(强制前置)0 e4 R  x1 V7 h$ `: n% G5 D
当前版本:b1.0.0-hotfix1(Beta 1)
7 z, o/ r6 V# I6 a1 e* k开源协议:MIT# n1 T& Z) ?4 [
源码仓库:https://github.com/LangriSunnyawa/mtr12306
) v8 D  r1 H. F5 J. I3 j* @下载地址:https://github.com/LangriSunnyawa/mtr12306/releases/tag/b1.0.0) |0 A- T: t, u& z# x  k" ^
════════════════════════════════════════  C% n3 p6 B- `
一、这是什么3 f" v9 ?8 ?; Z- g- a) G- {
════════════════════════════════════════9 u3 j: r" c( z5 p+ g$ P
一个建立在 MTR(Minecraft Transit Railway)之上的网页式铁路客票系统。0 H' z# i( b$ r+ H8 ?6 B
玩家在浏览器里像逛 12306 一样查车次、选坐席、挑座位、付钱出票;- \) u/ M2 n) g9 d* P. P+ P) J
服务器里摆放检票闸机,闸机只放行「本站正在检票车次」的持票旅客 —— 有票抬杆放行并显示乘坐区间,无票原地拦下并说明原因。# O/ R& W7 u2 |; c3 G3 g
换句话说:MTR 负责把车开起来,这个模组负责让人「买票 — 检票 — 上车 — 出站」这一整套客运流程跑起来。/ i1 Z8 A+ Y- M  D+ R
【图 1:网页购票页截图】
4 m9 W& D( U3 ^/ }1 V) W' X【图 2:闸机检票通过时的标题栏「乘坐区间」提示】
  b8 h1 H0 I# ]2 V# \+ y) v5 B════════════════════════════════════════- ^' W  m( y; r$ w8 ~
二、功能一览
$ o* B* d* Z9 |2 ]$ R+ @: W════════════════════════════════════════# v" {: W3 \8 a$ U/ u. n, y6 k8 x
■ 网页购票(12306 风格)
4 u' [, D/ ]9 @9 Y* P& M- q· 选出发站 / 到达站 / 日期 → 查询车次 → 选择坐席(直接显示票价与余票)→ 选车厢 → 在座位图上点座位(可留空自动分配)→ 扣款出票
) ~9 v" F( i2 f" W· 我的车票 / 退票:未检票且未发车可退票,票款原路退回+ B9 o0 V" @4 e/ V" C/ H
· 检票动态:今日发车与「检票中 / 已强制停检」状态,10 秒自动刷新" D% b/ Q9 J+ l5 t/ M2 ^4 u) p; h
· 出票包含:票号、车次、乘车日期、区间、坐席、座位号、检票口、票价* y, h' u* A  z" ~  U+ F
■ 坐席 / 车厢 / 餐车
$ e( u4 D9 {# [1 ?1 E3 v" s  q· 支持二等座、一等座、商务座、城际(自由席)、无座7 S% V0 k2 I7 ]
· 城际为不对号入座:出票不分配座位号,票面显示「XX车 自由席」,按定员限量
3 m* ^7 k) ?; w, a* H! U: i! M· 餐车可以单独标注:在任意坐席里填「餐车车厢号」,餐车会出现在座位图中但不可选座、不参与排座: h( x0 _2 Z6 `: O$ m" {; S7 O3 n
· 每节车厢可设置排数与座位排列(如 A B C|D F,竖线为过道),座位号按「排 + 列字母」生成,例如 12F
1 m$ k( `/ @6 I& M■ 票价:统一 0.1 元/公里# x% R/ H4 i3 ~6 m* n. S3 r0 ?
· 停靠站填写累计里程,票价 = 里程差 × 0.1 元/公里 × 坐席倍率(farePerKm 可改): y8 n, p/ W' \+ s- U
· 扣费直接走 MTR 自带的 fares 钱包(计分板 mtr_balance),与 MTR 售票机、票价闸机共用同一余额. t7 m5 b8 |' {; R, g4 a2 s! H
· 余额不足直接拒票并提示差额;退票自动退款;管理员可用 /mtr12306 balance <玩家> <金额> 充值+ V( d* p. A7 u1 N5 y; {$ C
■ 车次:批量开行 + 在线修改
' N1 ]. C7 w4 I3 F: p· 批量开行:填号段(前缀 + 起止号 + 步长 + 位数)、停站模板(区间运行分钟 / 停站分钟 / 区间里程)、车底与坐席、首班时刻 + 发车间隔,一次生成整批车次并自动推算时刻表与累计里程
& }+ |7 K) O" N# F* {( k# P$ \  { 例:G1101~G1105,06:00 首发、间隔 20 分钟,自动得到 06:00 / 06:20 / 06:40 …& q5 V: h- V4 j6 z
· 车次列表点「修改」即可载入既有配置,改完保存覆盖;支持「每天开行」或指定日期、跨日车次(天偏移字段)
8 @, [$ |0 l' G3 K■ 检票闸机(模型沿用 MTR)3 R1 @& G9 @$ x7 S5 t" S1 N" \9 y* \
· 模型几何直接沿用 MTR 的 ticket barrier(MIT 许可),只重做了贴图,可以和 MTR 自带闸机混排
: z6 |$ R% ~+ Q6 Z  A2 X· 四种闸机,放在独立创造物品栏「MTR-12306 检票闸机」里:
: j# \  f  \# ]% A9 ? 进站闸机:校验车票 → 绿箭头放行并核销车票;无票红箭头推回并提示原因
: C9 W6 E" Q" d, u/ d 出站闸机:只放行从站台侧走出,并记录车票「已出闸」) C5 L3 K" }! O1 `  c
 双向闸机:进站查票;出站要求「今日已有已检票车票」, g9 n5 z8 x2 \) _$ _0 D* _  M2 u
 换乘闸机:一次通过同时完成「上一段出闸」+「接续车次检票」,两段区间分别显示
0 k) u  l2 I0 ^4 j· 配置面板物品:拿「闸机配置面板」右键闸机(需 OP)才会打开配置菜单,可设置所属检票口与通行模式3 C5 B, m1 e+ _% w4 _
· 检票口限定在闸机所在 MTR 车站:模组会读 MTR 的车站区域,配置菜单只列出该车站的检票口;不在任何车站内时列表为空并提示; c* ]0 V& b7 E8 U- P5 [2 s
■ 后台与账号7 D* n8 W5 m# Z& F
· 管理后台(/admin):车站(一键导入全部 MTR 车站)、检票口、车次 / 坐席 / 车厢、闸机绑定、检票控制(手动开检 / 强制停检)、检票校验、票价钱包、车票总览
: W9 @/ G- y5 |· 网页注册:昵称 + Minecraft 名称 + 密码注册(加盐多轮哈希),之后用昵称 + 密码登录;车票会记录下单账号;也保留「游戏内 /ticket login 取验证码」登录方式* @- s5 s- W3 ]' W9 f9 [
════════════════════════════════════════
6 c  q5 S2 ]4 [4 |2 _& O三、运行环境; g! @& a" D3 i$ D
════════════════════════════════════════' V0 m& Q4 Z. p; S: L8 L$ a- q
· Minecraft:1.20.10 V* H% L3 m' H2 i: \5 m
· 模组加载器:Fabric Loader ≥ 0.153 E, L, M  p$ ?+ p( W" Z% P
· 依赖:Fabric API、MTR 4.0.5 或更高(必需)
& W) Z# H; F/ _" S4 D+ @8 z· Java:17) \+ `# U0 c! ]- i  ]0 ^
· 安装位置:客户端 + 服务端都要装(闸机是方块,含模型、贴图与配置界面)9 `& D6 s4 i; N! V" L
════════════════════════════════════════) q/ K. Q/ q6 F4 A4 h/ b# g& a
四、安装与开服% h: Y3 s# i9 E/ r% Y9 ]2 a# g) ~2 z
════════════════════════════════════════
" Y# ?7 _" A" z: N1. 把 mtr12306-b1.0.0-hotfix1.jar 放进客户端与服务端的 mods 文件夹;
% ^- X; a" s6 G8 u3 s/ T, k2. 装好 fabric-api 与 MTR 4.0.5+;
$ }1 u- |+ a+ Z2 l" A; t$ [( e3. 启动服务器,会自动生成 config/mtr12306.json;$ H8 o6 \3 f! r) j9 G
4. 看启动日志,会打印网页地址:
5 A: [2 b( _( I6 O8 S( H4 w: H [MTR-12306] 网页购票系统已启动:http://localhost:8123/
1 d9 T1 Y8 y  n; y1 j/ t5 c* h [MTR-12306] 局域网访问地址:http://192.168.x.x:8123/
/ o5 u0 H) w* g$ }: S9 A8 u5. 浏览器打开 http://服务器IP:8123/ 购票,/admin 进管理后台(默认密码 mtr12306,请务必修改)。
! a7 F0 @# Q3 e# h+ c$ u; {: ?! \* P常用配置(config/mtr12306.json):5 z* A0 |# t1 H( P. p# @
 {3 |5 p& X! r: K8 V+ j( N% C2 ?
  "webPort": 8123,
9 j4 ?  ^0 b" d( b  "adminPassword": "改成你自己的密码",8 q8 ^/ y9 ^$ P; A- O: f
  "timezone": "Asia/Shanghai",3 `1 |  b- D; Q' P" Z
  "farePerKm": 0.1,, o% s* k/ D. M: @5 {' A( F0 P/ m
  "boardingOpenMinutes": 15,. Q' V- G! P) O1 W9 t1 W% Y9 e- u
  "lateGraceMinutes": 2,* @8 m4 \. b5 f2 y2 t* S8 g
  "transferWindowMinutes": 30,
+ ?( x' l4 i! @2 |+ d  "requirePayment": true,
4 m! h) q8 K* @# i2 ]" _  "requirePlayerAuth": true+ M% D* v5 V8 L5 q8 U
 }
. E9 r1 Y, i, k; w& Q- Y════════════════════════════════════════- o; c& J+ W% a  u) u7 B) a
五、五分钟上手
" Z0 t4 m* J, ^3 u& ~1 A════════════════════════════════════════( d/ P3 E% y  Q3 L0 C; o
1. 在 MTR 里划好车站(车站工具 / MTR 面板),记下车站名;! Z" \/ u) L: b
2. 后台「车站管理」→ 一键导入全部 MTR 车站(保持同名,闸机才能绑到该站的检票口);, D2 l! C* G$ A/ _, ~6 I. A2 d- v
3. 「检票口管理」→ 新建 A1(可指定负责站台,留空 = 全部);
: r: f1 [  u. {1 k% }4. 「车次管理」→ 填车次号、停靠站(站台 / 到达 / 发车 / 天偏移 / 累计里程)、坐席与车厢(含餐车、城际自由席)→ 保存;
2 U6 L! R0 v9 k+ V# t! H  或者用「批量开行」按号段一次生成一整批;
* o4 D- H, m3 h0 c7 h# y; `$ I/ ]5. 游戏内 /give @s mtr12306:ticket_gate_entry(或从创造物品栏取),在站厅摆一排,放置时面向站台一侧;
9 Z  [2 a' S- i- G/ }6. 拿「闸机配置面板」右键闸机 → 选检票口 + 模式 → 保存;
  H0 X" F* O" H) V+ f7. 玩家网页注册 / 登录 → 买票 → 到检票时间走过闸机 → 抬杆 + 屏幕显示「乘坐区间」;
- b8 _* q) A9 ~% N" \7 p8. 管理员可用 /mtr12306 boarding open <车次> <车站ID> 15 立即开检 15 分钟演示。
8 j/ O( n5 g/ {: P( \1 h【图 3:管理后台车次 / 坐席配置】9 G- t- z& b, e: R4 C5 s& g
【图 4:座位图选座】3 [0 ^* O. i2 W5 V: |5 t- l
════════════════════════════════════════2 m6 P% K5 b3 J. P
六、命令速查9 S% F! U5 b5 s9 T- X7 Z; [2 E  S
════════════════════════════════════════) t7 g9 D( n: a' v2 m
管理员(权限等级 2):* `. q- l0 o7 G0 U. j# g! I# V% S
 /mtr12306 help; V6 B- J6 v) d7 F+ K& N8 h" d4 s- I
 /mtr12306 web start|stop|info- f4 C6 q6 ]9 s
 /mtr12306 station add <名称> [站台…] | list | remove <id>1 l4 z9 B6 y3 b- v+ q
 /mtr12306 checkpoint add <车站id> <检票口名> [站台…] | list | remove <id>
7 B) Z6 }/ p. I4 [4 _' y! [. s /mtr12306 service list | remove <车次>6 b& T" m( U7 u2 W; A5 Z
 /mtr12306 gate bind <检票口id> [ENTRY|EXIT|BOTH|TRANSFER] | unbind | info( q; p! Q- }% E( {2 H% k
 /mtr12306 boarding list | open <车次> <车站id> [分钟] | close <车次> <车站id>) V1 i: y- ~  z% p
 /mtr12306 ticket buy <玩家> <车次> <出发站id> <到达站id> [坐席码]
  K3 l0 T3 P2 \$ R7 ]; p /mtr12306 ticket list$ c/ _0 u3 @, y4 O
 /mtr12306 balance <玩家> [充值金额]
" H* @8 a: Z) T( {- R( M3 R /mtr12306 login <玩家>  (为其签发网页登录验证码,控制台可用)
% f) s- n: n. J$ {1 d: i6 p; t所有玩家:  _( w. i& O4 z1 Y# r4 Y# |# r
 /ticket    我的车票与余额0 s/ a" S2 J' D) e0 B
 /ticket list   同上  H0 g' b0 Y# k$ f4 x  w
 /ticket login  获取网页登录验证码3 l" u- j6 B2 L2 V  C$ F  g
════════════════════════════════════════
% s1 o+ h6 q1 F/ J# @七、已知限制 / 注意事项
2 R8 {8 r$ T2 N6 ^════════════════════════════════════════
, _" x% z. H* e# O" G· 闸机没有「栏杆」:MTR 的闸机模型本身只有机柜,所以拦截是靠推回实现(和 MTR 一致)。介意的话可以在闸机间加玻璃板做视觉隔断。
# F! W0 @! e+ w* [4 t· 闸机必须在 MTR 车站范围内才能选检票口;本系统车站要与 MTR 车站同名(用「一键导入」最省事)。3 K; D% _$ ]2 J) i6 L' |, k+ t
· 后台「闸机管理」的下拉框是管理员通道,允许跨站改绑;玩家侧 / 游戏内配置严格按车站过滤。$ c6 A# h4 z, C9 V
· 网页默认监听 0.0.0.0:8123 且是 HTTP 明文:公网部署请改端口 / 防火墙,或套一层 TLS 反向代理,并一定修改默认管理密码。1 b( J. f, }  f( O: j
· 换乘闸机依赖两个条件:①上一段车票已检票进站且未出闸;②本站有已购接续车票且在检票窗口或 transferWindowMinutes(默认 30 分钟)内。
; Q' r: }7 L( d9 ^; j4 L! S* X5 o════════════════════════════════════════
0 r; A. V! [) ^; X0 Y八、下载0 F1 y: E& K$ ?' H* ^
════════════════════════════════════════
  O( w, i: o( B6 V! V& r· Release(推荐):https://github.com/LangriSunnyawa/mtr12306/releases/tag/b1.0.0-hotfix1( j+ j# o( M( ^+ b8 p
  mtr12306-b1.0.0-hotfix1.jar(模组本体)
7 S$ l% N' C! s9 i2 p% i  mtr12306-b1.0.0-hotfix1-sources.jar(源码包)
# Y  m, c  J* G· 源码仓库:https://github.com/LangriSunnyawa/mtr123067 K5 G4 S5 P5 I* c0 [% B
  自己构建:./gradlew build → build/libs/mtr12306-b1.0.0-hotfix1.jar4 _9 @! Y, w! X0 T) p" ^
════════════════════════════════════════: D5 L3 T( a+ x. c9 C6 z& l. m
九、致谢与协议
3 i. Y# q( ^: [════════════════════════════════════════5 o0 M; g7 t$ B6 `1 K
· 闸机模型几何来自 MTR(Minecraft Transit Railway)的 ticket_barrier,MTR 采用 MIT 许可;本模组仅复用其几何结构,贴图与全部代码为独立实现。5 K6 W! X8 x3 x, \7 A& A( M/ }
· 本模组以 MIT 协议发布,欢迎自行修改、二次分发;转载 / 整合包请保留出处与许可。
' Q9 @) O) Y) {1 s8 Z) L' a反馈与建议:b1.0.0-hotfix1 是首个 Beta,欢迎在本帖回复报 Bug(请附上 latest.log、MTR 版本、以及出现的问题喵)
0 }4 @7 J4 j8 e9 z, M, s/ k( Y3 R+ M* Z) z1 ?& `

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

深圳地铁L5-0578 2 小时前
可以适配3.2.2吗?或者要米?
回复

使用道具 举报

楼主 (已复活)朗日 1 小时前
深圳地铁L5-0578 发表于 2026-11-11 18:19
: ]1 l: J& ]4 Q3 ^2 O+ U可以适配3.2.2吗?或者要米?

$ B* K' Y" S7 _0 m( K# H0 R% b1 U) T# y正式版绝对不会付费的,3.2.2的话我去压力AI(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表