17 Commits
Author SHA1 Message Date
layue13andClaude Opus 5.5 789648c82f refactor: 仓库根目录按用途分组
- proxy/:core、plugin-api、luckperms 及其上游子模块 vendor/luckperms
- messaging/、backend/ 保持在根目录(messaging 是代理与后端共用的 API)
- build-logic/(原 proxy-build-logic)
- testing/:smoke/ 与 benchmarks/,不进入发行物

Gradle 项目名不变(settings.gradle.kts 映射目录),任务路径与 Maven 坐标照旧。
脚本的仓库根定位、文档与记录中的链接同步更新。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:34:01 +08:00
Claude d836f6c3d3 build: 统一 release 入口,CI 覆盖客户端 mod,文档同步新结构
- 根任务 release:build/release/ 下收集服务器包、后端插件 JAR 与客户端 mod
  (经 client-mod 自身 wrapper 构建,-PskipClientMod 可跳过),附安装位置说明
  docs/release-layout.md
- verify.yml:-Pluckperms check,并新增 client-mod 构建测试 job;
  ci.yml:-Pluckperms check release,上传 build/release/,发布带 -Pluckperms
- gradlew 加可执行位
- README、CLAUDE.md、架构/发布/测试/权限/后端接入文档与 smoke 脚本改用新模块、
  新坐标与发行包 backend/ 目录

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGL9BudzWm4dUQgBsQw4Qr
2026-10-21 10:13:06 +00:00
Claude 6a482cfb7d refactor: 并掉 proxy-core 中只有一个类的包
- core.relay.RawRelay → core.session.play(PLAY 数据通路)
- core.net.NetworkTransport → core.session.channel(与后端拨号同处)
- core.forwarding.BungeeLegacyForwarding → core.auth
- core.permission.PermissionService → core.event(会话调用插件运行时的端口)

纯内部移动,不影响插件 API;测试随类移动,文档与 CLAUDE.md 同步。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGL9BudzWm4dUQgBsQw4Qr
2026-10-21 10:02:13 +00:00
Claude 66ef6788f1 feat: 与 TCP 并存的 WebSocket 玩家监听
新增可选 websocket 配置段,在原有 TCP listen 之外再开一个 WebSocket 监听,
供经 CDN 接入的客户端使用;两种入口共用会话、选服、转服和 maxConnections。

- core.websocket:升级握手(可选 TLS)、二进制消息与 Minecraft 字节流互转、
  可信代理真实 IP(X-Forwarded-For 从右取第一个不可信地址 / CF-Connecting-IP 等)
- SessionChannels.clientAddress 统一玩家地址,用于两类准入事件、Mojang 验证 IP
  与 Bungee 转发
- ConnectionGate 支持升级后才加入管线;登录等待守卫放在 WebSocket 适配器之后
- 未升级连接计入 maxConnections,并受 handshakeTimeoutSeconds 约束
- 测试:真实 socket 上 TCP 与 WebSocket 并存登录与转发、分片/合并/Ping、
  在线模式加密与转发 IP、不可信来源、404/文本帧、名额归还、wss 证书加载
- 文档:docs/websocket.md,并更新运行配置、插件、架构与默认配置示例

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGL9BudzWm4dUQgBsQw4Qr
2026-10-20 21:23:15 +00:00
layue13andClaude Sonnet 5.5 aed2d5ca93 Extract ClientControl from Session, narrow package visibility, document layers
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:08:31 -07:00
layue13andClaude Sonnet 5.5 133e46f25b Split Session into login, routing, transfer and play packages
Session delegates frontend login to FrontendLogin, first-backend dialing to
InitialRouter and the whole transfer state machine to TransferCoordinator
behind the TransferHost port. Per-frame PLAY handlers move to session.play and
dialing helpers to session.channel. Relay hot path is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:16:09 -07:00
Claude 90b21a5b88 Flush relayed frames once per read batch
The PLAY relay called writeAndFlush for every decoded frame. With
TCP_NODELAY, a socket read holding many small packets (a typical server
tick) cost one flush, write syscall and TCP segment per frame. Write each
frame and flush the peer on channelReadComplete. A per-batch event-loop
task flushes frames forwarded outside a socket read, such as delayed tab
completion. Paused-frame replay keeps writeAndFlush.

ProxySessionBenchmark gains --burst plus proxy I/O CPU and TCP segment
counters. On a 4 vCPU Linux container with 32 x 33-byte frames per write,
TCP segments/frame fell from 1.379 to 0.117 and proxy I/O CPU/frame from
4079 to 1827 ns (medians of six paired phases). The existing 1 KiB window
1 and 16 workloads showed no regression.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KcCN2hYyqmU22X2Xfg1nwe
2026-10-05 20:11:18 +00:00
layue13 9481403684 Redesign initial player routing with explicit candidates and bounded retries 2026-09-27 23:05:58 +08:00
layue13 64152878d0 Rename project to MoonBridge and expose standalone Bukkit API 2026-09-27 22:39:16 +08:00
layue13 230f317d0a feat: replace backend discovery with control channel 2026-09-27 02:52:46 +08:00
layue13 c1399b0ac4 Add player messaging, disconnects, and configurable server status 2026-09-26 10:57:24 +00:00
layue13 ea7852375c Unify event results and clarify player admission 2026-09-26 09:53:31 +00:00
layue13 a74527ca5b Unify plugin access and lifecycle event subscriptions 2026-09-26 09:15:07 +00:00
layue13 3c21a6c2e3 Add asynchronous plugin access checks and architecture docs 2026-09-26 08:39:54 +00:00
layue13 8063f6eb1f docs: consolidate Chinese documentation 2026-09-22 03:57:47 +08:00
layue13 71b15cd180 feat: add Bukkit backend agent and shared CI publishing 2026-09-22 03:42:25 +08:00
layue13 cfa3c8bc51 refactor: reduce StrataProxy to core runtime 2026-09-22 02:33:30 +08:00