节日系统
现实日期、节日配置、提醒行为与当前实现边界。
日期来源
节日系统使用服务器操作系统的现实日期 LocalDate.now(),不会跟随:
- 世界游戏时间;
calendar-state.yml服内日历;- 手动设置的季节或节气。
因此服内日期与现实日期不同是允许的:日历 GUI 的季节日期可显示服内日期,而“今日节日”仍按现实日期判断。
默认节日
| 日期 | ID | 名称 | 优先级 |
|---|---|---|---|
| 01-01 | new-year |
元旦 | 10 |
| 02-14 | valentines |
情人节 | 8 |
| 02-24 | lantern |
元宵节 | 8 |
| 03-08 | womens-day |
妇女节 | 7 |
| 03-12 | arbor-day |
植树节 | 7 |
| 04-01 | april-fools |
愚人节 | 6 |
| 04-05 | qingming |
清明节 | 9 |
| 04-20 | easter |
复活节 | 8 |
| 05-01 | labor-day |
劳动节 | 9 |
| 06-01 | children-day |
儿童节 | 7 |
| 06-19 | dragon-boat |
端午节 | 8 |
| 08-19 | qixi |
七夕节 | 8 |
| 09-25 | mid-autumn |
中秋节 | 9 |
| 10-01 | national-day |
国庆节 | 9 |
| 10-29 | double-ninth |
重阳节 | 8 |
| 10-31 | halloween |
万圣节 | 8 |
| 11-26 | thanksgiving |
感恩节 | 7 |
| 12-22 | winter-solstice |
冬至节 | 8 |
| 12-25 | christmas |
圣诞节 | 9 |
这些是固定 MM-dd 记录,不会自动按每年农历或“某月第几个星期”重新计算。需要动态日期时,应在每年开服前更新 festivals.yml,或由外部工具生成配置。
配置格式
global:
festival-cooldown-seconds: 5
enabled: true
server-custom-festivals:
new-year:
type: "NEW_YEAR"
date: "01-01"
display-name: "元旦"
category: "SERVER_CUSTOM"
priority: 10
enabled: true
description: "新年快乐!愿新的冒险从今天开始。"
1.0.65 的默认文件保留了这两个
global字段,但当前加载器尚未读取它们。实际全局短冷却固定为 5 秒;要关闭节日系统,请把每个节日的enabled设为false。Wiki 在这里按实际代码行为说明,避免误以为修改全局开关已经生效。
字段说明:
- 节点名是节日 ID;
type必须对应内置FestivalType;date使用MM-dd;display-name是 GUI 和命令显示名;category默认统一使用SERVER_CUSTOM;旧分类名仍可解析,但显示都为“节日”;- 同一天多个节日时,
priority高的作为“今日主节日”; enabled: false不参与“今日节日”索引和自然提醒;/seasons festival list与节日 GUI 当前仍会显示全部已加载配置,包括已禁用项;description显示在 GUI 中。
提醒行为
季节事件轮询时会同时检查节日:
- 每名玩家受固定 5 秒的全局短冷却保护;
- 同一节日对同一玩家一天内只触发一次;
- 触发时向玩家发送节日到来提示;
- 同时进行一次全服广播。
1.0.65 的节日是日期记录与消息提醒系统。description 只用于展示,没有节日奖励、烟花、物品发放或玩法效果执行器;需要这些内容时应由其他插件监听日期/占位符,或另行扩展代码。
如果多名玩家在同一轮首次命中同一节日,当前实现可能由每个玩家分别触发全服广播。大型服务器可提高检查间隔,或在消息层面关闭/修改提示需求。
指令
/seasons festival list
/seasons festival today
/seasons festival info
list:列出已加载的节日配置;today:按服务器现实日期显示今日主节日;info:显示节日系统统计。
日历 GUI
节日页按全年日期排序并分页,并显示全部已加载配置。当天节日使用激活材质高亮,默认是 CLOCK;页面模板支持 <festival>、<date>、<category>、<description>、<today>。