Skip to content

EllanServer/SeasonSync

Repository files navigation

SeasonSync

让多个 Minecraft 服务器共享同一套 CustomCrops 季节状态

功能

  • 以一个服务器和世界作为季节状态的唯一权威来源。
  • 使用世界完整游戏时间与可配置的季节时长自动轮换春、夏、秋、冬。
  • 将状态原子写入共享文件,降低读取到半写入文件的风险。
  • 非权威服务器只读取共享状态,不会自行推进季节。
  • 提供 /seasonsync get/seasonsync set <spring|summer|autumn|winter|disable> 管理命令。

环境要求

  • Java 21
  • Paper 1.21(或兼容的服务端)
  • 已安装 CustomCrops;插件会在启动时将自己注册为它的季节提供者。
  • 所有参与同步的服务端均可访问的共享目录,例如网络共享卷。

安装与配置

  1. 将构建产物 SeasonSync-<version>.jar 和 CustomCrops 放入每个服务端的 plugins/ 目录。
  2. 首次启动后编辑 plugins/SeasonSync/config.yml
  3. 每个服务端必须使用相同的 shared-state-file,但 server-id 必须唯一。
  4. 只在一个服务端上将 server-id 设为 authoritative-server;该服务端的 authoritative-world 必须已加载。

默认配置:

server-id: spawn
authoritative-server: spawn
authoritative-world: world
shared-state-file: ../shared/season-sync.properties
season-duration-days: 216
initial-season: SPRING
refresh-seconds: 30

字段说明:

字段 说明
server-id 当前服务端的唯一标识。
authoritative-server 负责计算与写入季节状态的服务端标识。
authoritative-world 权威服务端中用于计算游戏时间的世界名称。
shared-state-file 所有服务端均能读写的同一个状态文件路径。相对路径以服务端世界目录为基准。
season-duration-days 每个季节持续的 Minecraft 天数,最小值为 1
initial-season 权威状态文件首次创建前使用的季节。
refresh-seconds 非权威服务端读取状态、权威服务端检查季节变化的间隔(秒)。

命令与权限

命令 作用 权限
/seasonsync get 查看当前共享季节和周期。 seasonsync.admin
/seasonsync set <season> 在权威服务端手动设置季节。 seasonsync.admin

<season> 可为 springsummerautumnwinterdisable。默认情况下 seasonsync.admin 仅授予 OP。

本地构建

项目使用 Gradle Wrapper 和 Java 21。Windows 上执行:

.\gradlew.bat clean test shadowJar

Linux/macOS 上执行:

chmod +x gradlew
./gradlew clean test shadowJar

构建后的插件位于 build/libs/。默认版本为 1.0.0;可在构建时传入 pluginVersion 覆盖它:

./gradlew clean test shadowJar -PpluginVersion=2.0.0

自动发布大版本

GitHub Actions 只会在推送格式为 vX.0.0 的大版本标签时构建和发布,例如 v2.0.0。普通提交、分支推送、v1.1.0 等次版本标签和 v1.0.1 等修订版本标签不会触发该工作流。

确认工作区内容正确并已推送后,运行:

git tag v2.0.0
git push origin v2.0.0

工作流会使用 Java 21 执行测试和 Shadow JAR 构建,上传 build/libs/*.jar 作为 Actions artifact,然后创建同名 GitHub Release、上传 JAR 附件并自动生成 Release Notes。

About

让多个 Minecraft 服务器共享同一套 CustomCrops 季节状态

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages