自定义描述

我最近在做什么

9 min

前情提要

八月末, 朋友向我提起了一个项目, 在Minecraft里, 主题是建筑,社会模拟,文明模拟
于是在九月七号, 我回到学校后, 开始着手开发这个服务端群组

项目大览

采用Velocity作为代理 后使用了功能更完备了Velocity-CTD作为代理
考虑到建筑服 不需要保留原版特性(其实我更愿意称之为BUG)
所以我选择了Leaf服务端 一是高度优化 二是国人开发 方便提issue

目前的进度

乱七八糟的东西

这些是我朋友自己写的项目进度(笑) 服务器官网 45% 代码文件统计

  • JSX文件 : 13个文件,共864行
  • TSX文件 : 4个文件,共464行
  • CSS文件 : 16个文件,共1302行
  • JS文件 : 4个文件,共64行 其他文件统计
  • 配置文件 : 9个文件,共3711行
  • 文档文件 : 4个文件,共229行 总体统计
  • 代码文件总数 : 37个
  • 代码总行数 : 2694行
  • 项目文件总数 : 50个(包含配置和文档文件)
  • 项目总行数 : 6634行(包含配置和文档文件)

后台数据库 80%
玩家排行榜 99%
玩家档案生成 80%
建筑入门教程 1%

开发进度
服务器logo ✓
服务器VI 0%

建筑文明服
登录服 100%
新手服 50%
初审服 80%
中级服 80%
私人世界服 100%
私人服务器 100%

群服互通机器人
群服绑定 ✓
群内档案生成 0%

分工来说 mc服务端是我全权负责 包括各种插件 菜单都是我来找或者自己写
前端包括网页这些是他来写 美工这类也是他负责

技术面

  • 全局使用了Velocity的代理架构
  • Leaf作为各个子服的核心 提供高性能
  • EasyBot负责玩家在QQ群和游戏内的绑定
  • Plan负责提供能获取到的API让前端显示(顺带一提 Plan每次获取内容都是几万行的json 太屎山了)
  • Trmenu/Trchat 依旧是我最爱的Tr系列插件 由A神发明 应该算是圈内最NB菜单和聊天插件
  • Luckperms (Trae自动给我补全lp了?) 用了数据库模式 优雅 太优雅了 从web端访问可视化修改 太伟大了
  • FAWE 多线程版WE 伟大无需多言

特色技术 (Trae自动补全的 我觉得也没问题)

原本服务器用的是limboauth 但是我想要在QQ上直接登录服务器
因为easybot绑定了QQ和游戏id嘛 然后easybot还给了blocky的插件编辑器
于是我经过两天的debug 在9.15/16两天 终于把我的QAuth插件写完了
只不过这不是一个插件 是好几个插件合体而成的
我自己写的Claude写的LoginHelper插件 装在VC侧 监听玩家进服事件
然后限制玩家所有操作 直到完成登录后解除限制
由我自己搭建的(因为是blocky 这是真正我自己慢慢写出来的) QAuth.js 是eb的附属插件
还有谷姐开发的SyncCommand 救了eb在vc侧的一个bug

所以 我称他为

QAuth

原创超级无敌安全动态密码登录系统

Sorry 有点中二

遇到的各种奇奇乖乖的问题
  1. 在vc进服时触发一次登录事件 而不是每次回到大厅服务器触发
  2. 在进入服务器后 未登录前不能干任何事 比如输指令 传送到别的服务器 以前就因为权限没设置好 有坏比绕过了登录 直接传送到我的子服把我的主城什么的都炸了
  3. easybot给的api很少 而且全是内部api 只能用插件编辑器 我还不能自己写插件从eb拿数据 点名批评一下作者不更新 虽然这两天和作者聊天的时候他都在送外卖
  4. easybot在执行命令的接口上 有神秘bug 在VC侧不能成功执行命令 会提示玩家不在线 针对这个问题 我使用了一款SyncCommand插件 这个插件可以在子服给代理端发送指令 然后在代理端执行
  5. SyncCommand在加载时候出现了问题 在此感谢插件作者就叫谷姐吧 是她亲自帮我修复了这个插件在子服加载时候的bug 让我成功在子服给代理端发送了指令执行操作
  6. gradle构建插件时候出现的各种奇奇怪怪的bug 因为我不会用gradle 但是ij装了minecraft插件后默认用gradle或者maven创建项目 虽然两个我都不会罢了

服务器网络方面

因为服务器是家里云 北京联通
所以跨网连接的稳定性似乎并不好
比如我在福建电信校园网 延迟可能跑到200+
那怎么办呢? 朋友去买了一个frp的永久会员(160)
然后我秉持着不用白不用的原则 把大部分看着不错的节点都搭了一遍
但是又没有条件搞自动优选节点这种东西
那我就突发奇想: 既然没钱搞BGP这类 那是不是可以物理优选
说干就干 找到claude就发需求:

需求

用python帮我写一个软件 用tcping来检测一些ip的延迟 返回每个节点的延迟数据
然后找到一个最小值 数据从ips.txt获取 格式为 名称-ip

比如 上海电信-cn-sh-1.lcf.im

然后将目录下 .minecraft/servers.txt 中 “等待优选ip填入” 替换为延迟最低的ip

然后复制这个文件 把复制后的文件改名为servers.dat 覆盖文件夹中的servers.dat

原本是想直接修改文件中的内容 但是我发现修改后的文件读取不了
一查wiki发现mc中dat都是nbt数据 所以我引入了nbtlib库 重新让claude帮我写了一份
不愧是最贵的家伙 一两次对话就完美达成了我的需求
alt text

碎碎念

做端好累
还记得以前开1.7.10的科技服 做一个端只需要一个小时不到
只要把各种插件丢进去 写个传送菜单 设置一下空岛 写个氪金商店
开服就可以开圈了 赚一波钱 没人玩了就关服跑路
有人想玩了再重新做一个继续上述流程
最近两年我逐渐不爱做这种服了 从开高版本服务器开始
很多插件 玩法都是我自己开发出来了
比如恶心玩家的税收系统 玩家赚的钱都得被系统抽走一部分(嘻嘻)

就到这吧 两点了 好困 晚安