搜索

体温系统

体温公式、潮湿、环境、装备、物品、HUD 与极端温度效果。

LISeasons 将温度拆成“空气温度”和“玩家体感温度”。空气温度由环境决定,玩家体温会按步长逐渐追近目标,并叠加潮湿、装备、手持物和临时食物效果。

计算流程

自 1.0.72 起,体感变化与室内保温按经过时间平滑,不再因频繁打开菜单而加速。附近冷热源分别取最强值后相加,熄灭的营火不生效;Folia 只扫描当前线程拥有且已加载的区块,检测半径限制为 1–6 格。

每日季节底温
+ 二十四节气修正
+ 原版群系温度换算
+ 群系关键词覆盖
+ 昼夜、天气、室内、遮阴、地下、海拔等环境修正
= 空气温度

空气温度
+ 潮湿/入水
+ 盔甲
+ 主副手物品
+ 附近冷热源
+ 消耗品临时效果
= 目标体感温度

当前体感温度 --每轮最多变化 body-temperature-step--> 目标体感温度

季节底温

默认使用每日随机模式:

季节 每日随机范围
春 8~22℃
夏 24~34℃
秋 10~24℃
冬 -4~8℃

同一世界、同一个 Minecraft 世界天的随机底温保持稳定,不会每次检查重新跳变。它使用 world.getFullTime() / 24000 作为随机种子的一部分;当 world-days-per-calendar-day 大于 1 时,同一服内日历日内仍可能按世界天变化数次。

base-temperature:
  mode: daily-random

将模式改为非 daily-random 值时,使用 season-base-temperature 的固定值:春 16、夏 26、秋 18、冬 2℃。

二十四节气修正

solar-term-modifier:
  enable: true

默认从立春 -2 逐步升至大暑 +18,再下降至大寒 -13。每个节气键都可单独修改。

群系温度

原版温度换算:

(原版群系温度 - 0.8) × biome-vanilla-scale

默认 biome-vanilla-scale: 5.0。之后再叠加 biome-overrides 中所有匹配群系 ID 关键词的值,例如 snowy: -5、frozen: -6、desert: +3。

tropical-biomes 用于夏季白天额外升温及夏季僵尸转尸壳判定,默认包含 desert、badlands、jungle、savanna。

昼夜与天气

  • 昼夜曲线以正午附近为最高点平滑变化,默认白天最多 +2℃、夜间最低 -3℃。
  • condition.night 是旧版兼容字段;当前主要使用 night-min 与 day-max。
  • 露天降雨默认 -2.5℃,雷暴默认 -4℃。
  • 被方块遮挡时不会应用露天雨/雷修正。

遮阴、室内、地下与海拔

因素 默认值/行为
遮阴 -1℃
室内检测 检查头顶 12 格内是否存在遮挡
春季室内 +0.5℃
夏季室内 -3℃
秋季室内 +0.5℃
冬季室内 +5℃
室内变化速度 每次检查最多改变 0.5℃,避免进出门瞬间跳变
地下 +1.5℃
高海拔 从 Y=120 开始按高度阶梯降温,默认修正 -3℃
热带夏季白天 额外 +4℃

水与潮湿

进入水中会把湿度提高到完全潮湿。默认水体修正:

  • 非冬季:-4℃ × 当前湿度;
  • 冬季:-10℃ × 当前湿度。

离水后每 40 tick 恢复一次,每次湿度减少 0.2。湿度从 1.0 到 0.0 逐步消退,不会离水瞬间消失。

盔甲保暖

每件盔甲按材质增加体感温度:

材质 每件默认值
皮革 +4.0℃
锁链 +1.5℃
铁 +1.0℃
金 +1.0℃
钻石 +1.0℃
下界合金 +0.75℃

空气温度高于 armor.leather-disabled-above(默认 25℃)时,皮革不再提供保暖,避免夏季形成额外过热陷阱。未匹配材质时使用旧版 condition.armor-per-piece 兜底值。

手持物与附近冷热源

默认手持修正:

  • 火把 +1℃
  • 灵魂火把 -2℃
  • 岩浆桶 +5℃
  • 雪球 -1℃
  • 冰 -2℃
  • 蓝冰 -4℃

同一种物品同时拿在两只手时只计算一次;不同物品可以分别计算。

附近默认 3 格识别火、灵魂火、已点燃的营火/灵魂营火、岩浆、冰、浮冰、蓝冰。1.0.72 分别取最强热源与最强冷源后相加,混放时结果不再随扫描顺序改变。

食物与饮品

items.consumables 的节点名可自定义,主要字段:

hot-soup:
  material: MUSHROOM_STEW
  modifier: 10.0
  duration-seconds: 180
  cooldown-seconds: 45
  message: "<gold>热汤暖胃,体温 <modifier>,持续 <duration> 秒。</gold>"
  • material:Bukkit Material;
  • modifier:临时体感修正,正数升温、负数降温;
  • duration-seconds:持续时间;
  • cooldown-seconds:同一物品再次生效的冷却;
  • message:MiniMessage,支持 <modifier>、<duration>。

默认包含蘑菇煲、兔肉煲、甜菜汤、蜂蜜瓶、奶桶和甜浆果。

HUD 与普通提示

action-bar:
  # false 可全服关闭温度操作栏
  enable: true
  show-season: true
  show-temperature: true

notice:
  enable: true
  cooldown-seconds: 30
  min-temperature-delta: 2.0

操作栏文本在 messages.yml -> hud 中配置。服主可将 action-bar.enable 设为 false 后执行 /seasons reload 全服关闭温度操作栏。

季节增益 BossBar 使用 config.yml -> season-buff-boss-bar 控制开关、节气进度、分段和四季颜色,标题位于 messages.yml -> season-buff-boss-bar.title.*。玩家可用 /seasons hud off 同时关闭操作栏与 BossBar,用 /seasons hud on 恢复,个人选择会跟随玩家数据持久保存。普通体感变化提示同时受冷却与最小温差控制,避免环境小幅波动刷屏。

温度状态

体感温度 描述
≤ -30℃ 极寒
≤ -20℃ 严寒
≤ -10℃ 寒冷
≤ 0℃ 阴冷
≤ 10℃ 偏凉
≤ 22℃ 舒适
≤ 35℃ 偏热
≤ 45℃ 炎热
> 45℃ 酷热

温度事件

旧 temperature.yml 事件保留视觉和短时效果;SCREEN_FREEZE 实际限制在原版冻伤阈值以下,避免与下面的持续冻伤重复扣血。关闭 temperatureEventsEnabled 会同时关闭持续温度伤害,但不会关闭自然灾害的温差和雷暴脉冲。

全局设置:

event-interval-ticks: 40
temperatureEventsEnabled: true
temperature-event-mode: "highest-only"
temperature-event-cooldown-seconds: 5

highest-only 每轮只执行最高优先级的命中事件;其他值按 all 处理全部命中事件。每个事件还有自己的 cooldown-seconds。

默认阈值:

事件 模式 阈值 主要效果
freeze below -26 冻结屏幕 160 tick、声音
ice_forming below -20 冻结、雪花、声音
shivering below -12 缓慢、轻微冻结
breath_visibility below -2 眼前雪花模拟白气
sweating above 38 水花粒子
heat_warning above 46 虚弱、粒子、声音
heatstroke above 56 反胃、受伤动画、火焰、声音

支持的效果语法:

SCREEN_FREEZE:<ticks>
PLAY_SOUND:<SOUND>:<volume>:<pitch>
PARTICLE:<PARTICLE>:<amount>:<offset> [@EyeHeight]
POTION:<EFFECT>:<amplifier>:<ticks>
BURN:<seconds>
ENTITY_EFFECT:<EFFECT>

温度事件的 POTION 最后一项单位是 tick;季节事件的 POTION 最后一项单位是秒,两套效果执行器不要混淆。

1.0.72 持续温度伤害

新增 climate-survival.yml,逐项带中文说明。这里的摄氏度都是游戏体感温度,不是人体核心体温;阈值和时间是玩法平衡参数,不可作为现实医学标准。

阶段 体感条件(含边界) 累计暴露 每次基础伤害 / 间隔
热衰竭 ≥ 40℃ 60 秒 1 点 / 6 秒
中暑 ≥ 50℃ 30 秒 3 点 / 5 秒
极热灼伤 ≥ 70℃ 15 秒 4 点 / 4 秒,点燃 3 秒
失温 ≤ 0℃ 90 秒 1 点 / 6 秒
冻伤 ≤ -15℃ 45 秒 2 点 / 5 秒
极寒冻伤 ≤ -30℃ 20 秒 3 点 / 4 秒

2 点伤害为一颗心;护甲、药水与保护插件可能改变最终伤害。默认允许致死。首次进入危险范围只预警,累计到时才受伤;同轮只执行已经成熟的最高优先级阶段,不叠加多档。单次检测最多累计 5 秒,不因长时间卡顿一次补发多次伤害。

离开某档危险体感范围立即停止该档伤害,累计暴露每秒减少 2 秒;全部归零时提示恢复。回到安全环境后体感仍需逐步回落。死亡、重生、离线、切换世界、重载会清理状态,防止复活立即再次受伤。

  • enabled: false:关闭新增温度生存,不关闭旧视觉效果。
  • allow-lethal-damage: false:本模块基础伤害最多扣到剩 1 点生命,且不点燃;不拦截其他来源伤害。
  • disasters-enabled: false:关闭持续灾害接管,事件恢复执行 season-events.yml 原有效果。若要完全关闭某事件,请关闭 season-events.yml 中该事件。
  • 创造、旁观、无敌、无季节世界,以及拥有 liseasons.climate.bypass 权限者免疫本模块。权限默认 false,OP 也需显式授予。
  • 普通炎热不点燃;只有极热档使用游戏化灼伤效果。冷水、遮阴、衣物、室内、冷热源仍通过体感计算影响风险。

四种持续灾害的温差会先加入空气温度,再影响体感;详见季节事件与流星雨。设计参考了持续热暴露、避暑和冷水加剧热量流失的方向:NWS 热相关疾病、NWS 冷水安全。本插件并非生理模拟。

线程与快照

体温采样在玩家所属调度线程执行,并把结果保存为快照。PlaceholderAPI、TAB 等异步线程只读快照,不会调用 getHighestBlockYAt 或加载区块。

玩家刚加入、首份快照尚未生成时,温度类占位符会短暂返回空字符串。这是为了避免异步读取世界,并非计算崩溃。

返回首页