Thermoo 9.0.0
This update brings Thermoo to Minecraft 1.21.11. Per the LTS policy, this release marks the end of support for Minecraft 1.21.9-10.
- Updated to Minecraft 1.21.11.
- Added new Environment Attributes to control seasons and temperature.
- Reworked the seasons API to better support the environment attribute integration. This is a major breaking change for anyone using the Java-side Seasons API. See below for details. The JSON API should remain exactly the same.
- Added a new
mildtropical season.
Environment Attributes
Thermoo now provides several new environment attributes that integrate this new vanilla system with seasons and temperature. These new attributes are documented on the Thermoo wiki.
Seasons API Rework
The Seasons API has been reworked with, broadly, two major changes to support better future extensibility: First, the
ThermooSeason enum was converted into an interface which is implemented by two separate enums for temperate and
tropical seasons, called TemperateSeason and TropicalSeason respectively. A mild tropical season was also added
with this change to represent transition periods from wet to dry.
Secondly, the type returned by the seasons events was changed from an optional season to an optional season state,
which includes not only the original season but also a new progress value. This captures the "state" of a season at
some particular point in time. The new progress value is a number in the range [0, 1] which represents how far the
season has progressed.
Here is a basic migration overview:
ThermooSeason.SPRING->TemperateSeason.SPRINGThermooSeason.AUTUMN->TemperateSeason.AUTUMNThermooSeason.SUMMER->TemperateSeason.SUMMERThermooSeason.WINTER->TemperateSeason.WINTERThermooSeason.TROPICAL_DRY->TropicalSeason.DRYThermooSeason.TROPICAL_WET->TropicalSeason.WET- Added
TropicalSeason.MILD ThermooSeason#getCurrentSeason(Level)->TemperateSeason#getCurrentState(Level, BlockPos)(note the addedBlockPosparameter)ThermooSeason#getCurrentTropicalSeason(Level, BlockPos)->TropicalSeason#getCurrentState(Level, BlockPos).map()
Examples:
-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());
}
);
Migration to Mojang Mappings
This is a backport of Thermoo 8.1.0 for Minecraft 1.21.10
Based Mojang's move towards removing obfuscation, and anticipating Fabric's move to MojMap, I have remapped Thermoo to MojMap. This was a big change code-side for Thermoo but, thanks to intermediary, this should not constitute any breaking changes to the public API. However, I may have messed something up, so this version will initially be released as a beta.
While no breaking changes are planned to be made at this time, a few fields and methods have been renamed to better conform to Official Mappings standards. These are as follows:
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
The resource location of the temperature effect type thermoo:status_effect was changed to thermoo:mob_effect, however an alias has been added to allow existing datapacks to continue to work.
All old fields and methods have been deprecated and just redirect to the new ones, so there are no breaking changes.
When Minecraft fully moves over to using the unobfuscated jar (the update after Mounts of Mayhem), the old fields will be removed and other names, particularly class names, that could not be easily changed without breaking the public API will also be changed.
Migration to Mojang Mappings
Based Mojang's move towards removing obfuscation, and anticipating Fabric's likely inevitable move to MojMap, I have remapped Thermoo to MojMap. This was a big change code-side for Thermoo but, thanks to intermediary, this should not constitute any breaking changes to the public API. However, I may have messed something up, so this version will initially be released as a beta.
While no breaking changes are planned to be made at this time, a few fields and methods have been renamed to better conform to Official Mappings standards. These are as follows:
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
The resource location of the temperature effect type thermoo:status_effect was changed to thermoo:mob_effect, however an alias has been added to allow existing datapacks to continue to work.
All old fields and methods have been deprecated and just redirect to the new ones, so there are no breaking changes.
When Minecraft fully moves over to using the unobfuscated jar (the update after Mounts of Mayhem), the old fields will be removed and other names, particularly class names, that could not be easily changed without breaking the public API will also be changed.
- Updated to run natively on Minecraft 1.21.10, this should still work on 1.21.9.
- Thermoo is now targeting 1.21.9 directly
- Mod metadata now requires at least 1.21.9 to load
Thermoo for MC 1.21.9
- Updated to 1.21.9-rc1, this will likely work with the full release of 1.21.9. Per the LTS policy, this release represents the end of support for 1.21.6-8.
- While there are no breaking changes in Thermoo itself, changes to the
Entity#getWorld()method in Minecraft means this release breaks binary compatibility with 1.21.6-8, so Thermoo is therefore getting a major version bump. - Updated Argentine Spanish translations (thanks Texaliuz!)
Thermoo 7.1.0 for Minecraft 1.21.6-8: Polymer Integration
Thermoo can now once again work fully server side, but only if Polymer is installed. Some translations will be missing and custom command arguments will not autofill, but it will be compatible with vanilla clients or clients not using Thermoo. This only applies for dedicated servers, and not to LAN worlds in single player.
The release of this update should not be conflated to mean that I will be making a Polymer patch for Frostiful or Scorchful at this time, I mainly did this so that Thermoo can be used for custom datapacks on servers (which used to be a feature of Thermoo).
Thermoo is now also being compiled against 1.21.8 instead of 1.21.6, but should still work for 1.21.6-8.
Thermoo 4.6.0 for Minecraft 1.21.1: Polymer Integration
Thermoo can now once again work fully server side, but only if Polymer is installed. Some translations will be missing and custom command arguments will not autofill, but it will be compatible with vanilla clients or clients not using Thermoo. This only applies for dedicated servers, and not to LAN worlds in single player.
The release of this update should not be conflated to mean that I will be making a Polymer patch for Frostiful or Scorchful at this time, I mainly did this so that Thermoo can be used for custom datapacks on servers (which used to be a feature of Thermoo).
Thermoo 7 for Minecraft 1.21.6
This update brings Thermoo to 1.21.6. Per the LTS policy, this release also represents the end of support for 1.21.5. This version will likely also work on 1.21.7, when that version releases.
There is one notable breaking change in this update: The status bar overlay events have been refactored to reduce complexity, prevent errors, and be more extensible for future updates (if needed). See #82 for details.
To summarize, the main changes look something like this:
-StatusBarOverlayRenderEvents.AFTER_HEALTH_BAR.register(
- (DrawContext ctx, PlayerEntity player, Vector2i[] positions, int displayHealth, int maxDisplayHealth)-> {
- // rendering code
- });
+StatusBarOverlayRenderEvents.AFTER_HEALTH_BAR.register(
+ (DrawContext ctx, PlayerEntity player, HeartBarContext heartBarContext) -> {
+ SequencedCollection<Vector2i> positions = heartBarContext.positions();
+ int displayHealth = heartBarContext.currentDisplayHalfHearts();
+ int maxDisplayHealth = heartBarContext.maxDisplayHalfHearts();
+
+ // rendering code
+ });
- Added a message to help users find the mod Thermoo Patches if they need it
- Added a new config file in
thermoo.propertiesthat can be used to disable this message
- Added a message to help users find the mod Thermoo Patches if they need it
- Added a new config file in
thermoo.propertiesthat can be used to disable this message
- Fixed Thermoo temperature unit codecs not decoding properly in the Turkish locale
- Added Argentine Spanish Translations (Texaliuz)


