Thermoo 10.0.0
on 2026 Jun 09Thermoo 10.0.0(适用于 Minecraft 26.1.x)
Thermoo 10 面向 Minecraft 26.1.x 的正式版已发布。Thermoo 10 现已视为稳定版本,后续将不再引入破坏性变更。相关文档也已完成更新。
自 10.0.0-beta.4 版起新增内容:
- 在
ThermooSeasonEvents类中新增IS_COLD_ENOUGH_TO_SNOW事件。- 此事件提供了一种方式,用于判断季节模组是否认为某区域应降雪,而无需依赖多个冗余或不一致的原版判定逻辑。
ThermooSeason中已添加便捷方法以调用该事件。
- 引入更可靠的实体属性注册机制,避免其他模组因过早取消
createLivingAttributes导致无效数据。
9.x 版本至今完整更新日志:
- 升级至 Minecraft 26.1.x
- 将 Fabric API 的 API 暴露替换为 Yumi 类。
- 示例:
net.fabricmc.fabric.api.event.Event→dev.yumi.commons.event.Eventnet.fabricmc.fabric.api.util.TriState→dev.yumi.commons.TriState- Yumi 事件的使用方式与 Fabric API 事件基本一致,但此举使 Thermoo 的 API 不再绑定于其他 Minecraft 模组。
- 此举主要旨在为未来 Thermoo 向非 FFAPI 的 NeoForge 平台移植铺平道路。
- Frostiful 将不会推出无 FFAPI 依赖的移植版本。
- 以温度状态 API 替代原有温度效果 API(#104)。
- 新增温度状态标签(#106)。
- 以数据驱动的温度源 API 替代
HeatingMode(#109)。 - 在 F3 调试界面中新增温度、浸润度及环境提供器的显示条目。
- 新增事件:
TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS,相比启用/禁用 API,可对温度状态实现更精细的控制。 - 命令
/thermoo temperature status现支持enable或disable语法,作为set_enabled的替代方案。 - 移除此前已弃用的命令
/thermoo environment relativehumidity;用户现须改用/thermoo environment relative_humidity。 - 为 API 包添加版本号。
- 示例:
com.github.thedeathlycow.thermoo.api.command→com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect→com.github.thedeathlycow.thermoo.api.temperature.status.v2com.github.thedeathlycow.thermoo.api.environment.*→com.github.thedeathlycow.thermoo.api.environment.v2.*com.github.thedeathlycow.thermoo.api.item.*→com.github.thedeathlycow.thermoo.api.item.v2.*com.github.thedeathlycow.thermoo.api.season.*→com.github.thedeathlycow.thermoo.api.season.v2.*com.github.thedeathlycow.thermoo.api.util.*→com.github.thedeathlycow.thermoo.api.util.v1.*(这些类未来可能进一步拆分为更具体的包)com.github.thedeathlycow.thermoo.api.client.*→com.github.thedeathlycow.thermoo.api.client.v1.*
- 从 API 中移除命令定义类。
- 此类现仅作为实现类存在。
- 将命令 API 中的
*ArgumentType类重命名为*Argument。 - 将
ThermooRegistries和ThermooRegistryKeys类迁移至核心 API 的registry包内。 - 将
predicate包及ThermooAttributes类迁移至新的实体 API 包:com.github.thedeathlycow.thermoo.api.entity.v1。 - 将
ThermooTags中的Item和EntityType标签分别拆分为实体 API(ThermooEntityTypeTags)与物品 API(ThermooItemTags)中的独立类。 - 移除
ThermooTags。 StatusBarOverlayRenderEvents中对GuiGraphics的使用已替换为GuiGraphicsExtractor。- 将此前位于
util包下的所有类迁移至core.v2包。 - 将
TemperatureRecord#add(TemperatureRecord)重命名为TemperatureRecord#shift(TemperatureRecord),并弃用add方法。 - 在
BuiltinTemperatureSources中新增便捷方法,用于创建TemperatureChange实例。 - 对
TemperatureLootCondition与SoakedLootCondition类进行重构,二者不再为记录类(record)。 - 以
MapCodec的直接注册方式替代EnvironmentProviderType类及其全部用法。 - 为
EnvironmentProvider内置实现建立更统一、一致的命名规范。相关类重命名如下:ConstantEnvironmentProvider→ConstantProviderModifyEnvironmentProvider→ModifyProviderTemperatureShiftEnvironmentProvider→ShiftTemperatureProviderSetTemperatureFromPressure→SetTemperatureFromPressureProviderSetPressureFromAltitude→SetPressureFromAltitudeProviderTemperateSeasonEnvironmentProvider→TemperateSeasonSelectorTropicalSeasonEnvironmentProvider→TropicalSeasonSelectorLightThresholdLightProvider→LightThresholdSelectorWeatherStateEnvironmentProvider→WeatherStateSelectorBiomePrecipitationTypeEnvironmentProvider→PrecipitationTypeSelector
- 将 Thermoo 注册表类名调整为与 Mojmap 保持一致:
ThermooRegistries→ThermooBuiltInRegistriesThermooRegistryKeys→ThermooRegistries
数据驱动的温度源
- 将
com.github.thedeathlycow.thermoo.api.temperature.*下除status包外的所有类与包迁移至com.github.thedeathlycow.thermoo.api.core.v2。 - 移除
HeatingMode与HeatingModes类。 - 方法
TemperatureAware#thermoo$addTemperature(int, HeatingMode)已转换为TemperatureAware#thermoo$addTemperature(int, TemperatureChange)。 TemperatureChange现在存储单次温度变化上下文信息,包括来源、成因、直接成因及位置;此类数据现已传递至各类温度变化相关事件。- 新增
ThermooLevel接口,通过 Mixin 注入所有Level实例。ThermooLevel提供对一组共享TemperatureChange实例的访问能力。
LivingEntityTemperatureTickEvents中的ALLOW_X_UPDATE与ALLOW_X_CHANGE事件已被移除,并由TemperatureChangeEvents中更通用的事件替代。LivingEntityTemperatureTickEvents中的GET_X_CHANGE事件现为由getTemperatureChange返回的源键映射事件,允许同类事件适配任意温度源(绝对温度源与环境温度源除外)。/thermoo temperature (add|remove)子命令现支持通过at与by语法更精确地指定温度变化上下文,实质上即为TemperatureChange类提供所需数据。
迁移示例
简单的温度添加迁移示例:
void foo(LivingEntity e) {
- e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+ e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}
温度状态 API
温度效果 API 已重写并更名为温度状态 API,以便更清晰地区分 JSON 文件(即“状态”)与实际执行功能的效果类型。该 API 大体功能不变,但以下为变更要点摘要:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表。 - 新增的状态注册表现为真正的注册表,支持标签、同步及
Holder等特性。 - 以直接的
effects列表项替代原有的config对象。 - 将类型委派逻辑下放至 effects 条目内部,而非注册表对象根层级。
- 将
attribute_modifier与scaling_attribute_modifier合并为单一类型,通过字段区分。 - 移除
empty与sequence类型,因其已无必要。 - 新增通过
thermoo:application_order温度状态标签定义状态应用顺序的功能。
此更新亦移除了部分功能:
- 温度状态不再支持“热重载”;需重启服务器方可重新加载。
- 移除
loading_priority字段。该字段原本意图是让 Thermoo 补丁可通过 Origin 检查覆盖 Frostiful/Scorchful 的效果。此功能现已被启用 API 取代。目前尚不清楚是否有其他用户曾依赖该功能实现特定必要用途,因此予以移除。
迁移示例
旧版效果:
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新版状态:
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo 10.0.0-beta.4
on 2026 Mar 26适用于 Minecraft 26.1 的 Thermoo 10.0.0 Beta 3
这是 Thermoo 10 面向 Minecraft 26.1 的又一个 Beta 构建版本,这次的目标是完整正式版。虽然该版本以正式版为目标,但仍然可能出现进一步的破坏性变更。 文档也尚未更新,不过很快就会补上。
Beta 4
- 修复了 Yumi 库未正确加载而导致启动崩溃的问题。
Beta 3
- 更新到 26.1 正式版
- 更新了 Polymer 集成
- 破坏性变更:将 Thermoo 的注册表类重命名为与 Mojmap 一致:
ThermooRegistries->ThermooBuiltInRegistriesThermooRegistryKeys->ThermooRegistries
Beta 2
- 将公共 API 中对
net.fabricmc.fabric.api.util.TriState的使用替换为dev.yumi.commons.TriState - 新增事件:
TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS,相比启用/禁用 API,它能够对温度状态进行更细粒度的控制。 - 为温度和浸泡添加了 F3 调试画面条目。
- 命令
/thermoo temperature status现在允许使用enable或disable语法,作为set_enabled的替代。 - 移除了此前已弃用的
/thermoo environment relativehumidity用法,用户现在必须使用/thermoo environment relative_humidity。
Beta 1
- 将
core包的版本提升到v2,以配合 26.1 引入变更的整体风格。 - 将此前位于
util.v1包下的所有类移动到core.v2包。 - 将
TemperatureRecord#add(TemperatureRecord)重命名为TemperatureRecord#shift(TemperatureRecord),并弃用了add方法。 - 在
BuiltinTemperatureSources中添加了用于创建TemperatureChange实例的便捷方法。 - 将 API 暴露的 Fabric API 替换为 LambdAurora 的 Yumi Commons。
- 将所有 Fabric API 事件类(
net.fabricmc.fabric.api.event.Event)的使用替换为 Yumi 事件类(dev.yumi.commons.event.Event)。- Yumi 事件的用法与 Fabric API 事件基本一致,但它不会让 Thermoo 的 API 依赖于另一个 Minecraft mod。
- 这主要是为了让 Thermoo 在未来可以实现一个不基于 FFAPI 的 Neoforge 移植版本。
- 我不会制作不带 FFAPI 的 Frostiful 移植版本。
- 重构了
TemperatureLootCondition和SoakedLootCondition类,使其不再是 record。 - 移除了
EnvironmentProviderType类及其用法,改为直接注册MapCodec。 - 为
EnvironmentProvider的内置实现建立了一套更统一、更一致的命名方案。类名变更如下:ConstantEnvironmentProvider->ConstantProviderModifyEnvironmentProvider->ModifyProviderTemperatureShiftEnvironmentProvider->ShiftTemperatureProviderSetTemperatureFromPressure->SetTemperatureFromPressureProviderSetPressureFromAltitude->SetPressureFromAltitudeProviderTemperateSeasonEnvironmentProvider->TemperateSeasonSelectorTropicalSeasonEnvironmentProvider->TropicalSeasonSelectorLightThresholdLightProvider->LightThresholdSelectorWeatherStateEnvironmentProvider->WeatherStateSelectorBiomePrecipitationTypeEnvironmentProvider->PrecipitationTypeSelector
Alpha 2
- 用数据驱动的温度源 API 替换了
HeatingMode(#109)。 - 将所有剩余的 API 包迁移到带版本号的包中,如下:
com.github.thedeathlycow.thermoo.api.environment.*->com.github.thedeathlycow.thermoo.api.environment.v2.*com.github.thedeathlycow.thermoo.api.item.*->com.github.thedeathlycow.thermoo.api.item.v2.*com.github.thedeathlycow.thermoo.api.season.*->com.github.thedeathlycow.thermoo.api.season.v2.*com.github.thedeathlycow.thermoo.api.util.*->com.github.thedeathlycow.thermoo.api.util.v1.*(这些类之后仍可能进一步拆分到更具体的包中)com.github.thedeathlycow.thermoo.api.client.*->com.github.thedeathlycow.thermoo.api.client.v1.*
- 将
ThermooRegistries和ThermooRegistryKeys类移动到核心 API 中的registry包 - 将
predicate包和ThermooAttributes类移动到新的实体 API 包:com.github.thedeathlycow.thermoo.api.entity.v1 - 将
ThermooTags中的Item和EntityType标签分别拆分到实体 API(ThermooEntityTypeTags)和物品 API(ThermooItemTags)中的类里 - 移除了
ThermooTags。 - 将
StatusBarOverlayRenderEvents中对GuiGraphics的使用替换为GuiGraphicsExtractor
数据驱动的温度源
- 将
com.github.thedeathlycow.thermoo.api.temperature.*下的所有类和包(status包除外)移动到com.github.thedeathlycow.thermoo.api.core.v2。 - 移除了
HeatingMode和HeatingModes类。 - 将方法
TemperatureAware#thermoo$addTemperature(int, HeatingMode)改为TemperatureAware#thermoo$addTemperature(int, TemperatureChange)。 TemperatureChange现在会存储单次温度变化的上下文信息,包括来源、原因、直接原因和位置,这些数据现在也会传递给各种与温度变化相关的事件。- 新增了
ThermooLevel接口,并通过 mixin 注入到所有Level实例中。ThermooLevel提供了对一组共享TemperatureChange实例的访问。
LivingEntityTemperatureTickEvents中的ALLOW_X_UPDATE和ALLOW_X_CHANGE事件已被移除,并替换为TemperatureChangeEvents中更通用的事件。LivingEntityTemperatureTickEvents中的GET_X_CHANGE事件现在变为由getTemperatureChange返回的、基于 source-key 映射的事件,从而让同类事件可应用于任意温度源——绝对温度源和环境温度源除外。/thermoo temperature (add|remove)子命令现在提供了更强的能力,可通过at和by语法指定温度变化的上下文,本质上就是为TemperatureChange类提供数据。
Alpha 1
- 开始为 API 包添加版本号。
- 到目前为止,受影响的包如下:
com.github.thedeathlycow.thermoo.api.command->com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect->com.github.thedeathlycow.thermoo.api.temperature.status.v2
- 在 26.1 完整正式版发布前,还会有更多包被迁移。
- 到目前为止,受影响的包如下:
- 从 API 中移除了命令定义类。
- 这些现在属于实现类。
- 将命令 API 中的
*ArgumentType类重命名为*Argument。 - 用 Temperature Status API 替换了 Temperature Effect API(#104)。
- 添加了温度状态标签(#106)。
迁移示例
一个简单的添加温度迁移示例:
void foo(LivingEntity e) {
- e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+ e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}
温度状态 API
Temperature Effect API 已被重写并重命名为 Temperature Status API,以便更好地区分 JSON 文件(status)与实际执行工作的效果类型。该 API 的整体功能与之前基本相同,不过以下是变更摘要:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表 - 新的状态注册表现在是真正的注册表,支持标签、同步、
Holder等等。 - 用直接的
effects列表条目替换了config对象。 - 将类型委托从注册表对象根级移动到了效果条目中。
- 将
attribute_modifier和scaling_attribute_modifier合并为单一类型,通过字段加以区分。 - 移除了
empty和sequence类型,它们已不再需要。 - 添加了通过
thermoo:application_order温度状态标签定义状态应用顺序的方法。
这也移除了一些功能:
- 温度状态不再支持“热重载”;你必须重启服务器才能重新加载它们。
loading_priority字段已被移除。这个字段原本的设计意图,是让 Thermoo Patches 在检测到 Origin 时覆盖 Frostiful/Scorchful 的效果。该功能后来已被启用 API 取代。目前不清楚是否还有其他人将它用于某些确实必要的功能,因此现将其移除。
迁移示例
旧效果
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新状态
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo 10.0.0-beta.3
on 2026 Mar 26Thermoo 10.0.0 Beta 3(适用于 Minecraft 26.1)
这是 Thermoo 10 针对 Minecraft 26.1 的又一个测试版构建,这次目标是完整正式版。虽然这是以正式版为目标,但仍然有可能出现进一步的破坏性更改。 文档也尚未更新,不过很快就会补上。
Beta 3
- 更新至正式版 26.1
- 更新聚合物集成
- 破坏性更改:重命名了 Thermoo 注册表类,以与 Mojmap 保持一致:
ThermooRegistries->ThermooBuiltInRegistriesThermooRegistryKeys->ThermooRegistries
Beta 2
- 将公开 API 中对
net.fabricmc.fabric.api.util.TriState的使用替换为dev.yumi.commons.TriState - 添加了一个新事件:
TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS,相比启用/禁用 API,它可以对温度状态进行更细粒度的控制。 - 为温度和浸泡添加了 F3 调试画面条目。
- 命令
/thermoo temperature status现在允许使用enable或disable语法,作为set_enabled的替代。 - 移除了此前已弃用的
/thermoo environment relativehumidity用法,用户现在必须使用/thermoo environment relative_humidity。
Beta 1
- 将
core包的版本提升到v2,以与 26.1 所引入的整体变更风格保持一致。 - 将此前位于
util.v1包下的所有类移动到core.v2包。 - 将
TemperatureRecord#add(TemperatureRecord)重命名为TemperatureRecord#shift(TemperatureRecord),并弃用了add方法。 - 向
BuiltinTemperatureSources添加了用于创建TemperatureChange实例的便捷方法。 - 将 API 中暴露的 Fabric API 替换为 LambdAurora 的 Yumi Commons。
- 将所有 Fabric API 事件类(
net.fabricmc.fabric.api.event.Event)的用法替换为 Yumi 事件类(dev.yumi.commons.event.Event)。- Yumi 事件的用法与 Fabric API 事件基本一致,但它不会让 Thermoo 的 API 绑定到另一个 Minecraft 模组。
- 这样做的主要目的是让 Thermoo 未来有可能实现一个不依赖 FFAPI 的 Neoforge 移植版。
- 我不会制作不依赖 FFAPI 的 Frostiful 移植版。
- 重构了
TemperatureLootCondition和SoakedLootCondition类,使其不再使用 record。 - 用直接注册
MapCodec的方式替换了EnvironmentProviderType类及其用法。 - 为
EnvironmentProvider的内置实现建立了更统一、更一致的命名方案。类名变更如下:ConstantEnvironmentProvider->ConstantProviderModifyEnvironmentProvider->ModifyProviderTemperatureShiftEnvironmentProvider->ShiftTemperatureProviderSetTemperatureFromPressure->SetTemperatureFromPressureProviderSetPressureFromAltitude->SetPressureFromAltitudeProviderTemperateSeasonEnvironmentProvider->TemperateSeasonSelectorTropicalSeasonEnvironmentProvider->TropicalSeasonSelectorLightThresholdLightProvider->LightThresholdSelectorWeatherStateEnvironmentProvider->WeatherStateSelectorBiomePrecipitationTypeEnvironmentProvider->PrecipitationTypeSelector
Alpha 2
- 用数据驱动的温度源 API 替换了
HeatingMode(#109)。 - 将所有剩余的 API 包移至带版本号的包中,如下所示:
com.github.thedeathlycow.thermoo.api.environment.*->com.github.thedeathlycow.thermoo.api.environment.v2.*com.github.thedeathlycow.thermoo.api.item.*->com.github.thedeathlycow.thermoo.api.item.v2.*com.github.thedeathlycow.thermoo.api.season.*->com.github.thedeathlycow.thermoo.api.season.v2.*com.github.thedeathlycow.thermoo.api.util.*->com.github.thedeathlycow.thermoo.api.util.v1.*(这些类之后仍可能进一步拆分到更具体的包中)com.github.thedeathlycow.thermoo.api.client.*->com.github.thedeathlycow.thermoo.api.client.v1.*
- 将
ThermooRegistries和ThermooRegistryKeys类移动到了核心 API 中的registry包 - 将
predicate包和ThermooAttributes类移动到了新的实体 API 包:com.github.thedeathlycow.thermoo.api.entity.v1 - 将
ThermooTags中的Item和EntityType标签分别拆分为实体 API 中的类(ThermooEntityTypeTags)和物品 API 中的类(ThermooItemTags) - 移除了
ThermooTags。 StatusBarOverlayRenderEvents中对GuiGraphics的使用被替换为GuiGraphicsExtractor
数据驱动的温度源
- 将
com.github.thedeathlycow.thermoo.api.temperature.*下除status包以外的所有类和包移动到com.github.thedeathlycow.thermoo.api.core.v2。 - 移除了
HeatingMode和HeatingModes类。 - 方法
TemperatureAware#thermoo$addTemperature(int, HeatingMode)被改为TemperatureAware#thermoo$addTemperature(int, TemperatureChange)。 TemperatureChange现在会存储单次温度变化的上下文信息,包括来源、原因、直接原因和位置,这些数据现在也会传递给各类与温度变化相关的事件。- 添加了新的
ThermooLevel接口,它会通过 mixin 注入到所有Level实例上。ThermooLevel提供对一组共享TemperatureChange实例的访问。
LivingEntityTemperatureTickEvents中的ALLOW_X_UPDATE和ALLOW_X_CHANGE事件已被移除,并由TemperatureChangeEvents中更通用的事件取代。LivingEntityTemperatureTickEvents中的GET_X_CHANGE事件现在变为一个由getTemperatureChange返回的、基于源键映射的事件,因此同类事件可以应用于任意温度源——绝对源和环境源除外。/thermoo temperature (add|remove)子命令现在提供了更强的能力,可通过at和by语法指定温度变化的上下文,本质上是为TemperatureChange类提供数据。
Alpha 1
- 开始为 API 包添加版本号。
- 目前已影响以下包:
com.github.thedeathlycow.thermoo.api.command->com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect->com.github.thedeathlycow.thermoo.api.temperature.status.v2
- 在 26.1 正式发布前,还会有更多包被迁移。
- 目前已影响以下包:
- 从 API 中移除了命令定义类。
- 这些现在属于实现类。
- 将命令 API 中的
*ArgumentType类重命名为*Argument。 - 用温度状态 API 替换了温度效果 API(#104)。
- 添加了温度状态标签(#106)。
迁移示例
一个添加温度的简单迁移示例:
void foo(LivingEntity e) {
- e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+ e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}
温度状态 API
温度效果 API 已被重写并重命名为温度状态 API,以便更好地区分 JSON 文件(status)和实际执行功能的效果类型。该 API 的整体功能基本不变,但以下是更改摘要:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表 - 新的状态注册表现在是真正的注册表,支持标签、同步、
Holder等功能。 - 用直接的
effects列表条目替换了config对象。 - 将类型委托移动到 effects 的各个条目中,而不是放在注册表对象的根部。
- 将
attribute_modifier和scaling_attribute_modifier合并为单一类型,并通过字段加以区分。 - 移除了
empty和sequence类型,因为它们已经不再需要。 - 添加了通过
thermoo:application_order温度状态标签来定义状态应用顺序的方法。
这也移除了一些功能:
- 温度状态不再支持“热重载”;若要重新加载,必须重启服务器。
- 不再有
loading_priority字段。该功能原本是为了让 Thermoo Patches 能通过检查 Origin 来覆盖 Frostiful/Scorchful 的效果。后来这已被启用 API 所取代。目前尚不清楚是否还有人将其用于其他确实必要的功能,因此现已移除。
迁移示例
旧效果
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新状态
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo 10.0.0-beta.2
on 2026 Mar 20适用于 Minecraft 26.1-pre-2 的 Thermoo 10.0.0 Beta 1
这是适用于 Minecraft 26.1 的 Thermoo 10 测试版构建。目前,我已经实现了计划在 26.1 中发布的全部功能。不过,仍然有可能出现进一步的破坏性更改。 因此,文档也尚未更新! 等到 26.1 的 API 更改最终确定后,Thermoo 文档将会全面更新。
Beta 2
- 在公开 API 中,将
net.fabricmc.fabric.api.util.TriState替换为dev.yumi.commons.TriState - 添加了一个新事件:
TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS,与启用/禁用 API 相比,它可以对温度状态提供更细粒度的控制。 - 为温度和浸湿添加了 F3 调试屏幕条目。
- 命令
/thermoo temperature status现在允许使用enable或disable语法,作为set_enabled的替代方案。 - 移除了此前已弃用的
/thermoo environment relativehumidity用法,用户现在必须使用/thermoo environment relative_humidity。
Beta 1
- 将
core包的版本提升到v2,以契合 26.1 所带来的整体改动风格。 - 将此前位于
util.v1包下的所有类移动到了core.v2包下。 - 将
TemperatureRecord#add(TemperatureRecord)重命名为TemperatureRecord#shift(TemperatureRecord),并弃用了add方法。 - 在
BuiltinTemperatureSources中添加了用于创建TemperatureChange实例的便捷方法。 - 将 API 对 Fabric API 的暴露替换为 LambdAurora 的 Yumi Commons。
- 将所有对 Fabric API 事件类(
net.fabricmc.fabric.api.event.Event)的使用替换为 Yumi 事件类(dev.yumi.commons.event.Event)。- Yumi 事件的用法与 Fabric API 事件基本一致,但它不会让 Thermoo 的 API 依赖于另一个 Minecraft Mod。
- 这主要是为了让 Thermoo 在未来有可能实现一个不基于 FFAPI 的 Neoforge 移植版本。
- 我不会制作不依赖 FFAPI 的 霜冻 (Frostiful) 移植版。
- 重构了
TemperatureLootCondition和SoakedLootCondition类,使其不再是 record。 - 将
EnvironmentProviderType类及其用法替换为直接注册MapCodec。 - 为
EnvironmentProvider的内置实现建立了更统一、更一致的命名方案。类重命名如下:ConstantEnvironmentProvider->ConstantProviderModifyEnvironmentProvider->ModifyProviderTemperatureShiftEnvironmentProvider->ShiftTemperatureProviderSetTemperatureFromPressure->SetTemperatureFromPressureProviderSetPressureFromAltitude->SetPressureFromAltitudeProviderTemperateSeasonEnvironmentProvider->TemperateSeasonSelectorTropicalSeasonEnvironmentProvider->TropicalSeasonSelectorLightThresholdLightProvider->LightThresholdSelectorWeatherStateEnvironmentProvider->WeatherStateSelectorBiomePrecipitationTypeEnvironmentProvider->PrecipitationTypeSelector
Alpha 2
- 用数据驱动的温度源 API 替换了
HeatingMode(#109)。 - 将所有剩余的 API 包移动到带版本号的包中,如下所示:
com.github.thedeathlycow.thermoo.api.environment.*->com.github.thedeathlycow.thermoo.api.environment.v2.*com.github.thedeathlycow.thermoo.api.item.*->com.github.thedeathlycow.thermoo.api.item.v2.*com.github.thedeathlycow.thermoo.api.season.*->com.github.thedeathlycow.thermoo.api.season.v2.*com.github.thedeathlycow.thermoo.api.util.*->com.github.thedeathlycow.thermoo.api.util.v1.*(这些类之后仍可能被拆分到更具体的包中)com.github.thedeathlycow.thermoo.api.client.*->com.github.thedeathlycow.thermoo.api.client.v1.*
- 将
ThermooRegistries和ThermooRegistryKeys类移动到了核心 API 中的registry包 - 将
predicate包和ThermooAttributes类移动到一个新的实体 API 包中:com.github.thedeathlycow.thermoo.api.entity.v1 - 将
ThermooTags中的Item和EntityType标签分别拆分为实体 API 中的类(ThermooEntityTypeTags)和物品 API 中的类(ThermooItemTags) - 移除了
ThermooTags。 - 将
StatusBarOverlayRenderEvents中对GuiGraphics的使用替换为GuiGraphicsExtractor
数据驱动的温度源
- 将
com.github.thedeathlycow.thermoo.api.temperature.*下的所有类和包(status包除外)移动到了com.github.thedeathlycow.thermoo.api.core.v2。 - 移除了
HeatingMode和HeatingModes类。 - 将方法
TemperatureAware#thermoo$addTemperature(int, HeatingMode)改为TemperatureAware#thermoo$addTemperature(int, TemperatureChange)。 TemperatureChange现在会存储单次温度变化的上下文信息,包括来源、原因、直接原因和位置,这些数据现在也会传递给各类与温度变化相关的事件。- 添加了一个新的
ThermooLevel接口,它会通过 mixin 注入到所有Level实例上。ThermooLevel提供对一组共享TemperatureChange实例的访问。
- 移除了
LivingEntityTemperatureTickEvents中的ALLOW_X_UPDATE和ALLOW_X_CHANGE事件,并将其替换为TemperatureChangeEvents中更通用的事件。 LivingEntityTemperatureTickEvents中的GET_X_CHANGE事件现在是一个由源键映射的事件,通过getTemperatureChange返回,从而让同类事件可以应用于任意温度源——绝对温度源和环境温度源除外。/thermoo temperature (add|remove)子命令现在提供了更强的能力,可以通过at和by语法指定温度变化的上下文,本质上是为TemperatureChange类提供数据。
Alpha 1
- 开始为 API 包添加版本号。
- 目前已影响以下包:
com.github.thedeathlycow.thermoo.api.command->com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect->com.github.thedeathlycow.thermoo.api.temperature.status.v2
- 在 26.1 正式发布前,还会有更多包被移动。
- 目前已影响以下包:
- 从 API 中移除了命令定义类。
- 这些现在属于实现类。
- 在命令 API 中,将
*ArgumentType类重命名为*Argument。 - 用温度状态 API 替换了温度效果 API(#104)。
- 添加了温度状态标签(#106)。
迁移示例
一个简单的添加温度迁移示例:
void foo(LivingEntity e) {
- e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+ e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}
温度状态 API
温度效果 API 已被重写并重命名为温度状态 API,以便更好地区分 JSON 文件(状态)与实际执行效果的效果类型。该 API 在整体上仍然做着相同的事情,但以下是改动摘要:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表 - 新的状态注册表现在是真正的注册表,支持标签、同步、
Holder等等。 - 用直接的
effects列表条目替换了config对象。 - 将类型委托移动到效果条目中,而不是放在注册表对象的根部。
- 将
attribute_modifier和scaling_attribute_modifier合并为单一类型,并通过一个字段加以区分。 - 移除了
empty和sequence类型,因为它们不再需要。 - 添加了一种通过
thermoo:application_order温度状态标签来定义状态应用顺序的方式。
这也移除了一些功能:
- 温度状态不再支持“热重载”;你必须重启服务器才能重新加载它们。
loading_priority字段已不复存在。这个字段原本的设计目的是让 Thermoo Patches 可以通过检查 Origin 来覆盖 霜冻 (Frostiful)/焦土 (Scorchful) 的效果。这个功能后来被启用 API 所取代。目前尚不清楚是否还有其他人将其用于某些确有必要的功能,因此现将其移除。
迁移示例
旧效果
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新状态
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo 10.0.0-beta.1
on 2026 Mar 19Minecraft 26.1-pre-2 版 Thermoo 10.0.0 Beta 1
这是适用于 Minecraft 26.1 的 Thermoo 10 测试版构建。到目前为止,我已经实现了计划在 26.1 中发布的所有功能。不过,仍然可能会有进一步的破坏性更改。 正因如此,文档也尚未更新! 等到 26.1 的 API 变更最终敲定后,Thermoo 文档将会完整更新。
Beta 1
- 将
core包的版本提升到v2,以与 26.1 所引入的整体改动风格保持一致。 - 将此前位于
util.v1包下的所有类移动到了core.v2包。 - 将
TemperatureRecord#add(TemperatureRecord)重命名为TemperatureRecord#shift(TemperatureRecord),并弃用了add方法。 - 在
BuiltinTemperatureSources中添加了用于创建TemperatureChange实例的便捷方法。 - 将对 Fabric API 的 API 暴露替换为 LambdAurora 的 Yumi Commons。
- 将所有对 Fabric API 事件类(
net.fabricmc.fabric.api.event.Event)的使用替换为 Yumi 事件类(dev.yumi.commons.event.Event)。- Yumi 事件的用法与 Fabric API 事件基本一致,但这样可以避免将 Thermoo 的 API 绑定到另一个 Minecraft 模组上。
- 这主要是为了让未来基于非 FFAPI 的 Neoforge 版 Thermoo 成为可能。
- 我不会制作不含 FFAPI 的 Frostiful 移植版。
- 重构了
TemperatureLootCondition和SoakedLootCondition类,使其不再是 record。 - 用直接注册
MapCodec的方式替换了EnvironmentProviderType类及其用法。 - 为
EnvironmentProvider的内置实现建立了更加统一、一致的命名方案。类名调整如下:ConstantEnvironmentProvider->ConstantProviderModifyEnvironmentProvider->ModifyProviderTemperatureShiftEnvironmentProvider->ShiftTemperatureProviderSetTemperatureFromPressure->SetTemperatureFromPressureProviderSetPressureFromAltitude->SetPressureFromAltitudeProviderTemperateSeasonEnvironmentProvider->TemperateSeasonSelectorTropicalSeasonEnvironmentProvider->TropicalSeasonSelectorLightThresholdLightProvider->LightThresholdSelectorWeatherStateEnvironmentProvider->WeatherStateSelectorBiomePrecipitationTypeEnvironmentProvider->PrecipitationTypeSelector
Alpha 2
- 用数据驱动的温度源 API 替换了
HeatingMode(#109)。 - 将所有剩余的 API 包移动到了带版本号的包中,具体如下:
com.github.thedeathlycow.thermoo.api.environment.*->com.github.thedeathlycow.thermoo.api.environment.v2.*com.github.thedeathlycow.thermoo.api.item.*->com.github.thedeathlycow.thermoo.api.item.v2.*com.github.thedeathlycow.thermoo.api.season.*->com.github.thedeathlycow.thermoo.api.season.v2.*com.github.thedeathlycow.thermoo.api.util.*->com.github.thedeathlycow.thermoo.api.util.v1.*(这些类之后仍可能会被拆分到更具体的包中)com.github.thedeathlycow.thermoo.api.client.*->com.github.thedeathlycow.thermoo.api.client.v1.*
- 将
ThermooRegistries和ThermooRegistryKeys类移动到了核心 API 中的registry包 - 将
predicate包和ThermooAttributes类移动到了新的实体 API 包:com.github.thedeathlycow.thermoo.api.entity.v1 - 将
ThermooTags中的Item和EntityType标签分别拆分到实体 API(ThermooEntityTypeTags)和物品 API(ThermooItemTags)中的独立类里 - 移除了
ThermooTags。 - 将
StatusBarOverlayRenderEvents中对GuiGraphics的使用替换为GuiGraphicsExtractor
数据驱动的温度源
- 将
com.github.thedeathlycow.thermoo.api.temperature.*下除status包以外的所有类和包移动到了com.github.thedeathlycow.thermoo.api.core.v2。 - 移除了
HeatingMode和HeatingModes类。 - 将方法
TemperatureAware#thermoo$addTemperature(int, HeatingMode)改为TemperatureAware#thermoo$addTemperature(int, TemperatureChange)。 TemperatureChange现在会存储单次温度变化的上下文信息,包括来源、成因、直接成因和位置,并且这些数据现在会传递给各种与温度变化相关的事件。- 添加了新的
ThermooLevel接口,它会通过 mixin 注入到所有Level实例上。ThermooLevel提供对一组共享TemperatureChange实例的访问。
LivingEntityTemperatureTickEvents中的ALLOW_X_UPDATE和ALLOW_X_CHANGE事件已被移除,并替换为TemperatureChangeEvents中更通用的事件。LivingEntityTemperatureTickEvents中的GET_X_CHANGE事件现在变成了一个由getTemperatureChange返回的源键映射事件,这使同类事件能够应用于任意温度源——绝对温度源和环境温度源除外。/thermoo temperature (add|remove)子命令现在可以通过at和by语法更详细地指定温度变化的上下文,本质上就是为TemperatureChange类提供数据。
Alpha 1
- 开始为 API 包添加版本号。
- 目前已影响以下包:
com.github.thedeathlycow.thermoo.api.command->com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect->com.github.thedeathlycow.thermoo.api.temperature.status.v2
- 在 26.1 正式发布前,还会有更多包被移动。
- 目前已影响以下包:
- 从 API 中移除了命令定义类。
- 这些类现在属于实现类。
- 将命令 API 中的
*ArgumentType类重命名为*Argument。 - 用 Temperature Status API 替换了 Temperature Effect API(#104)。
- 添加了温度状态标签(#106)。
迁移示例
一个简单的添加温度迁移示例:
void foo(LivingEntity e) {
- e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+ e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}
温度状态 API
Temperature Effect API 已被重写并重命名为 Temperature Status API,以便更好地区分 JSON 文件(status)和实际执行功能的效果类型。API 整体上仍然做着差不多的事情,不过以下是改动总结:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表 - 新的状态注册表现在是真正的注册表,支持标签、同步、
Holder等功能。 - 用直接的
effects列表项替换了config对象。 - 将类型委托移动到了效果条目中,而不是放在注册表对象的根层级。
- 将
attribute_modifier和scaling_attribute_modifier合并为单一类型,并通过字段加以区分。 - 移除了
empty和sequence类型,因为它们已经不再需要。 - 添加了通过
thermoo:application_order温度状态标签来定义状态应用顺序的方法。
这也移除了一些功能:
- 温度状态不再支持“热重载”;你必须重启服务器才能重新加载它们。
loading_priority字段已不再存在。这个字段原本的设计目的是让 Thermoo Patches 能通过检查 Origin 来覆盖 Frostiful/焦土 的效果。这个用途后来已被启用 API 所取代。目前尚不清楚是否还有其他人将其用于某些确实必要的功能,因此它将被移除。
迁移示例
旧效果
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新状态
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo 10.0.0-alpha.2
on 2026 Mar 17Thermoo 10.0.0 Alpha 2 for Minecraft 26.1-snapshot-11
面向 Minecraft 26.1 的 Thermoo 10 的第二个预发布版本。这是一个 Alpha 版本,并且 API 仍然极其不稳定,因为**计划进行更多破坏性改动。**因此,**文档也尚未更新!**当面向 26.1 的 API 改动最终确定后,Thermoo 文档将会完整更新。
此版本主要是为了让我能抢先开始更新 霜冻 (Frostiful) 和 焦土 (Scorchful),同时也将 Thermoo 开放给任何想参与的人进行公开 Bug 测试。
Alpha 1
- 开始为 API 包添加版本号。
- 目前已影响以下包:
com.github.thedeathlycow.thermoo.api.command->com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect->com.github.thedeathlycow.thermoo.api.temperature.status.v2
- 在 26.1 正式发布前还会迁移更多包。
- 目前已影响以下包:
- 从 API 中移除了命令定义类。
- 这些现在属于实现类。
- 在命令 API 中,将
*ArgumentType类重命名为*Argument。 - 用 Temperature Status API 替换了 Temperature Effect API(#104)。
- 添加了 Temperature Status Tags(#106)。
Alpha 2
- 用数据驱动的温度来源 API 替换了
HeatingMode(#109)。 - 将所有剩余的 API 包移动到带版本号的包中,如下:
com.github.thedeathlycow.thermoo.api.environment.*->com.github.thedeathlycow.thermoo.api.environment.v2.*com.github.thedeathlycow.thermoo.api.item.*->com.github.thedeathlycow.thermoo.api.item.v2.*com.github.thedeathlycow.thermoo.api.season.*->com.github.thedeathlycow.thermoo.api.season.v2.*com.github.thedeathlycow.thermoo.api.util.*->com.github.thedeathlycow.thermoo.api.util.v1.*(这些类仍可能会被拆分到更具体的包中)com.github.thedeathlycow.thermoo.api.client.*->com.github.thedeathlycow.thermoo.api.client.v1.*
- 将
ThermooRegistries与ThermooRegistryKeys类移动到核心 API 中的registry包 - 将
predicate包和ThermooAttributes类移动到新的实体 API 包:com.github.thedeathlycow.thermoo.api.entity.v1 - 将
ThermooTags中的Item与EntityType标签拆分为实体 API(ThermooEntityTypeTags)与物品 API(ThermooItemTags)中的各自类 - 移除了
ThermooTags。 - 在
StatusBarOverlayRenderEvents中,将对GuiGraphics的使用替换为GuiGraphicsExtractor
数据驱动的温度来源
- 将
com.github.thedeathlycow.thermoo.api.temperature.*下除status包以外的所有类与包移动到com.github.thedeathlycow.thermoo.api.core.v1。 - 移除了
HeatingMode与HeatingModes类。 - 将方法
TemperatureAware#thermoo$addTemperature(int, HeatingMode)改为TemperatureAware#thermoo$addTemperature(int, TemperatureChange)。 TemperatureChange现在会存储单次温度变化的上下文信息,包括来源、原因、直接原因与位置,并且这些数据现在会被传递给多个与温度变化相关的事件。- 新增
ThermooLevel接口,并通过 mixin 注入到所有Level实例上。ThermooLevel提供对一组共享TemperatureChange实例的访问。
- 移除了
LivingEntityTemperatureTickEvents中的ALLOW_X_UPDATE与ALLOW_X_CHANGE事件,并用TemperatureChangeEvents中更通用的事件替代。 LivingEntityTemperatureTickEvents中的GET_X_CHANGE事件现在是由getTemperatureChange返回的、按 source-key 映射的事件,允许同一类事件应用到任意温度来源——但绝对来源与环境来源除外。/thermoo temperature (add|remove)子命令现在通过at与by语法,提供了更多指定温度变化上下文的能力,本质上是为TemperatureChange类提供数据。
迁移示例
添加温度的简单迁移:
void foo(LivingEntity e) {
- e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+ e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}
Temperature Status API
Temperature Effect API 被重写并更名为 Temperature Status API,以更好地区分 JSON 文件(status)与实际执行逻辑的效果类型。该 API 在整体上仍做同样的事情,但以下是改动摘要:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表 - 新的 status 注册表现在是真正的注册表,支持标签、同步、
Holder等全部功能。 - 用直接的
effects列表条目替换了config对象。 - 将类型委托移动到 effects 的条目中,而不是放在注册表对象的根层级。
- 将
attribute_modifier与scaling_attribute_modifier合并为单一类型,通过一个字段区分。 - 移除了
empty与sequence类型,它们不再需要。 - 添加了一种通过
thermoo:application_order温度状态标签来定义 status 应用顺序的方法。
这也移除了一些功能:
- 温度状态不再支持“热重载”;你必须重启服务器才能重新加载它们。
- 不再有
loading_priority字段。其原本意图是允许 Thermoo Patches 在检查 Origin 后,用 Frostiful/Scorchful 的效果进行覆盖。这个用途已被启用 API 取代。目前不清楚是否还有其他人将其用于某些确实必要的功能,因此它将被移除。
迁移示例
旧 effect
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新 status
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo Neoforge 4.8.1-neoforge
on 2026 Mar 09Thermoo 4.8.1 适用于 Minecraft 1.21.1
- 新增了可使用命令
/thermoo temperature effect set_enabled为每个实体动态启用或禁用温度效果的功能。 - 修复了部分温度效果未被正确移除的问题。
- Hotfix 4.8.1:将接口注入数据作为分类构件发布
Thermoo Neoforge 4.8.0-neoforge
on 2026 Mar 09Thermoo 4.8.0 for Minecraft 1.21.1
- 新增了按实体动态启用或禁用温度效果的功能,可使用命令
/thermoo temperature effect set_enabled。 - 修复了部分温度效果未能被正确移除的问题。
Thermoo 10.0.0-alpha.1
on 2026 Mar 06适用于 Minecraft 26.1-snapshot-11 的 Thermoo 10.0.0 Alpha 1
这是 Thermoo 10 在 Minecraft 26.1 上的首个预发布版本。这是一个 alpha 版本,API 目前仍然极不稳定,因为后续还计划进行进一步的破坏性改动。 因此,文档也尚未更新! Thermoo Docs 将在 26.1 的 API 改动最终确定后完整更新。
这个版本主要是为了让我能抢先开始更新霜冻和焦土,同时也向任何愿意参与的人开放 Thermoo 的公开 Bug 测试。
- 已开始为 API 包添加版本号。
- 目前已影响以下包:
com.github.thedeathlycow.thermoo.api.command->com.github.thedeathlycow.thermoo.api.command.v1com.github.thedeathlycow.thermoo.api.temperature.effect->com.github.thedeathlycow.thermoo.api.temperature.status.v2
- 在 26.1 正式完整发布前,还会有更多包被迁移。
- 目前已影响以下包:
- 已从 API 中移除命令定义类。
- 这些现在属于实现类。
- 已将命令 API 中的
*ArgumentType类重命名为*Argument。 - 已将温度效果 API 替换为温度状态 API(#104)。
- 已添加温度状态标签(#106)。
温度状态 API
温度效果 API 已被重写并重命名为温度状态 API,以便更好地区分 JSON 文件(状态)与实际执行工作的效果类型。这个 API 整体上完成的事情基本相同,不过以下是改动总结:
- 将
thermoo/temperature_effect注册表替换为thermoo/temperature_status注册表 - 新的状态注册表现在是真正的注册表,支持标签、同步、
Holder等等。 - 用直接的
effects列表项替换了config对象。 - 将类型委托移动到效果条目中,而不是注册表对象的根级别。
- 将
attribute_modifier和scaling_attribute_modifier合并为单一类型,并通过字段加以区分。 - 移除了
empty和sequence类型,它们已不再需要。 - 添加了通过
thermoo:application_order温度状态标签来定义状态应用顺序的方法。
这也移除了一些功能:
- 温度状态不再支持“热重载”;你必须重启服务器才能重新加载它们。
loading_priority字段已被移除。这个字段原本的设计目的是让 Thermoo Patches 能通过检查起源来覆盖霜冻/焦土的效果。这个用途后来被启用 API 取代了。目前尚不清楚是否还有其他人将其用于某些确实必要的功能,因此它将被移除。
迁移示例
旧效果
{
"type": "thermoo:damage",
"temperature_scale_range": {
"max": -0.99
},
"config": {
"amount": 1,
"damage_interval": 20,
"damage_type": "minecraft:freeze"
}
}
新状态
{
"temperature_scale_range": {
"max": -0.99
},
"interval": 20,
"effects": [
{
"type": "thermoo:damage",
"amount": 1,
"damage_type": "minecraft:freeze"
}
]
}
Thermoo 4.8.0
on 2026 Mar 03Thermoo 4.8.0 for Minecraft 1.21.1
- 新增通过命令
/thermoo temperature effect set_enabled动态按实体单独启用或禁用体温效果的功能。 - 修复了部分体温效果未能正确移除的问题。
Thermoo 9.1.0
on 2026 Feb 21Thermoo 9.1:大气压
- 新增通过命令
/thermoo temperature effect set_enabled动态按实体启停温度效果的功能。 - 在
ConfiguredTemperatureEffect类中新增 Java API,用于动态按实体启停温度效果。 - 在 F3 调试画面中新增 Thermoo 专属条目,默认处于禁用状态。
- 新增一种大气压环境组件类型。
- 此组件以毫巴(mbar)为单位存储局部大气压。
- 新增一个大气压游戏环境属性。
- 该属性用作环境组件映射的默认值。
- 在
/thermoo environment命令中新增子命令,用于获取指定方块位置的大气压数值。 - 新增
thermoo:set_temperature_from_pressure环境提供器类型。 - 新增
thermoo:set_pressure_from_altitude环境提供器类型。 - 现在可通过
/thermoo environment relative_humidity查询相对湿度。- 旧命令
/thermoo environment relativehumidity仍可使用,但已弃用。
- 旧命令
Thermoo Neoforge 4.7.1+neoforge
on 2025 Dec 22Thermoo for Neoforge 1.21.1
Thermoo 现已通过 Forgified Fabric API 移植至 Neoforge 1.21.1。此移植版本可能尚未完全稳定,因此以 Alpha 版本发布。不过,该版本不再需要 Connector,因而运行表现应会更佳。
请注意,此移植版本未包含 Polymer 补丁,因为 Polymer 是仅限 Fabric 的模组。若您希望在服务端结合 Polymer 使用 Thermoo,则仍需使用通过 Connector 适配的 Fabric 版 Thermoo。
我目前不计划将此移植版本更新至除 1.21.1 以外的任何其他游戏版本。 FFAPI 目前尚无适用于更高版本的支持,且我个人对 1.20.1 版本亦无更新兴趣(更不用说还需将 Thermoo 1.20.1 转译为 Mojmap 映射)。若将来 FFAPI 更新支持更高版本的 Minecraft,我也将重新制作对应版本的移植版。
相较于 Thermoo 4.7.0+neoforge 的变更:
- 4.7.1:发布接口注入数据
Thermoo Neoforge 4.7.0+neoforge
on 2025 Dec 22Thermoo for Neoforge 1.21.1
Thermoo 现已通过 Forgified Fabric API 移植到 Neoforge 1.21.1。此版本目前可能尚未完全稳定,因此以 Alpha 版本发布。不过,它 不 需要 Connector,因此运行效果应会更好一些。
服务器管理员请注意,此移植版本不包含 Polymer 补丁,因为 Polymer 是仅限 Fabric 的模组。如果你希望在服务端使用 Polymer 搭配 Thermoo,仍需通过 Connector 使用 Thermoo 的 Fabric 版本。
我并不计划将此移植版本更新至除 1.21.1 以外的任何其他游戏版本。 目前 FFAPI 尚未支持更高版本,而我对 1.20.1 版本也毫无兴趣(更不用说我还得将 Thermoo 1.20.1 转换为 Mojmap 映射)。如果/当 FFAPI 更新支持更高版本的 Minecraft 时,我也会为对应版本重新制作该移植版。
Thermoo 9.0.0
on 2025 Dec 19膳魔师保温杯 9.0.0
此更新将膳魔师保温杯(Thermoo)升级至 Minecraft 1.21.11。根据长期支持(LTS)政策,本版本标志着对 Minecraft 1.21.9-10 的支持正式结束。
- 更新至 Minecraft 1.21.11。
- 新增环境属性以控制季节与温度。
- 重构了季节 API,以更好地支持环境属性的集成。这对所有使用 Java 端 Seasons API 的用户来说是一次重大破坏性变更。详见下文说明。JSON API 应保持完全不变。
- 新增一种
mild(温和)热带季节。
环境属性
膳魔师保温杯现在提供了多个新的环境属性,将这一新的原版系统与季节和温度相集成。这些新属性已在 Thermoo 维基 上详细记录。
季节 API 重构
季节 API 已被重构,总体上有两项主要变更,旨在支持更好的未来可扩展性:
第一,ThermooSeason 枚举已转换为一个接口,由两个独立的枚举分别实现:用于温带的 TemperateSeason 和用于热带的 TropicalSeason。此次变更还新增了一种 mild 热带季节,用以表示从雨季到旱季之间的过渡阶段。
第二,季节事件返回的类型已从“可选的季节”更改为“可选的季节状态”(season state),该状态不仅包含原始的季节信息,还新增了一个 progress(进度)值。这能够捕捉某一时刻下季节的“状态”。新的 progress 值是一个范围在 [0, 1] 之间的数字,表示当前季节的推进程度。
以下是基本迁移概览:
ThermooSeason.SPRING→TemperateSeason.SPRINGThermooSeason.AUTUMN→TemperateSeason.AUTUMNThermooSeason.SUMMER→TemperateSeason.SUMMERThermooSeason.WINTER→TemperateSeason.WINTERThermooSeason.TROPICAL_DRY→TropicalSeason.DRYThermooSeason.TROPICAL_WET→TropicalSeason.WET- 新增
TropicalSeason.MILD ThermooSeason#getCurrentSeason(Level)→TemperateSeason#getCurrentState(Level, BlockPos)(注意增加了BlockPos参数)ThermooSeason#getCurrentTropicalSeason(Level, BlockPos)→TropicalSeason#getCurrentState(Level, BlockPos).map()
示例:
-Optional<ThermooSeason> season = ThermooSeason#getCurrentSeason(level);
+Optional<TemperateSeason> season = TemperateSeason#getCurrentState(level, pos).map(ThermooSeasonState::season);
ThermooSeasonEvents.GET_CURRENT_TROPICAL_SEASON.register(
(level, pos) -> {
- return Optional.of(ThermooSeason.TROPICAL_WET);
+ return Optional.of(TropicalSeason.WET.createState());
}
);
Thermoo 8.1.1
on 2025 Nov 22- 环境刻上下文所选的实体位置现在基于实体的根载具,而非其实际位置。
- 此更改修复了 Frostiful 中的一些衍生问题,例如玩家在船中时不会回暖。参见 #90。
Thermoo 4.7.1
on 2025 Nov 22- 环境刻(environment tick)上下文中所选的实体位置现在基于实体的根载具(root vehicle),而非其实体实际位置。
- 此更改修复了 Frostiful 中的一些衍生问题,例如玩家在船中时无法正常预热。详见 #90。
Thermoo 4.7.0
on 2025 Nov 05迁移至 Mojang 映射
这是 Thermoo 8.1.0 针对 Minecraft 1.21.1 的回退版本
由于 Mojang 正在推进取消代码混淆,并预计 Fabric 将转向使用 MojMap,我已将 Thermoo 重映射为 MojMap。这对 Thermoo 的代码层面是一次重大变更,但得益于 intermediary 的存在,公共 API 不应出现任何破坏性变化。不过,我可能仍遗漏了一些问题,因此此版本将最初以测试版(beta)形式发布。
尽管目前暂无计划引入破坏性更改,但部分字段和方法已重命名,以更好地符合官方映射标准。具体变更如下:
EnvironmentProvider.ENTRY_CODEC→EnvironmentProvider.HOLDER_CODECLightThresholdLightProvider#lightType→LightThresholdLightProvider#lightLayerAttributeModifierTemperatureEffect$Config#id→AttributeModifierTemperatureEffect$Config#locationScalingAttributeModifierTemperatureEffect$Config#id→ScalingAttributeModifierTemperatureEffect$Config#locationEnvironmentTickContext#world→EnvironmentTickContext#levelTemperatureEffects.STATUS_EFFECT→TemperatureEffects.MOB_EFFECT
温度效果类型的资源位置由 thermoo:status_effect 更改为 thermoo:mob_effect,但已添加别名,以确保现有的数据包仍可正常运行。
所有旧的字段和方法均已标记为弃用(deprecated),并直接重定向至新的字段和方法,因此不会造成任何 API 层面的破坏。
当 Minecraft 完全切换到使用非混淆 JAR(即“五月山丘”更新之后的版本)时,旧的字段将被移除,同时其他此前因会破坏公共 API 而难以更改的名称(尤其是类名)也将一并修改。
Thermoo 8.1.0
on 2025 Nov 05迁移至 Mojang 映射表
由于 Mojang 正在逐步移除混淆,并预计 Fabric 将不可避免地转向使用 MojMap,我已将 Thermoo 重映射到 MojMap。这对 Thermoo 的代码端是一次较大的变更,但得益于 intermediary 的支持,这不应对其公共 API 造成任何破坏性更改。不过,我可能仍存在疏漏,因此此版本将先以 beta 版本发布。
尽管目前暂无计划引入破坏性变更,但部分字段和方法已被重命名,以更好地符合官方映射标准。具体变更如下:
EnvironmentProvider.ENTRY_CODEC→EnvironmentProvider.HOLDER_CODECLightThresholdLightProvider#lightType→LightThresholdLightProvider#lightLayerAttributeModifierTemperatureEffect$Config#id→AttributeModifierTemperatureEffect$Config#locationScalingAttributeModifierTemperatureEffect$Config#id→ScalingAttributeModifierTemperatureEffect$Config#locationEnvironmentTickContext#world→EnvironmentTickContext#levelTemperatureEffects.STATUS_EFFECT→TemperatureEffects.MOB_EFFECT
温度效果类型 thermoo:status_effect 的资源位置已更改为 thermoo:mob_effect,但已添加别名以确保现有数据包仍可正常运行。
所有旧的字段和方法均已标记为 @Deprecated(弃用),并直接指向新的实现,因此不会造成任何破坏性变更。
当 Minecraft 完全切换至非混淆版 JAR 文件(即“五月风暴”更新之后的版本)时,这些旧字段将被彻底移除,届时一些此前因可能破坏公共 API 而未能轻易更改的名称(尤其是类名)也将一并更新。
Thermoo 8.0.2
on 2025 Nov 05- 已更新以原生支持 Minecraft 1.21.10,此版本在 1.21.9 上仍可正常运行。
Thermoo 8.0.1
on 2025 Oct 08- Thermoo 现在直接以 1.21.9 为目标版本
- 模组元数据现在要求至少 1.21.9 版本才能加载


