季节效果与世界规则
作物、天气、视觉、生物以及冬冻春融。
作物生长
默认配置:
| 季节 | 露天生长倍率 | 露天停止生长 |
|---|---|---|
| 春季 | 1.25 | 否 |
| 夏季 | 2.0 | 否 |
| 秋季 | 1.0 | 否 |
| 冬季 | 1.0 | 是 |
“露天”在当前实现中只检查作物正上方一格是否为空气。只有紧贴作物上方一格为非空气时才按有遮盖处理;搭在更高处的普通温室屋顶不会改变这次判定。
倍率只作用于 BlockGrowEvent 中带年龄阶段的作物。倍率大于 1 时增加额外成长阶段:整数部分固定增加,小数部分按概率再增加一级,并且不会超过最大年龄。
季节天气
season-effects:
spring: { rain-chance: 45, thunder-chance: 6 }
summer: { rain-chance: 25, thunder-chance: 12 }
autumn: { rain-chance: 30, thunder-chance: 4 }
winter: { rain-chance: 10, thunder-chance: 0 }
季节/节气状态变化时,天气服务会在 NORMAL 环境按当前季节概率刷新降雨和雷暴,配置值为百分比。1.0.65 对冬季做了特殊处理:冬季不会主动切换天气,winter.rain-chance 与 winter.thunder-chance 当前不会被天气服务执行,原版 /weather 和自然天气仍可正常工作。
视觉效果
全局刷新周期与搜索范围:
visual-effects:
interval-ticks: 40
search-radius: 12
respect-player-weather: true
默认视觉模块:
| 模块 | 条件与行为 |
|---|---|
| 极光 | 冬季、夜间、无雨、露天;当前实现还要求世界天数能被 5 整除 |
| 暴风雪 | 冬季且玩家实际天气正在降水;生成雪花和云,并执行一次按概率地表铺雪尝试 |
| 飘落树叶 | 春夏秋在附近找到树叶后显示季节色 DUST |
| 秋叶染色 | 秋季分批把桦树叶、云杉叶和樱花叶替换为金合欢叶,离开秋季后按备份恢复 |
| 树枝落雪 | 冬季在附近树叶处显示雪花粒子 |
| 苹果掉落 | 夏季在橡树叶或杜鹃叶附近按概率掉落苹果 |
visual-effects.aurora.chance-percent 存在于配置模型中,但 1.0.65 的极光渲染器当前实际使用“五天一次”的门槛,没有读取该百分比。调节该值不会改变当前极光出现频率。
1.0.69 默认尊重 Player#getPlayerWeather():Residence 等插件给玩家设置晴天时不显示暴风雪;玩家无独立天气时读取世界天气。respect-player-weather: false 可恢复仅按世界天气判断。此开关不控制“树枝落雪”环境粒子,也不关闭独立的冬季水雪循环。
秋叶染色会真实修改并恢复方块数据,不只是客户端粒子。它只处理已加载区块和玩家附近随机采样位置,默认每名玩家每轮最多替换 24 个目标叶子方块。
原叶数据备份只保存在运行内存中,没有写入磁盘。若服务器在秋季已替换叶子后重启,原备份会丢失,这些金合欢叶不会由下一次恢复流程自动还原。建筑服或必须保留原树种的世界建议关闭 visual-effects.autumn-leaf-color.enable,只使用 PacketEvents 客户端群系色调,并在启用真实叶块替换前备份世界。
玩家放置的树叶会被标记为 persistent,从而防止原版自然腐烂;秋叶替换时会保留该属性,但不会因为是玩家放置就跳过替换。
冬季结冰与铺雪
season-world-rules:
snow-accumulation:
allow-top-slabs: true
allow-top-stairs: true
allow-leaves: false
water-cycle:
enable: true
interval-ticks: 40
search-radius: 6
winter-freeze-chance-percent: 35
winter-snow-place-chance-percent: 35
冬季只在玩家附近随机抽样:
- 只把露天、上方为空气、液位为 0 的静水变成
ICE; - 只在原版允许支撑雪层的表面上方空气格铺一层薄雪;
- 不在水、岩浆或冰类上铺雪,树叶默认跳过,可配置开启;
- 不强制加载新区块。
水雪循环与暴风雪共用同一套铺雪服务。Folia 在目标位置所属区域读取和修改方块;排队后会复查配置与季节,避免重载或换季后的旧任务继续铺雪。
台阶、楼梯和建筑保护
| 表面 | 当前行为 |
|---|---|
| 原版允许承雪的完整方块 | 可铺雪 |
| 上半台阶、双台阶 | 可铺雪;allow-top-slabs: false 只关闭上半台阶,双台阶仍按完整表面处理 |
| 倒置楼梯(上半部) | 可铺雪,可由 allow-top-stairs 关闭 |
| 下半台阶、普通楼梯 | 跳过,避免悬空或穿模;不填满、不替换建筑方块 |
| 栅栏等没有合适顶面的位置 | 原版支撑检测不通过时跳过 |
| 树叶 | 默认不铺雪,allow-leaves: true 后仍需通过原版支撑检测 |
原版雪层占据独立方块格,不能直接与下半台阶共用一格形成贴面雪。本版没有引入资源包、显示实体或客户端假方块来模拟这种外观。
Residence 领地兼容
1.0.69 的水面结冰、常规铺雪和暴风雪铺雪先发送 BlockFormEvent;春季融化先发送 BlockFadeEvent。Residence 或其他插件取消后,LISeasons 不再强行写入方块,也不会清除仍有雪层覆盖的草方块雪态。
iceform: false:禁止领地内形成普通冰、霜冰和雪层;设为true允许,但仍受 LISeasons 概率、季节和表面条件限制。icemelt: false:保护 Residence 原生监听的普通冰、霜冰和雪层不被融化;设为true允许继续执行融化规则。- 雪块、细雪、浮冰和蓝冰不在该 Residence 标志的原生材质判断中。要保留它们,请关闭对应
water-cycle.meltable-blocks.<MATERIAL>.enable,不要仅依赖icemelt。 - Residence 的晴天/玩家天气控制只影响天气显示;要禁止实际积雪,还需要设置
iceform。
兼容不依赖编译绑定的 Residence API,也不在 LISeasons Jar 中附带 Residence 或 CMILib。参见 Residence 官方方块事件实现。
春季融雪
春季会做两类工作:
- 玩家近距离随机融化,使眼前变化更及时;
- 以在线玩家为中心,将已加载区块分批加入有限队列,逐列检查地表附近方块。
默认预算:
transition-melt-radius-chunks: 6
transition-melt-budget-per-tick: 512
transition-melt-block-check-budget-per-run: 4096
transition-melt-max-queued-chunks: 1024
max-chunk-refreshes-per-run: 4
默认可融化结果:
| 方块 | 默认参与 | 结果 |
|---|---|---|
ICE |
是 | WATER |
FROSTED_ICE |
是 | WATER |
SNOW |
是 | AIR |
SNOW_BLOCK |
是 | AIR |
POWDER_SNOW |
是 | AIR |
PACKED_ICE |
否 | WATER |
BLUE_ICE |
否 | WATER |
目标为 WATER 时,只有方块上方为空气才会转换,避免把封闭冰块直接变成水源。
freeze-exempt-biomes 与 melt-exempt-biomes 使用群系 ID 的关键词包含匹配。两个列表互相独立,空列表表示不额外排除。
冬天不结冰、春天不融化
完全关闭水雪循环:
season-world-rules:
water-cycle:
enable: false
只关闭结冰可将 winter-freeze-chance-percent 设为 0;只关闭铺雪可将 winter-snow-place-chance-percent 设为 0;只保留某些冰雪可关闭对应 meltable-blocks.<MATERIAL>.enable。
天然冰封群系
biome_settings.frozen_biome 可对指定天然群系单独控制:
lock_winter_mode:即使全局不是冬季,也按冬季水雪规则处理;disable_ice_melting:阻止冰类融化;disable_snow_melting:阻止雪类融化;target_biomes:目标群系 ID。
季节群系染色只改变玩家客户端收到的群系调色板。服务端判断结冰、融雪和天然冰封群系时读取的始终是真实群系,所以区块不会因为客户端“看起来像雪原”就被当作永久天然冰封群系;非冬季仍可正常融雪。
Dominion 保护
integration:
dominion:
protect-ice-and-snow: true
安装 Dominion 且开启保护后,LISeasons 的融雪流程不会修改受保护领地内的冰雪,同时监听 BlockFadeEvent,阻止原版规则融化这些方块。
季节生物替换
只处理 NATURAL、REINFORCEMENTS、CHUNK_GEN 三类生成原因:
- 夏季在
temperature.yml -> tropical-biomes匹配的热带群系中,僵尸默认有 70% 变为尸壳; - 冬季自然骷髅默认有 85% 变为流浪者。
刷怪蛋、命令、刷怪笼等其他生成原因不走这套替换规则。