COWMODSКаталог модов

Thermoo

Temperature and Environment library mod. Used by Frostiful and Scorchful.

Автор: TheDeathlyCow4,8 млн194обновлён 31 июл. 2026 г.
Библиотеки

Описание

Thermoo - Temperature and Environment API

Thermoo is a temperature and environment library mod for Minecraft. It is meant to help provide compatibility between mods and datapacks that use temperature as a core mechanic, such as Frostiful or Scorchful. Using this mod on its own will have no gameplay or visual effects. It is designed to be used by Mods written in both Java and Kotlin, as well as Datapacks through Commands and other registries.

Developer Features and Wiki

Thermoo provides a number of useful features for developers of temperature mods and datapacks, including:

  • A unified framework for dealing with Temperature and Wetness/Soaking
  • Cross-compatibility with other Thermoo mods, without needing to specify direct compatibility patches
  • Powerful datapack-based Environment API
  • Data-driven temperature effects
  • Event-driven configuration of default item attributes
  • Robust API for working with unit-agnostic temperature records (like Celsius and Fahrenheit)
  • Integration with Seasons mods
  • Powerful commands
  • Extensive customizability for your own mods
  • Can run Server-side only with Polymer (Fabric only)

Thermoo has an extensive developer wiki on GitHub, available here. If you have trouble with something, feel free to ask in my Discord.

Configs for Modpack Authors

By itself, Thermoo should have no impact on your game. However, other mods may be installed that rely on features of Thermoo such as temperature effects and freezing. I would also recommend checking out the API Overview section of the wiki if you want to configure those mods.

Recommended Mods

Thermoo is the core of my other mods, Frostiful and Scorchful. If you want to see Thermoo in action, be sure to check it out!

License and Porting

Thermoo is licensed under LGPL-3.0. It is a mod developed primarily for the Fabric and Quilt mod loaders, with limited Neoforge support. Old versions of Minecraft will only be supported according to the LTS Policy. I have no plans to port to other loaders such as LexForge or Bukkit.

Последние версии

Все версии →
release

Thermoo Fabric 10.1.5

10.1.5
31 июл. 2026 г.3,6 тыс.Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Скачать
Что нового
- Moved mod metadata files to common module - This should make classtweakers apply for users relying on the common module in Loom
release

Thermoo NeoForge 10.1.5

10.1.5
31 июл. 2026 г.567Minecraft: 26.1, 26.1.1, 26.1.2neoforge
Скачать
Что нового
- Moved mod metadata files to common module - This should make classtweakers apply for users relying on the common module in Loom
release

Thermoo NeoForge 10.1.4

10.1.4
28 июл. 2026 г.75Minecraft: 26.1, 26.1.1, 26.1.2neoforge
Скачать
Что нового
# Thermoo 10.1.4 - Publish MDG-compatible AT/Interface injections via NeoLoom - Updated Argentine Spanish translations
release

Thermoo Fabric 10.1.4

10.1.4
28 июл. 2026 г.253Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Скачать
Что нового
# Thermoo 10.1.4 - Publish MDG-compatible AT/Interface injections via NeoLoom - Updated Argentine Spanish translations
release

Thermoo NeoForge 10.1.3

10.1.3
30 июн. 2026 г.149Minecraft: 26.1, 26.1.1, 26.1.2neoforge
Скачать
Что нового
- Fixed crash with Polymer patch
release

Thermoo Fabric 10.1.3

10.1.3
30 июн. 2026 г.2,1 тыс.Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Скачать
Что нового
- Fixed crash with Polymer patch
release

Thermoo Fabric 10.1.1

10.1.1
23 июн. 2026 г.795Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Скачать
Что нового
# Thermoo 10.1: Multiloaderification Thermoo now fully supports both Fabric and Neoforge for Minecraft 26.1.x. The Neoforge version of Thermoo no longer requires Forgified Fabric API, but it does require the Yumi Minecraft Foundation library (which is bundled with the mod). This release should also be fully compatible with 10.0.x. There are should be no breaking changes for users of this mod. However, as Thermoo now ships a common module, some things may change for developers consuming this mod. Changelog: - Ported Thermoo to a multi-loader architecture based on Neo-Loom. - Thermoo now ships `thermoo-common`, `thermoo-fabric`, and `thermoo-neoforge` jars. - Added support for Neoforge. - Added a new `ThermooDataComponentMapBuilder` interface to support what the `FabricDataComponentMapBuilder` interface does, but in a loader-agnostic way. 10.1.1 changelog: - Fixed javadoc jar not generating any data - Fixed the patch list url and removed the option from the default config
release

Thermoo NeoForge 10.1.1

10.1.1
23 июн. 2026 г.83Minecraft: 26.1, 26.1.1, 26.1.2neoforge
Скачать
Что нового
# Thermoo 10.1: Multiloaderification Thermoo now fully supports both Fabric and Neoforge for Minecraft 26.1.x. The Neoforge version of Thermoo no longer requires Forgified Fabric API, but it does require the Yumi Minecraft Foundation library (which is bundled with the mod). This release should also be fully compatible with 10.0.x. There are should be no breaking changes for users of this mod. However, as Thermoo now ships a common module, some things may change for developers consuming this mod. Changelog: - Ported Thermoo to a multi-loader architecture based on Neo-Loom. - Thermoo now ships `thermoo-common`, `thermoo-fabric`, and `thermoo-neoforge` jars. - Added support for Neoforge. - Added a new `ThermooDataComponentMapBuilder` interface to support what the `FabricDataComponentMapBuilder` interface does, but in a loader-agnostic way. 10.1.1 changelog: - Fixed javadoc jar not generating any data - Fixed the patch list url and removed the option from the default config
release

Thermoo 10.0.1

10.0.1
22 июн. 2026 г.293Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Скачать
Что нового
* Fixed attribute modifier temperature status effect removing itself wrongly
release

Thermoo 10.0.0

10.0.0
9 июн. 2026 г.2 тыс.Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Скачать
Что нового
# Thermoo 10.0.0 for Minecraft 26.1.x The full release of Thermoo 10 for Minecraft 26.1.x. Thermoo 10 is now considered stable and no further breaking changes are planned. Documentation has now also been updated. New from 10.0.0-beta.4: * Added a `IS_COLD_ENOUGH_TO_SNOW` event to the `ThermooSeasonEvents` class. * This provides a way to check if a seasons mod believes that an area should be snowy without relying on multiple redundant or inconsistent vanilla checks. * A convenience method to invoke this event has been added in `ThermooSeason`. * Introduced a more fool-proof way of registering attributes to entities to avoid invalid data from other mods prematurely cancelling `createLivingAttributes`. Full changelog from 9.x: * Updated to Minecraft 26.1.x * Replaced API exposure of Fabric API with Yumi classes. * For example: * `net.fabricmc.fabric.api.event.Event` -> `dev.yumi.commons.event.Event`, * `net.fabricmc.fabric.api.util.TriState` -> `dev.yumi.commons.TriState` * 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. * Replaced the Temperature Effect API with the Temperature Status API ([#104](https://github.com/TheDeathlyCow/thermoo/pull/104)). * Added Temperature Status Tags ([#106](https://github.com/TheDeathlyCow/thermoo/pull/106)). * Replaced `HeatingMode` with a data-driven temperature sources API ([#109](https://github.com/TheDeathlyCow/thermoo/pull/109)). * Added F3 debug screen entries for temperature, soaking, and environment providers. * Added a new event: `TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUS` that allows for finer grained control over temperature statuses than the enable/disable API. * 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`. * Added version numbers to API packages. * For example: * `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` * `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.*` * Removed command definition classes from API. * These are now implementation classes. * Renamed `*ArgumentType` classes to `*Argument` in the command API. * 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` * Moved all classes previously under the `util` 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`. * Refactored the `TemperatureLootCondition` and `SoakedLootCondition` classes to no longer be records. * Replaced the `EnvironmentProviderType` class and its usage with direct registration of `MapCodec`s. * 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` * Renamed Thermoo registry classes to match Mojmap: * `ThermooRegistries` -> `ThermooBuiltInRegistries` * `ThermooRegistryKeys` -> `ThermooRegistries` ## 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. ### Example Migration A simple migration of adding temperature: ```diff 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 `Holder`s, 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 ```json { "type": "thermoo:damage", "temperature_scale_range": { "max": -0.99 }, "config": { "amount": 1, "damage_interval": 20, "damage_type": "minecraft:freeze" } } ``` New status ```json { "temperature_scale_range": { "max": -0.99 }, "interval": 20, "effects": [ { "type": "thermoo:damage", "amount": 1, "damage_type": "minecraft:freeze" } ] } ```