Compatibility
Minecraft: Java Edition
26.1-rc-1
1.21.x
1.20.4
1.20–1.20.2
1.19.4
1.19.2
Platforms
Supported environments
Creators
Details
Licensed LGPL-3.0-only
Published 3 years ago
Updated 6 days ago
Changelog
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.TriStatein the public API withdev.yumi.commons.TriState - Added a new event:
TemperatureStatusEvents#ALLOW_TEMPERATURE_STATUSthat 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 statusnow permitsenableordisablesyntax as an alternative toset_enabled. - Removed previously deprecated usage of
/thermoo environment relativehumidity, users must now use/thermoo environment relative_humidity.
Beta 1
- Bumped the version of the
corepackage tov2to align with the general vibe of changes 26.1 is introducing. - Moved all classes previously under the
util.v1package to thecore.v2package. - Renamed
TemperatureRecord#add(TemperatureRecord)toTemperatureRecord#shift(TemperatureRecord), and deprecated theaddmethod. - Added convenience methods for creating instances of
TemperatureChangetoBuiltinTemperatureSources. - 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
TemperatureLootConditionandSoakedLootConditionclasses to no longer be records. - Replaced the
EnvironmentProviderTypeclass and its usage with direct registration ofMapCodecs. - Established a more uniform and consistent naming scheme for the builtin implementations of
EnvironmentProvider. Classes were renamed as follows:ConstantEnvironmentProvider->ConstantProviderModifyEnvironmentProvider->ModifyProviderTemperatureShiftEnvironmentProvider->ShiftTemperatureProviderSetTemperatureFromPressure->SetTemperatureFromPressureProviderSetPressureFromAltitude->SetPressureFromAltitudeProviderTemperateSeasonEnvironmentProvider->TemperateSeasonSelectorTropicalSeasonEnvironmentProvider->TropicalSeasonSelectorLightThresholdLightProvider->LightThresholdSelectorWeatherStateEnvironmentProvider->WeatherStateSelectorBiomePrecipitationTypeEnvironmentProvider->PrecipitationTypeSelector
Alpha 2
- Replaced
HeatingModewith 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
ThermooRegistriesandThermooRegistryKeysclasses to aregistrypackage in the core API - Moved the
predicatepackage andThermooAttributesclass to a new entity API package:com.github.thedeathlycow.thermoo.api.entity.v1 - Split the
ItemandEntityTypetags inThermooTagsinto classes in the entity API (ThermooEntityTypeTags) and item API (ThermooItemTags), respectively - Removed
ThermooTags. - Usage of
GuiGraphicsinStatusBarOverlayRenderEventswas replaced withGuiGraphicsExtractor
Data-driven Temperature Sources
- Moved all classes and packages under
com.github.thedeathlycow.thermoo.api.temperature.*EXCEPT for thestatuspackage tocom.github.thedeathlycow.thermoo.api.core.v2. - Removed the
HeatingModeandHeatingModesclasses. - The method
TemperatureAware#thermoo$addTemperature(int, HeatingMode)was converted toTemperatureAware#thermoo$addTemperature(int, TemperatureChange). TemperatureChangenow 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
ThermooLevelinterface that is injected onto allLevelinstances by mixin.ThermooLevelprovides access to a set of shared instances ofTemperatureChange.
- The
ALLOW_X_UPDATEandALLOW_X_CHANGEevents inLivingEntityTemperatureTickEventswere removed and replaced with more general events inTemperatureChangeEvents. - The
GET_X_CHANGEevent inLivingEntityTemperatureTickEventsis now a source-key mapped event returned bygetTemperatureChangethat 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 withatandbysyntax, essentially to provide the data for theTemperatureChangeclass.
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.v1com.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.
- So far this has impacted the following packages:
- Removed command definition classes from API.
- These are now implementation classes.
- Renamed
*ArgumentTypeclasses to*Argumentin 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_effectregistry withthermoo/temperature_statusregistry - The new status registry is now an actual registry, which supports tags, synchronisation, and
Holders, and all that. - Replaced
configobjects with a directeffectslist entry. - Moved type delegation to entries of the effects, rather than at the root of the registry object.
- Merged the
attribute_modifierandscaling_attribute_modifierinto a single type, differentiated with a field. - Removed the
emptyandsequencetypes, they are no longer needed. - Added a way to define the application order of statuses with the
thermoo:application_ordertemperature 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_priorityfield. 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"
}
]
}
Files
Metadata
Release channel
BetaVersion number
10.0.0-beta.2Loaders
Game versions
26.1-rc-1Environment
Client and server, optional on client
Downloads
25Publication date
March 20, 2026 at 12:43 PMPublisher
TheDeathlyCow
Owner



