搜索

日期、季节与二十四节气

三种日期模式、状态存储、节气表以及自动与手动状态。

LISeasons 对每个启用世界保存一个季节状态。日期来源有三种,优先级固定,不能同时混用。

模式一:现实公历

time:
  use-gregorian-trigger: true

插件使用服务器操作系统的 LocalDate.now() 计算日期、季节和节气。此模式忽略服内日历进度,也不使用四季循环天数。

time.sync-real-time 是独立开关:

time:
  sync-real-time: false
  real-time-sync-interval-seconds: 1

打开后,插件还会把所有“已启用且环境为 NORMAL”的世界游戏时间同步到现实时间,并关闭这些世界的原版昼夜循环。它不是“启用现实日期”的同义词;关闭后插件会把自己关闭过的昼夜循环恢复为开启。

模式二:持久化服内日历(默认)

time:
  use-gregorian-trigger: false
  world-calendar:
    enable: true
    start-year: 2026
    start-date: "02-04"
    start-world-day: 0
    world-days-per-calendar-day: 1

计算方式:

当前日历日期 = 起始年月日 + 已累计日历天数
每 N 个 Minecraft 世界天 = 1 个日历日

每个世界使用 UUID 在 calendar-state.yml 中独立记录:

  • elapsed-calendar-days:从起始日期开始累计的日历天数;
  • world-day-remainder:未凑满一个日历日的世界天数余量;
  • last-world-day:上次记录的 Minecraft 世界天数;
  • date:便于人工查看的日期,实际计算不以它为准。

修改 /time set 让世界天数倒退时,插件只重设锚点,不倒扣已经累计的服内日期。停服后手动修正日历时,应优先理解 elapsed-calendar-days,不要只改 date。

模式三:旧版四季循环

time:
  use-gregorian-trigger: false
  world-calendar:
    enable: false
  season-duration-days:
    spring: 24
    summer: 24
    autumn: 24
    winter: 24

插件按世界完整天数在四季总周期内取模。每季内部再平均分成 6 段,对应本季六个节气。若每季 24 天,默认每 4 个世界天进入下一个节气。

该模式没有真实年月日语义,主要用于保留旧服玩法。

季节起始日期

现实公历与服内日历模式使用以下配置判定季节:

season-start-dates:
  spring: "03-04"
  summer: "06-04"
  autumn: "09-04"
  winter: "12-04"

日期从冬季开始到春季开始之前仍判定为冬季。季节开始日期与二十四节气日期是两套独立配置,因此默认 2 月 4 日会显示节气“立春”,但季节仍可能是“冬季”,直到 3 月 4 日才进入春季。这是配置结果,不是计算错误。

二十四节气默认表

季节分组 键 名称 默认日期
春 lichun 立春 02-04
春 yushui 雨水 02-19
春 jingzhe 惊蛰 03-06
春 chunfen 春分 03-21
春 qingming 清明 04-05
春 guyu 谷雨 04-20
夏 lixia 立夏 05-06
夏 xiaoman 小满 05-21
夏 mangzhong 芒种 06-06
夏 xiazhi 夏至 06-21
夏 xiaoshu 小暑 07-07
夏 dashu 大暑 07-23
秋 liqiu 立秋 08-08
秋 chushu 处暑 08-23
秋 bailu 白露 09-08
秋 qiufen 秋分 09-23
秋 hanlu 寒露 10-08
秋 shuangjiang 霜降 10-24
冬 lidong 立冬 11-08
冬 xiaoxue 小雪 11-22
冬 daxue 大雪 12-07
冬 dongzhi 冬至 12-22
冬 xiaohan 小寒 01-05
冬 dahan 大寒 01-20

显示名称可在 messages.yml -> solar-term-names 修改,日期可在 config.yml -> time.gregorian-dates 修改。

自动与手动状态

  • /seasons set season <world> <season>:设为该季第一节气,并将世界切换为手动状态。
  • /seasons set term <world> <term>:设为指定节气及其所属季节,并切换为手动状态。
  • /seasons next [world]:推进到下一节气,并保持手动状态。
  • /seasons auto [world]:恢复自动计算,立即按当前日期或世界时间重算。

手动状态仅存在于运行内存中,当前实现没有把手动季节写入单独持久化文件。重启后世界会重新按选定时间模式计算。

换季时发生什么

自动或手动状态发生变化时,插件会:

  1. 刷新季节天气;
  2. 将附近区块加入季节色调刷新;
  3. 进入春季时建立玩家附近的融雪队列;
  4. 按配置播放声音和粒子;
  5. 按配置全服广播;
  6. 向该世界玩家显示标题。

自动检查间隔由 time.refresh-interval-seconds 控制,最小有效值为 10 秒。

返回首页