开启左侧

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

[复制链接]
(已复活)朗日 5 小时前
注:本模组由Deepseek V4.1 Flash 1017编写,各位大佬们测试出bug请反馈喵,我会及时修正压力AI的喵
3 a# j% n9 S- Q& s. L4 b. ~下面是模组简介和下载链接:! w$ o  J9 U( ]! H8 ?0 l

6 E$ _+ ?' D, }/ b$ t! Q# ~/ `) t适用版本:Minecraft 1.20.1 / Fabric,需要 MTR 4.0.5 或更高(强制前置)
8 X# h# I9 D4 j9 h- G- g当前版本:b1.0.0(Beta 1)5 J. L6 L9 W+ }& ?( G( p
开源协议:MIT1 g$ {. R0 X- _2 ?6 ?/ F( [
源码仓库:https://github.com/LangriSunnyawa/mtr12306' B- H( Z6 b& B* ~7 ~; w6 Z
下载地址:https://github.com/LangriSunnyawa/mtr12306/releases/tag/b1.0.0
: Y5 Q1 U3 j2 N7 y2 z0 B. Q3 l1 D════════════════════════════════════════
( C7 a  x' m: k5 a3 `% y$ r& f一、这是什么
5 q2 _! `$ L) a& u0 Y: ?════════════════════════════════════════; z# H- U6 Y3 W% I: j, q$ z
一个建立在 MTR(Minecraft Transit Railway)之上的网页式铁路客票系统。
, I! J: ~& ~% E- A: j% H( L玩家在浏览器里像逛 12306 一样查车次、选坐席、挑座位、付钱出票;
1 A& j* n2 J2 T7 J; H1 e: [服务器里摆放检票闸机,闸机只放行「本站正在检票车次」的持票旅客 —— 有票抬杆放行并显示乘坐区间,无票原地拦下并说明原因。. d- Y7 j; [% P6 c% N& p
换句话说:MTR 负责把车开起来,这个模组负责让人「买票 — 检票 — 上车 — 出站」这一整套客运流程跑起来。
4 l& m" d+ r, D【图 1:网页购票页截图】
% k  ~+ q5 G2 Y) V. |* w1 ^/ l1 d【图 2:闸机检票通过时的标题栏「乘坐区间」提示】
: P0 [3 {. e$ x. X: v/ F6 b════════════════════════════════════════5 Y. T0 X  ?( `( E7 l% r
二、功能一览6 ~( v- G9 `* Q& `; t: ?
════════════════════════════════════════/ T! Y( D& Z* L3 v4 ]1 F
■ 网页购票(12306 风格)
+ a  O* z5 R) \6 z) B2 \· 选出发站 / 到达站 / 日期 → 查询车次 → 选择坐席(直接显示票价与余票)→ 选车厢 → 在座位图上点座位(可留空自动分配)→ 扣款出票) T, i5 H. x3 D% x
· 我的车票 / 退票:未检票且未发车可退票,票款原路退回
" |2 B; q/ l9 J, [· 检票动态:今日发车与「检票中 / 已强制停检」状态,10 秒自动刷新& ~2 ~1 }; H4 |5 O6 X
· 出票包含:票号、车次、乘车日期、区间、坐席、座位号、检票口、票价
) N/ r" L" q4 G6 g■ 坐席 / 车厢 / 餐车! M" ~# F7 W2 c/ p$ B3 p3 G6 i- l! e
· 支持二等座、一等座、商务座、城际(自由席)、无座
7 D. [  X( m: A: l$ s1 q· 城际为不对号入座:出票不分配座位号,票面显示「XX车 自由席」,按定员限量
5 ~% H) \/ V: @. u; g, Q) o· 餐车可以单独标注:在任意坐席里填「餐车车厢号」,餐车会出现在座位图中但不可选座、不参与排座! C. K0 l. T0 {' T* Z
· 每节车厢可设置排数与座位排列(如 A B C|D F,竖线为过道),座位号按「排 + 列字母」生成,例如 12F
. _3 n, S/ Z. c9 J! A2 N5 W3 [■ 票价:统一 0.1 元/公里
6 S& h- e* x3 j) O, `/ I) f· 停靠站填写累计里程,票价 = 里程差 × 0.1 元/公里 × 坐席倍率(farePerKm 可改)! k" W* s( P! A' ]$ G" w+ n4 K
· 扣费直接走 MTR 自带的 fares 钱包(计分板 mtr_balance),与 MTR 售票机、票价闸机共用同一余额0 o4 e6 b) l+ {, I% _
· 余额不足直接拒票并提示差额;退票自动退款;管理员可用 /mtr12306 balance <玩家> <金额> 充值
9 V. n! k4 E  [# F$ n7 K( t1 {■ 车次:批量开行 + 在线修改
. Q& n: g9 g- r, G9 S, `  _/ u( ]· 批量开行:填号段(前缀 + 起止号 + 步长 + 位数)、停站模板(区间运行分钟 / 停站分钟 / 区间里程)、车底与坐席、首班时刻 + 发车间隔,一次生成整批车次并自动推算时刻表与累计里程
3 ]7 F1 d1 h$ [; d6 [$ i; q 例:G1101~G1105,06:00 首发、间隔 20 分钟,自动得到 06:00 / 06:20 / 06:40 …5 s# V' c' O. {) ~* M0 H
· 车次列表点「修改」即可载入既有配置,改完保存覆盖;支持「每天开行」或指定日期、跨日车次(天偏移字段)
9 \4 V3 J/ f; [  G3 @7 ?0 M  ~■ 检票闸机(模型沿用 MTR)
. K8 l9 w, s" n, i# L& n· 模型几何直接沿用 MTR 的 ticket barrier(MIT 许可),只重做了贴图,可以和 MTR 自带闸机混排
3 m( K5 c) _+ T0 i- v· 四种闸机,放在独立创造物品栏「MTR-12306 检票闸机」里:
& r, J6 ^* X/ T3 J1 ^# t# U5 N* ^/ P 进站闸机:校验车票 → 绿箭头放行并核销车票;无票红箭头推回并提示原因
" k& h8 q) S! D1 K1 w( p8 S% k 出站闸机:只放行从站台侧走出,并记录车票「已出闸」% x& N% }/ R9 x7 L5 G
 双向闸机:进站查票;出站要求「今日已有已检票车票」% B4 C+ V! U! |% s2 u# x
 换乘闸机:一次通过同时完成「上一段出闸」+「接续车次检票」,两段区间分别显示
) E# g; w! ]) g% f/ \! `· 配置面板物品:拿「闸机配置面板」右键闸机(需 OP)才会打开配置菜单,可设置所属检票口与通行模式
/ s, k& {* C! O" U/ I7 g3 E· 检票口限定在闸机所在 MTR 车站:模组会读 MTR 的车站区域,配置菜单只列出该车站的检票口;不在任何车站内时列表为空并提示
8 a2 `) w- j$ S, v2 ^■ 后台与账号! T9 I3 a$ K, @8 f3 [
· 管理后台(/admin):车站(一键导入全部 MTR 车站)、检票口、车次 / 坐席 / 车厢、闸机绑定、检票控制(手动开检 / 强制停检)、检票校验、票价钱包、车票总览
8 D, p7 a/ e' @6 {· 网页注册:昵称 + Minecraft 名称 + 密码注册(加盐多轮哈希),之后用昵称 + 密码登录;车票会记录下单账号;也保留「游戏内 /ticket login 取验证码」登录方式8 e. ]- U: ?& u, X# Q" y
════════════════════════════════════════
8 N- O1 t5 h7 b* F9 g/ n- e; L7 g三、运行环境
( I$ H9 c4 E2 {════════════════════════════════════════6 I) l9 Z* P% S* z7 G. \
· Minecraft:1.20.1/ @1 s  O' n* I' j0 `0 G3 U
· 模组加载器:Fabric Loader ≥ 0.159 X1 j( p) d7 I
· 依赖:Fabric API、MTR 4.0.5 或更高(必需)3 z% Y. z0 ?' S+ w' V$ s
· Java:177 w( w( B4 {; a: }2 _  G8 w! V: S$ S
· 安装位置:客户端 + 服务端都要装(闸机是方块,含模型、贴图与配置界面)
" l. K2 J1 \9 v& B" x1 O$ s/ l( n════════════════════════════════════════6 @' d6 z* f9 J
四、安装与开服3 J# d- q6 g! Q; j. u/ m8 e2 H
════════════════════════════════════════% K' Y- I5 g; S& v8 H0 f8 @5 O
1. 把 mtr12306-b1.0.0.jar 放进客户端与服务端的 mods 文件夹;
6 t1 R! T5 k) E( I1 D6 n2. 装好 fabric-api 与 MTR 4.0.5+;& j: o5 E* [4 ], |! T
3. 启动服务器,会自动生成 config/mtr12306.json;
, c( ]3 H7 l2 U3 L0 A+ g+ G$ Q4. 看启动日志,会打印网页地址:# N- s5 `4 ^& F& n1 u
 [MTR-12306] 网页购票系统已启动:http://localhost:8123/
+ M3 E# _9 M) W& X& y; L4 u& t9 ` [MTR-12306] 局域网访问地址:http://192.168.x.x:8123/  A4 q% W$ }& t) O, z
5. 浏览器打开 http://服务器IP:8123/ 购票,/admin 进管理后台(默认密码 mtr12306,请务必修改)。6 z+ @/ H- a' L7 y
常用配置(config/mtr12306.json):
. g0 r3 [/ ]9 D! ]  s$ X( A {
/ z. D4 M" Y. i. H+ o+ U; I  "webPort": 8123,
! |7 r' |7 L  K% ?+ W. h  "adminPassword": "改成你自己的密码",
  T- [+ v( |9 S& V3 O" Y  "timezone": "Asia/Shanghai",4 U: A3 t2 G$ c1 Y: A( L! n
  "farePerKm": 0.1,) s( i# p3 b4 Z9 t2 ?8 c
  "boardingOpenMinutes": 15,/ v; Y0 J8 L2 b  Z+ G- ?/ M
  "lateGraceMinutes": 2,: |. M: f" _+ L! ~
  "transferWindowMinutes": 30,
6 V, @9 r( l( K, o7 t0 C# a  "requirePayment": true,
  a: I) u( R4 @/ O7 H8 u  "requirePlayerAuth": true9 P, D5 l4 U/ M+ [! [  @
 }
/ `) d/ O2 N: ]) l  W$ m2 v' F════════════════════════════════════════
2 }' Y  H0 l7 L) ]& V7 o五、五分钟上手& }' p, r4 i# k# D. j
════════════════════════════════════════
" h( G! k) |0 T8 S& t1. 在 MTR 里划好车站(车站工具 / MTR 面板),记下车站名;
8 v  v8 ]+ L7 r7 `* y6 x( U+ j2. 后台「车站管理」→ 一键导入全部 MTR 车站(保持同名,闸机才能绑到该站的检票口);
) {+ H8 h" w1 G9 v3. 「检票口管理」→ 新建 A1(可指定负责站台,留空 = 全部);: G" `6 f. m) S% \$ P( N. J
4. 「车次管理」→ 填车次号、停靠站(站台 / 到达 / 发车 / 天偏移 / 累计里程)、坐席与车厢(含餐车、城际自由席)→ 保存;) h  L, E8 ?- h4 T& S3 S" R
  或者用「批量开行」按号段一次生成一整批;  {0 w1 [! l' R) ^* t3 [8 a
5. 游戏内 /give @s mtr12306:ticket_gate_entry(或从创造物品栏取),在站厅摆一排,放置时面向站台一侧;
: a, ?4 Y. O4 [2 P6 O# w9 p: H7 m5 F6. 拿「闸机配置面板」右键闸机 → 选检票口 + 模式 → 保存;
, H/ S% f  L' [% v  M+ f7. 玩家网页注册 / 登录 → 买票 → 到检票时间走过闸机 → 抬杆 + 屏幕显示「乘坐区间」;7 H/ w7 j  Q4 ~. ?" s, S$ o" \
8. 管理员可用 /mtr12306 boarding open <车次> <车站ID> 15 立即开检 15 分钟演示。
; [1 B& z! N: G3 [4 d【图 3:管理后台车次 / 坐席配置】/ }% `" B# _) A  E1 O! }
【图 4:座位图选座】
5 t4 m4 B  l7 n; \" _+ N& N9 b1 _& U════════════════════════════════════════
6 x! o/ \9 n! S! L2 h六、命令速查
$ h* ?* |. T  v; q  N1 H════════════════════════════════════════
) X: N( Y! b1 q/ T管理员(权限等级 2):% K- \" w' M5 d. Y2 e
 /mtr12306 help# K' R( B  \' A) k, e$ P6 j
 /mtr12306 web start|stop|info, A& F9 b+ s4 z
 /mtr12306 station add <名称> [站台…] | list | remove <id>- O4 k' }; A1 G1 K' x1 q; m; ^
 /mtr12306 checkpoint add <车站id> <检票口名> [站台…] | list | remove <id>
0 v2 W+ Y( w; O' d- g /mtr12306 service list | remove <车次>3 r& J! Y* L6 X. B" L3 c
 /mtr12306 gate bind <检票口id> [ENTRY|EXIT|BOTH|TRANSFER] | unbind | info3 X" x; w: r+ y, U* `. R
 /mtr12306 boarding list | open <车次> <车站id> [分钟] | close <车次> <车站id>
3 t3 ~! R" u! G) C8 c" h /mtr12306 ticket buy <玩家> <车次> <出发站id> <到达站id> [坐席码]9 k2 k" ]! ?+ @
 /mtr12306 ticket list- m9 r- t6 w3 m$ L) f
 /mtr12306 balance <玩家> [充值金额]
, q/ h$ n) g4 H2 C) E" A  i4 R /mtr12306 login <玩家>  (为其签发网页登录验证码,控制台可用)
* u* G8 J# j- }1 x! g所有玩家:: X! _4 r! r6 \
 /ticket    我的车票与余额7 {1 m% @/ z! Q* ~" l+ D% d; |
 /ticket list   同上% Z, E) O2 k3 k. ?
 /ticket login  获取网页登录验证码
3 F9 ?/ D& o* O1 P════════════════════════════════════════
) H- U$ t3 q: Y! L/ t七、已知限制 / 注意事项) K! `1 z# z3 y4 v" Z
════════════════════════════════════════% i' {1 v5 F' R0 X- d
· 闸机没有「栏杆」:MTR 的闸机模型本身只有机柜,所以拦截是靠推回实现(和 MTR 一致)。介意的话可以在闸机间加玻璃板做视觉隔断。
+ n. M# g7 s7 g· 闸机必须在 MTR 车站范围内才能选检票口;本系统车站要与 MTR 车站同名(用「一键导入」最省事)。( G, L. i1 }# r0 [
· 后台「闸机管理」的下拉框是管理员通道,允许跨站改绑;玩家侧 / 游戏内配置严格按车站过滤。- _+ C3 B5 r2 ~7 z1 I
· 网页默认监听 0.0.0.0:8123 且是 HTTP 明文:公网部署请改端口 / 防火墙,或套一层 TLS 反向代理,并一定修改默认管理密码。4 S! |1 S0 ?$ h% R. I/ \
· 换乘闸机依赖两个条件:①上一段车票已检票进站且未出闸;②本站有已购接续车票且在检票窗口或 transferWindowMinutes(默认 30 分钟)内。
. M; L' e/ x7 e════════════════════════════════════════
( r4 _% f+ \) Q) T八、下载
: [* r# \5 a& \* W% {6 w; A3 t════════════════════════════════════════
. A( Q2 h/ w9 l/ n5 }· Release(推荐):https://github.com/LangriSunnyawa/mtr12306/releases/tag/b1.0.0% X- E4 y$ D5 `: i! _5 [
  mtr12306-b1.0.0.jar(模组本体)9 j; d! M. O6 B
  mtr12306-b1.0.0-sources.jar(源码包)
) p. |; f# j( Q; ?$ X% f· 源码仓库:https://github.com/LangriSunnyawa/mtr123062 y- b- g  e7 t9 k- X. W
  自己构建:./gradlew build → build/libs/mtr12306-b1.0.0.jar7 b. w& H/ ?- G6 ?4 T
════════════════════════════════════════5 ~$ E' J7 d2 o0 l
九、致谢与协议
. b( G0 c8 }+ q6 t# C. f1 Q════════════════════════════════════════
6 a* N. i+ ~% W; g. u7 o  o· 闸机模型几何来自 MTR(Minecraft Transit Railway)的 ticket_barrier,MTR 采用 MIT 许可;本模组仅复用其几何结构,贴图与全部代码为独立实现。  p- u$ O/ T" k3 p/ P/ C6 O" M
· 本模组以 MIT 协议发布,欢迎自行修改、二次分发;转载 / 整合包请保留出处与许可。9 c. a) f, C, d! s* R
反馈与建议:b1.0.0 是首个 Beta,欢迎在本帖回复报 Bug(请附上 latest.log、MTR 版本、以及操作步骤喵)2 q9 I: K/ a" m- u

0 K4 E0 K% S* N5 x8 o2 l+ |# t% A

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

本版积分规则

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