▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Thermoo
Thermoo

Thermoo

Temperature and Environment library mod for Fabric and Quilt. Used by Frostiful and Scorchful.

3.2M
172

Thermoo 10.0.0-beta.4

beta26 марта 2026 г.

Thermoo 10.0.0 Beta 3 for Minecraft 26.1

Another beta build for Thermoo 10 for Minecraft 26.1, this time targeting the full release. While this is targeting the release version, further breaking changes are still possible.. Documentation has not yet been updated either, but it will be soon.

Beta 4

  • Fixed Yumi libraries not loading correctly, causing a start-up crash.

Beta 3

  • Updated to release 26.1
  • Updated Polymer integration
  • Breaking change: Renamed Thermoo registry classes to match Mojmap:
    • ThermooRegistries -> ThermooBuiltInRegistries
    • ThermooRegistryKeys -> ThermooRegistries

Beta 2

  • Replaced usage of net.fabricmc.fabric.api.util.TriState in the public API with dev.yumi.commons.TriState
  • Added a new event: TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS that allows for finer grained control over temperature statuses than the enable/disable API.
  • Added F3 debug screen entries for temperature and soaking.
  • The command /thermoo temperature status now permits enable or disable syntax as an alternative to set_enabled.
  • Removed previously deprecated usage of /thermoo environment relativehumidity, users must now use /thermoo environment relative_humidity.

Beta 1

  • Bumped the version of the core package to v2 to align with the general vibe of changes 26.1 is introducing.
  • Moved all classes previously under the util.v1 package to the core.v2 package.
  • Renamed TemperatureRecord#add(TemperatureRecord) to TemperatureRecord#shift(TemperatureRecord), and deprecated the add method.
  • Added convenience methods for creating instances of TemperatureChange to BuiltinTemperatureSources.
  • Replaced API exposure of Fabric API with Yumi Commons by LambdAurora.
  • Replaced all usage of Fabric API event classes (net.fabricmc.fabric.api.event.Event) with Yumi event classes (dev.yumi.commons.event.Event).
    • Usage of Yumi events is essentially identical to Fabric API events, but it does not tie Thermoo's API to another Minecraft mod.
    • This is primarily intended to make a future non-FFAPI based Neoforge port of Thermoo possible.
    • I will not be making FFAPI-free ports of Frostiful.
  • Refactored the TemperatureLootCondition and SoakedLootCondition classes to no longer be records.
  • Replaced the EnvironmentProviderType class and its usage with direct registration of MapCodecs.
  • Established a more uniform and consistent naming scheme for the builtin implementations of EnvironmentProvider. Classes were renamed as follows:
    • ConstantEnvironmentProvider -> ConstantProvider
    • ModifyEnvironmentProvider -> ModifyProvider
    • TemperatureShiftEnvironmentProvider -> ShiftTemperatureProvider
    • SetTemperatureFromPressure -> SetTemperatureFromPressureProvider
    • SetPressureFromAltitude -> SetPressureFromAltitudeProvider
    • TemperateSeasonEnvironmentProvider -> TemperateSeasonSelector
    • TropicalSeasonEnvironmentProvider -> TropicalSeasonSelector
    • LightThresholdLightProvider -> LightThresholdSelector
    • WeatherStateEnvironmentProvider -> WeatherStateSelector
    • BiomePrecipitationTypeEnvironmentProvider -> PrecipitationTypeSelector

Alpha 2

  • Replaced HeatingMode with a data-driven temperature sources API (#109).
  • Moved all remaining API packages to versioned packages, as follows:
    • 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.* (these classes may still be split up to more specific packages)
    • com.github.thedeathlycow.thermoo.api.client.* -> com.github.thedeathlycow.thermoo.api.client.v1.*
  • Moved the ThermooRegistries and ThermooRegistryKeys classes to a registry package in the core API
  • Moved the predicate package and ThermooAttributes class to a new entity API package: com.github.thedeathlycow.thermoo.api.entity.v1
  • Split the Item and EntityType tags in ThermooTags into classes in the entity API (ThermooEntityTypeTags) and item API (ThermooItemTags), respectively
  • Removed ThermooTags.
  • Usage of GuiGraphics in StatusBarOverlayRenderEvents was replaced with GuiGraphicsExtractor

Data-driven Temperature Sources

  • Moved all classes and packages under com.github.thedeathlycow.thermoo.api.temperature.* EXCEPT for the status package to com.github.thedeathlycow.thermoo.api.core.v2.
  • Removed the HeatingMode and HeatingModes classes.
  • The method TemperatureAware#thermoo$addTemperature(int, HeatingMode) was converted to TemperatureAware#thermoo$addTemperature(int, TemperatureChange).
  • TemperatureChange now stores information about the context of individual temperature changes, including source, cause, direct cause, and position, and this data is now passed to various temperature change related events.
  • Added a new ThermooLevel interface that is injected onto all Level instances by mixin.
    • ThermooLevel provides access to a set of shared instances of TemperatureChange.
  • The ALLOW_X_UPDATE and ALLOW_X_CHANGE events in LivingEntityTemperatureTickEvents were removed and replaced with more general events in TemperatureChangeEvents.
  • The GET_X_CHANGE event in LivingEntityTemperatureTickEvents is now a source-key mapped event returned by getTemperatureChange that allows for the same sort of event to apply to any temperature source - except absolute and environment sources.
  • The /thermoo temperature (add|remove) sub-commands now provide more ability to specify context about a temperature change with at and by syntax, essentially to provide the data for the TemperatureChange class.

Alpha 1

  • Begun adding version numbers to API packages.
    • So far this has impacted the following packages:
      • com.github.thedeathlycow.thermoo.api.command -> com.github.thedeathlycow.thermoo.api.command.v1
      • com.github.thedeathlycow.thermoo.api.temperature.effect -> com.github.thedeathlycow.thermoo.api.temperature.status.v2
    • More packages will be moved before the full 26.1 release.
  • Removed command definition classes from API.
    • These are now implementation classes.
  • Renamed *ArgumentType classes to *Argument in the command API.
  • Replaced the Temperature Effect API with the Temperature Status API (#104).
  • Added Temperature Status Tags (#106).

Example Migration

A simple migration of adding temperature:

void foo(LivingEntity e) {
-    e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+    e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}

Temperature Status API

The Temperature Effect API was rewritten and renamed to the Temperature Status API to better distinguish between the JSON files (statuses) and the effect types that actually do the work. The API largely does the same thing, but here is a summary of the changes:

  • Replaced the thermoo/temperature_effect registry with thermoo/temperature_status registry
  • The new status registry is now an actual registry, which supports tags, synchronisation, and Holders, and all that.
  • Replaced config objects with a direct effects list entry.
  • Moved type delegation to entries of the effects, rather than at the root of the registry object.
  • Merged the attribute_modifier and scaling_attribute_modifier into a single type, differentiated with a field.
  • Removed the empty and sequence types, they are no longer needed.
  • Added a way to define the application order of statuses with the thermoo:application_order temperature status tag.

This also removed some functionality:

  • Temperature statuses can no longer be "hot reloaded"; you must restart the server to reload them.
  • There is no longer a loading_priority field. The intended functionality behind this was to allow Thermoo Patches to override the effects from Frostiful/Scorchful with a check for Origin. This was superseded by the enable API. It is not known if anyone else used this for any particular functionality that was actually necessary, so it is being removed.

Example migration

Old effect

{
    "type": "thermoo:damage",
    "temperature_scale_range": {
        "max": -0.99
    },
    "config": {
        "amount": 1,
        "damage_interval": 20,
        "damage_type": "minecraft:freeze"
    }
}

New status

{
    "temperature_scale_range": {
        "max": -0.99
    },
    "interval": 20,
    "effects": [
         {
             "type": "thermoo:damage",
             "amount": 1,
             "damage_type": "minecraft:freeze"
         }
    ]
}

Thermoo 10.0.0-beta.3

beta26 марта 2026 г.

Thermoo 10.0.0 Beta 3 for Minecraft 26.1

Another beta build for Thermoo 10 for Minecraft 26.1, this time targeting the full release. While this is targeting the release version, further breaking changes are still possible.. Documentation has not yet been updated either, but it will be soon.

Beta 3

  • Updated to release 26.1
  • Updated Polymer integration
  • Breaking change: Renamed Thermoo registry classes to match Mojmap:
    • ThermooRegistries -> ThermooBuiltInRegistries
    • ThermooRegistryKeys -> ThermooRegistries

Beta 2

  • Replaced usage of net.fabricmc.fabric.api.util.TriState in the public API with dev.yumi.commons.TriState
  • Added a new event: TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS that allows for finer grained control over temperature statuses than the enable/disable API.
  • Added F3 debug screen entries for temperature and soaking.
  • The command /thermoo temperature status now permits enable or disable syntax as an alternative to set_enabled.
  • Removed previously deprecated usage of /thermoo environment relativehumidity, users must now use /thermoo environment relative_humidity.

Beta 1

  • Bumped the version of the core package to v2 to align with the general vibe of changes 26.1 is introducing.
  • Moved all classes previously under the util.v1 package to the core.v2 package.
  • Renamed TemperatureRecord#add(TemperatureRecord) to TemperatureRecord#shift(TemperatureRecord), and deprecated the add method.
  • Added convenience methods for creating instances of TemperatureChange to BuiltinTemperatureSources.
  • Replaced API exposure of Fabric API with Yumi Commons by LambdAurora.
  • Replaced all usage of Fabric API event classes (net.fabricmc.fabric.api.event.Event) with Yumi event classes (dev.yumi.commons.event.Event).
    • Usage of Yumi events is essentially identical to Fabric API events, but it does not tie Thermoo's API to another Minecraft mod.
    • This is primarily intended to make a future non-FFAPI based Neoforge port of Thermoo possible.
    • I will not be making FFAPI-free ports of Frostiful.
  • Refactored the TemperatureLootCondition and SoakedLootCondition classes to no longer be records.
  • Replaced the EnvironmentProviderType class and its usage with direct registration of MapCodecs.
  • Established a more uniform and consistent naming scheme for the builtin implementations of EnvironmentProvider. Classes were renamed as follows:
    • ConstantEnvironmentProvider -> ConstantProvider
    • ModifyEnvironmentProvider -> ModifyProvider
    • TemperatureShiftEnvironmentProvider -> ShiftTemperatureProvider
    • SetTemperatureFromPressure -> SetTemperatureFromPressureProvider
    • SetPressureFromAltitude -> SetPressureFromAltitudeProvider
    • TemperateSeasonEnvironmentProvider -> TemperateSeasonSelector
    • TropicalSeasonEnvironmentProvider -> TropicalSeasonSelector
    • LightThresholdLightProvider -> LightThresholdSelector
    • WeatherStateEnvironmentProvider -> WeatherStateSelector
    • BiomePrecipitationTypeEnvironmentProvider -> PrecipitationTypeSelector

Alpha 2

  • Replaced HeatingMode with a data-driven temperature sources API (#109).
  • Moved all remaining API packages to versioned packages, as follows:
    • 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.* (these classes may still be split up to more specific packages)
    • com.github.thedeathlycow.thermoo.api.client.* -> com.github.thedeathlycow.thermoo.api.client.v1.*
  • Moved the ThermooRegistries and ThermooRegistryKeys classes to a registry package in the core API
  • Moved the predicate package and ThermooAttributes class to a new entity API package: com.github.thedeathlycow.thermoo.api.entity.v1
  • Split the Item and EntityType tags in ThermooTags into classes in the entity API (ThermooEntityTypeTags) and item API (ThermooItemTags), respectively
  • Removed ThermooTags.
  • Usage of GuiGraphics in StatusBarOverlayRenderEvents was replaced with GuiGraphicsExtractor

Data-driven Temperature Sources

  • Moved all classes and packages under com.github.thedeathlycow.thermoo.api.temperature.* EXCEPT for the status package to com.github.thedeathlycow.thermoo.api.core.v2.
  • Removed the HeatingMode and HeatingModes classes.
  • The method TemperatureAware#thermoo$addTemperature(int, HeatingMode) was converted to TemperatureAware#thermoo$addTemperature(int, TemperatureChange).
  • TemperatureChange now stores information about the context of individual temperature changes, including source, cause, direct cause, and position, and this data is now passed to various temperature change related events.
  • Added a new ThermooLevel interface that is injected onto all Level instances by mixin.
    • ThermooLevel provides access to a set of shared instances of TemperatureChange.
  • The ALLOW_X_UPDATE and ALLOW_X_CHANGE events in LivingEntityTemperatureTickEvents were removed and replaced with more general events in TemperatureChangeEvents.
  • The GET_X_CHANGE event in LivingEntityTemperatureTickEvents is now a source-key mapped event returned by getTemperatureChange that allows for the same sort of event to apply to any temperature source - except absolute and environment sources.
  • The /thermoo temperature (add|remove) sub-commands now provide more ability to specify context about a temperature change with at and by syntax, essentially to provide the data for the TemperatureChange class.

Alpha 1

  • Begun adding version numbers to API packages.
    • So far this has impacted the following packages:
      • com.github.thedeathlycow.thermoo.api.command -> com.github.thedeathlycow.thermoo.api.command.v1
      • com.github.thedeathlycow.thermoo.api.temperature.effect -> com.github.thedeathlycow.thermoo.api.temperature.status.v2
    • More packages will be moved before the full 26.1 release.
  • Removed command definition classes from API.
    • These are now implementation classes.
  • Renamed *ArgumentType classes to *Argument in the command API.
  • Replaced the Temperature Effect API with the Temperature Status API (#104).
  • Added Temperature Status Tags (#106).

Example Migration

A simple migration of adding temperature:

void foo(LivingEntity e) {
-    e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+    e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}

Temperature Status API

The Temperature Effect API was rewritten and renamed to the Temperature Status API to better distinguish between the JSON files (statuses) and the effect types that actually do the work. The API largely does the same thing, but here is a summary of the changes:

  • Replaced the thermoo/temperature_effect registry with thermoo/temperature_status registry
  • The new status registry is now an actual registry, which supports tags, synchronisation, and Holders, and all that.
  • Replaced config objects with a direct effects list entry.
  • Moved type delegation to entries of the effects, rather than at the root of the registry object.
  • Merged the attribute_modifier and scaling_attribute_modifier into a single type, differentiated with a field.
  • Removed the empty and sequence types, they are no longer needed.
  • Added a way to define the application order of statuses with the thermoo:application_order temperature status tag.

This also removed some functionality:

  • Temperature statuses can no longer be "hot reloaded"; you must restart the server to reload them.
  • There is no longer a loading_priority field. The intended functionality behind this was to allow Thermoo Patches to override the effects from Frostiful/Scorchful with a check for Origin. This was superseded by the enable API. It is not known if anyone else used this for any particular functionality that was actually necessary, so it is being removed.

Example migration

Old effect

{
    "type": "thermoo:damage",
    "temperature_scale_range": {
        "max": -0.99
    },
    "config": {
        "amount": 1,
        "damage_interval": 20,
        "damage_type": "minecraft:freeze"
    }
}

New status

{
    "temperature_scale_range": {
        "max": -0.99
    },
    "interval": 20,
    "effects": [
         {
             "type": "thermoo:damage",
             "amount": 1,
             "damage_type": "minecraft:freeze"
         }
    ]
}

Thermoo 10.0.0-beta.2

beta20 марта 2026 г.

Thermoo 10.0.0 Beta 1 for Minecraft 26.1-pre-2

A beta build for Thermoo 10 for Minecraft 26.1. At this time, I have implemented all the features I plan to release for 26.1. However, further breaking changes are still possible. Because of this, the documentation has also not yet been updated! The Thermoo Docs will be fully updated when the API changes are finalized for 26.1.

Beta 2

  • Replaced usage of net.fabricmc.fabric.api.util.TriState in the public API with dev.yumi.commons.TriState
  • Added a new event: TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS that allows for finer grained control over temperature statuses than the enable/disable API.
  • Added F3 debug screen entries for temperature and soaking.
  • The command /thermoo temperature status now permits enable or disable syntax as an alternative to set_enabled.
  • Removed previously deprecated usage of /thermoo environment relativehumidity, users must now use /thermoo environment relative_humidity.

Beta 1

  • Bumped the version of the core package to v2 to align with the general vibe of changes 26.1 is introducing.
  • Moved all classes previously under the util.v1 package to the core.v2 package.
  • Renamed TemperatureRecord#add(TemperatureRecord) to TemperatureRecord#shift(TemperatureRecord), and deprecated the add method.
  • Added convenience methods for creating instances of TemperatureChange to BuiltinTemperatureSources.
  • Replaced API exposure of Fabric API with Yumi Commons by LambdAurora.
  • Replaced all usage of Fabric API event classes (net.fabricmc.fabric.api.event.Event) with Yumi event classes (dev.yumi.commons.event.Event).
    • Usage of Yumi events is essentially identical to Fabric API events, but it does not tie Thermoo's API to another Minecraft mod.
    • This is primarily intended to make a future non-FFAPI based Neoforge port of Thermoo possible.
    • I will not be making FFAPI-free ports of Frostiful.
  • Refactored the TemperatureLootCondition and SoakedLootCondition classes to no longer be records.
  • Replaced the EnvironmentProviderType class and its usage with direct registration of MapCodecs.
  • Established a more uniform and consistent naming scheme for the builtin implementations of EnvironmentProvider. Classes were renamed as follows:
    • ConstantEnvironmentProvider -> ConstantProvider
    • ModifyEnvironmentProvider -> ModifyProvider
    • TemperatureShiftEnvironmentProvider -> ShiftTemperatureProvider
    • SetTemperatureFromPressure -> SetTemperatureFromPressureProvider
    • SetPressureFromAltitude -> SetPressureFromAltitudeProvider
    • TemperateSeasonEnvironmentProvider -> TemperateSeasonSelector
    • TropicalSeasonEnvironmentProvider -> TropicalSeasonSelector
    • LightThresholdLightProvider -> LightThresholdSelector
    • WeatherStateEnvironmentProvider -> WeatherStateSelector
    • BiomePrecipitationTypeEnvironmentProvider -> PrecipitationTypeSelector

Alpha 2

  • Replaced HeatingMode with a data-driven temperature sources API (#109).
  • Moved all remaining API packages to versioned packages, as follows:
    • 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.* (these classes may still be split up to more specific packages)
    • com.github.thedeathlycow.thermoo.api.client.* -> com.github.thedeathlycow.thermoo.api.client.v1.*
  • Moved the ThermooRegistries and ThermooRegistryKeys classes to a registry package in the core API
  • Moved the predicate package and ThermooAttributes class to a new entity API package: com.github.thedeathlycow.thermoo.api.entity.v1
  • Split the Item and EntityType tags in ThermooTags into classes in the entity API (ThermooEntityTypeTags) and item API (ThermooItemTags), respectively
  • Removed ThermooTags.
  • Usage of GuiGraphics in StatusBarOverlayRenderEvents was replaced with GuiGraphicsExtractor

Data-driven Temperature Sources

  • Moved all classes and packages under com.github.thedeathlycow.thermoo.api.temperature.* EXCEPT for the status package to com.github.thedeathlycow.thermoo.api.core.v2.
  • Removed the HeatingMode and HeatingModes classes.
  • The method TemperatureAware#thermoo$addTemperature(int, HeatingMode) was converted to TemperatureAware#thermoo$addTemperature(int, TemperatureChange).
  • TemperatureChange now stores information about the context of individual temperature changes, including source, cause, direct cause, and position, and this data is now passed to various temperature change related events.
  • Added a new ThermooLevel interface that is injected onto all Level instances by mixin.
    • ThermooLevel provides access to a set of shared instances of TemperatureChange.
  • The ALLOW_X_UPDATE and ALLOW_X_CHANGE events in LivingEntityTemperatureTickEvents were removed and replaced with more general events in TemperatureChangeEvents.
  • The GET_X_CHANGE event in LivingEntityTemperatureTickEvents is now a source-key mapped event returned by getTemperatureChange that allows for the same sort of event to apply to any temperature source - except absolute and environment sources.
  • The /thermoo temperature (add|remove) sub-commands now provide more ability to specify context about a temperature change with at and by syntax, essentially to provide the data for the TemperatureChange class.

Alpha 1

  • Begun adding version numbers to API packages.
    • So far this has impacted the following packages:
      • com.github.thedeathlycow.thermoo.api.command -> com.github.thedeathlycow.thermoo.api.command.v1
      • com.github.thedeathlycow.thermoo.api.temperature.effect -> com.github.thedeathlycow.thermoo.api.temperature.status.v2
    • More packages will be moved before the full 26.1 release.
  • Removed command definition classes from API.
    • These are now implementation classes.
  • Renamed *ArgumentType classes to *Argument in the command API.
  • Replaced the Temperature Effect API with the Temperature Status API (#104).
  • Added Temperature Status Tags (#106).

Example Migration

A simple migration of adding temperature:

void foo(LivingEntity e) {
-    e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+    e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}

Temperature Status API

The Temperature Effect API was rewritten and renamed to the Temperature Status API to better distinguish between the JSON files (statuses) and the effect types that actually do the work. The API largely does the same thing, but here is a summary of the changes:

  • Replaced the thermoo/temperature_effect registry with thermoo/temperature_status registry
  • The new status registry is now an actual registry, which supports tags, synchronisation, and Holders, and all that.
  • Replaced config objects with a direct effects list entry.
  • Moved type delegation to entries of the effects, rather than at the root of the registry object.
  • Merged the attribute_modifier and scaling_attribute_modifier into a single type, differentiated with a field.
  • Removed the empty and sequence types, they are no longer needed.
  • Added a way to define the application order of statuses with the thermoo:application_order temperature status tag.

This also removed some functionality:

  • Temperature statuses can no longer be "hot reloaded"; you must restart the server to reload them.
  • There is no longer a loading_priority field. The intended functionality behind this was to allow Thermoo Patches to override the effects from Frostiful/Scorchful with a check for Origin. This was superseded by the enable API. It is not known if anyone else used this for any particular functionality that was actually necessary, so it is being removed.

Example migration

Old effect

{
    "type": "thermoo:damage",
    "temperature_scale_range": {
        "max": -0.99
    },
    "config": {
        "amount": 1,
        "damage_interval": 20,
        "damage_type": "minecraft:freeze"
    }
}

New status

{
    "temperature_scale_range": {
        "max": -0.99
    },
    "interval": 20,
    "effects": [
         {
             "type": "thermoo:damage",
             "amount": 1,
             "damage_type": "minecraft:freeze"
         }
    ]
}

Thermoo 10.0.0-beta.1

beta19 марта 2026 г.

Thermoo 10.0.0 Beta 1 for Minecraft 26.1-pre-2

A beta build for Thermoo 10 for Minecraft 26.1. At this time, I have implemented all the features I plan to release for 26.1. However, further breaking changes are still possible. Because of this, the documentation has also not yet been updated! The Thermoo Docs will be fully updated when the API changes are finalized for 26.1.

Beta 1

  • Bumped the version of the core package to v2 to align with the general vibe of changes 26.1 is introducing.
  • Moved all classes previously under the util.v1 package to the core.v2 package.
  • Renamed TemperatureRecord#add(TemperatureRecord) to TemperatureRecord#shift(TemperatureRecord), and deprecated the add method.
  • Added convenience methods for creating instances of TemperatureChange to BuiltinTemperatureSources.
  • Replaced API exposure of Fabric API with Yumi Commons by LambdAurora.
  • Replaced all usage of Fabric API event classes (net.fabricmc.fabric.api.event.Event) with Yumi event classes (dev.yumi.commons.event.Event).
    • Usage of Yumi events is essentially identical to Fabric API events, but it does not tie Thermoo's API to another Minecraft mod.
    • This is primarily intended to make a future non-FFAPI based Neoforge port of Thermoo possible.
    • I will not be making FFAPI-free ports of Frostiful.
  • Refactored the TemperatureLootCondition and SoakedLootCondition classes to no longer be records.
  • Replaced the EnvironmentProviderType class and its usage with direct registration of MapCodecs.
  • Established a more uniform and consistent naming scheme for the builtin implementations of EnvironmentProvider. Classes were renamed as follows:
    • ConstantEnvironmentProvider -> ConstantProvider
    • ModifyEnvironmentProvider -> ModifyProvider
    • TemperatureShiftEnvironmentProvider -> ShiftTemperatureProvider
    • SetTemperatureFromPressure -> SetTemperatureFromPressureProvider
    • SetPressureFromAltitude -> SetPressureFromAltitudeProvider
    • TemperateSeasonEnvironmentProvider -> TemperateSeasonSelector
    • TropicalSeasonEnvironmentProvider -> TropicalSeasonSelector
    • LightThresholdLightProvider -> LightThresholdSelector
    • WeatherStateEnvironmentProvider -> WeatherStateSelector
    • BiomePrecipitationTypeEnvironmentProvider -> PrecipitationTypeSelector

Alpha 2

  • Replaced HeatingMode with a data-driven temperature sources API (#109).
  • Moved all remaining API packages to versioned packages, as follows:
    • 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.* (these classes may still be split up to more specific packages)
    • com.github.thedeathlycow.thermoo.api.client.* -> com.github.thedeathlycow.thermoo.api.client.v1.*
  • Moved the ThermooRegistries and ThermooRegistryKeys classes to a registry package in the core API
  • Moved the predicate package and ThermooAttributes class to a new entity API package: com.github.thedeathlycow.thermoo.api.entity.v1
  • Split the Item and EntityType tags in ThermooTags into classes in the entity API (ThermooEntityTypeTags) and item API (ThermooItemTags), respectively
  • Removed ThermooTags.
  • Usage of GuiGraphics in StatusBarOverlayRenderEvents was replaced with GuiGraphicsExtractor

Data-driven Temperature Sources

  • Moved all classes and packages under com.github.thedeathlycow.thermoo.api.temperature.* EXCEPT for the status package to com.github.thedeathlycow.thermoo.api.core.v2.
  • Removed the HeatingMode and HeatingModes classes.
  • The method TemperatureAware#thermoo$addTemperature(int, HeatingMode) was converted to TemperatureAware#thermoo$addTemperature(int, TemperatureChange).
  • TemperatureChange now stores information about the context of individual temperature changes, including source, cause, direct cause, and position, and this data is now passed to various temperature change related events.
  • Added a new ThermooLevel interface that is injected onto all Level instances by mixin.
    • ThermooLevel provides access to a set of shared instances of TemperatureChange.
  • The ALLOW_X_UPDATE and ALLOW_X_CHANGE events in LivingEntityTemperatureTickEvents were removed and replaced with more general events in TemperatureChangeEvents.
  • The GET_X_CHANGE event in LivingEntityTemperatureTickEvents is now a source-key mapped event returned by getTemperatureChange that allows for the same sort of event to apply to any temperature source - except absolute and environment sources.
  • The /thermoo temperature (add|remove) sub-commands now provide more ability to specify context about a temperature change with at and by syntax, essentially to provide the data for the TemperatureChange class.

Alpha 1

  • Begun adding version numbers to API packages.
    • So far this has impacted the following packages:
      • com.github.thedeathlycow.thermoo.api.command -> com.github.thedeathlycow.thermoo.api.command.v1
      • com.github.thedeathlycow.thermoo.api.temperature.effect -> com.github.thedeathlycow.thermoo.api.temperature.status.v2
    • More packages will be moved before the full 26.1 release.
  • Removed command definition classes from API.
    • These are now implementation classes.
  • Renamed *ArgumentType classes to *Argument in the command API.
  • Replaced the Temperature Effect API with the Temperature Status API (#104).
  • Added Temperature Status Tags (#106).

Example Migration

A simple migration of adding temperature:

void foo(LivingEntity e) {
-    e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+    e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}

Temperature Status API

The Temperature Effect API was rewritten and renamed to the Temperature Status API to better distinguish between the JSON files (statuses) and the effect types that actually do the work. The API largely does the same thing, but here is a summary of the changes:

  • Replaced the thermoo/temperature_effect registry with thermoo/temperature_status registry
  • The new status registry is now an actual registry, which supports tags, synchronisation, and Holders, and all that.
  • Replaced config objects with a direct effects list entry.
  • Moved type delegation to entries of the effects, rather than at the root of the registry object.
  • Merged the attribute_modifier and scaling_attribute_modifier into a single type, differentiated with a field.
  • Removed the empty and sequence types, they are no longer needed.
  • Added a way to define the application order of statuses with the thermoo:application_order temperature status tag.

This also removed some functionality:

  • Temperature statuses can no longer be "hot reloaded"; you must restart the server to reload them.
  • There is no longer a loading_priority field. The intended functionality behind this was to allow Thermoo Patches to override the effects from Frostiful/Scorchful with a check for Origin. This was superseded by the enable API. It is not known if anyone else used this for any particular functionality that was actually necessary, so it is being removed.

Example migration

Old effect

{
    "type": "thermoo:damage",
    "temperature_scale_range": {
        "max": -0.99
    },
    "config": {
        "amount": 1,
        "damage_interval": 20,
        "damage_type": "minecraft:freeze"
    }
}

New status

{
    "temperature_scale_range": {
        "max": -0.99
    },
    "interval": 20,
    "effects": [
         {
             "type": "thermoo:damage",
             "amount": 1,
             "damage_type": "minecraft:freeze"
         }
    ]
}

Thermoo 10.0.0-alpha.2

alpha17 марта 2026 г.

Thermoo 10.0.0 Alpha 2 for Minecraft 26.1-snapshot-11

A second pre-release build for Thermoo 10 for Minecraft 26.1. This is an alpha version, and the API remains extremely unstable as further breaking changes are planned. Because of this, the documentation has also not yet been updated! The Thermoo Docs will be fully updated when the API changes are finalized for 26.1.

This release is primarily intended for me to get a head start on updating Frostiful and Scorchful, and also to open Thermoo up to public bugtesting from whomever wants to do that.

Alpha 1

  • Begun adding version numbers to API packages.
    • So far this has impacted the following packages:
      • com.github.thedeathlycow.thermoo.api.command -> com.github.thedeathlycow.thermoo.api.command.v1
      • com.github.thedeathlycow.thermoo.api.temperature.effect -> com.github.thedeathlycow.thermoo.api.temperature.status.v2
    • More packages will be moved before the full 26.1 release.
  • Removed command definition classes from API.
    • These are now implementation classes.
  • Renamed *ArgumentType classes to *Argument in the command API.
  • Replaced the Temperature Effect API with the Temperature Status API (#104).
  • Added Temperature Status Tags (#106).

Alpha 2

  • Replaced HeatingMode with a data-driven temperature sources API (#109).
  • Moved all remaining API packages to versioned packages, as follows:
    • 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.* (these classes may still be split up to more specific packages)
    • com.github.thedeathlycow.thermoo.api.client.* -> com.github.thedeathlycow.thermoo.api.client.v1.*
  • Moved the ThermooRegistries and ThermooRegistryKeys classes to a registry package in the core API
  • Moved the predicate package and ThermooAttributes class to a new entity API package: com.github.thedeathlycow.thermoo.api.entity.v1
  • Split the Item and EntityType tags in ThermooTags into classes in the entity API (ThermooEntityTypeTags) and item API (ThermooItemTags), respectively
  • Removed ThermooTags.
  • Usage of GuiGraphics in StatusBarOverlayRenderEvents was replaced with GuiGraphicsExtractor

Data-driven Temperature Sources

  • Moved all classes and packages under com.github.thedeathlycow.thermoo.api.temperature.* EXCEPT for the status package to com.github.thedeathlycow.thermoo.api.core.v1.
  • Removed the HeatingMode and HeatingModes classes.
  • The method TemperatureAware#thermoo$addTemperature(int, HeatingMode) was converted to TemperatureAware#thermoo$addTemperature(int, TemperatureChange).
  • TemperatureChange now stores information about the context of individual temperature changes, including source, cause, direct cause, and position, and this data is now passed to various temperature change related events.
  • Added a new ThermooLevel interface that is injected onto all Level instances by mixin.
    • ThermooLevel provides access to a set of shared instances of TemperatureChange.
  • The ALLOW_X_UPDATE and ALLOW_X_CHANGE events in LivingEntityTemperatureTickEvents were removed and replaced with more general events in TemperatureChangeEvents.
  • The GET_X_CHANGE event in LivingEntityTemperatureTickEvents is now a source-key mapped event returned by getTemperatureChange that allows for the same sort of event to apply to any temperature source - except absolute and environment sources.
  • The /thermoo temperature (add|remove) sub-commands now provide more ability to specify context about a temperature change with at and by syntax, essentially to provide the data for the TemperatureChange class.

Example Migration

A simple migration of adding temperature:

void foo(LivingEntity e) {
-    e.thermoo$addTemperature(10, HeatingModes.ACTIVE);
+    e.thermoo$addTemperature(10, e.level().thermoo$temperatureSources().active());
}

Temperature Status API

The Temperature Effect API was rewritten and renamed to the Temperature Status API to better distinguish between the JSON files (statuses) and the effect types that actually do the work. The API largely does the same thing, but here is a summary of the changes:

  • Replaced the thermoo/temperature_effect registry with thermoo/temperature_status registry
  • The new status registry is now an actual registry, which supports tags, synchronisation, and Holders, and all that.
  • Replaced config objects with a direct effects list entry.
  • Moved type delegation to entries of the effects, rather than at the root of the registry object.
  • Merged the attribute_modifier and scaling_attribute_modifier into a single type, differentiated with a field.
  • Removed the empty and sequence types, they are no longer needed.
  • Added a way to define the application order of statuses with the thermoo:application_order temperature status tag.

This also removed some functionality:

  • Temperature statuses can no longer be "hot reloaded"; you must restart the server to reload them.
  • There is no longer a loading_priority field. The intended functionality behind this was to allow Thermoo Patches to override the effects from Frostiful/Scorchful with a check for Origin. This was superseded by the enable API. It is not known if anyone else used this for any particular functionality that was actually necessary, so it is being removed.

Example migration

Old effect

{
    "type": "thermoo:damage",
    "temperature_scale_range": {
        "max": -0.99
    },
    "config": {
        "amount": 1,
        "damage_interval": 20,
        "damage_type": "minecraft:freeze"
    }
}

New status

{
    "temperature_scale_range": {
        "max": -0.99
    },
    "interval": 20,
    "effects": [
         {
             "type": "thermoo:damage",
             "amount": 1,
             "damage_type": "minecraft:freeze"
         }
    ]
}

Совместимость

Minecraft: Java Edition

26.1.x1.21.x1.20.x1.19.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Детали

Лицензия:LGPL-3.0-only
Опубликован:3 года назад
Обновлён:3 недели назад
Главная