nineMinecraft is a joke site.
nineMinecraft is in no way affiliated with Modrinth or 9minecraft. (And frankly, who wants to be affiliated with the latter?)
Thermoo

Thermoo

Mod

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

Client and server Library

1.57M downloads
130 followers
Filter loader...
Filter versions...
Filter channels...

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.properties that 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.properties that can be used to disable this message
  • Fixed Thermoo temperature unit codecs not decoding properly in the Turkish locale
  • Added Argentine Spanish Translations (Texaliuz)
  • Fix a crash when riding mounts with specific max health values

Update to Minecraft 1.21.5

This is the first stable release for Minecraft 1.21.5. It includes a few new features from Thermoo 4.4 and 5.3 as well that are meant to provide greater flexibility and depth.

  • Updated to Minecraft 1.21.5
  • Removed all deprecated APIs, including the EnvironmentController, TemperatureConverter, and some methods of ConfiguredTemperatureEffect, and TemperatureEffects.
  • Many classes such as EnvironmentCommand and TemperatureCommand classes were made final, and all static only now have a private constructor. This is technically a breaking change, though unlikely to affect anyone.
  • Updated game tests to use new framework
  • Replaced the canFreeze and canOverheat Kotlin temperature aware function extensions with canBeCold and canBeWarm to fix a conflict with the method Entity#canFreeze.
  • Environment Heat and Frost Resistance can now accept negative values. A negative environment resistance now provides a random chance of doubling a temperature decrease from an environmental source.
  • Added a priority field to the environment definition. This is used to sort the order that environment providers are applied to a biome during a lookup.
  • Implementation detail only: environment providers are now stored as a field of the Biome class, this should allow for slightly faster lookup times.

Environment Refinements

This update adds a few new features to the environment API to make it more flexible and offer a bit more depth.

  • Environment Heat and Frost Resistance can now accept negative values. A negative environment resistance now provides a random chance of doubling a temperature decrease from an environmental source.
  • Added a priority field to the environment definition. This is used to sort the order that environment providers are applied to a biome during a lookup.
  • Implementation detail only: environment providers are now stored as a field of the Biome class, this should allow for slightly faster lookup times.

Update to Minecraft 1.21.5

This is a first release for Minecraft 1.21.5. It is initially released as a Beta because Cardinal Components API is not yet stable, however from my testing it does seem to work fine. If you find any issues please feel free to report them to https://github.com/TheDeathlyCow/thermoo/issues.

  • Updated to Minecraft 1.21.5
  • Removed all deprecated APIs, including the EnvironmentController, TemperatureConverter, and some methods of ConfiguredTemperatureEffect, and TemperatureEffects.
  • Many classes such as EnvironmentCommand and TemperatureCommand classes were made final, and all static only now have a private constructor. This is technically a breaking change, though unlikely to affect anyone.
  • Updated game tests to use new framework
  • Replaced the canFreeze and canOverheat Kotlin temperature aware function extensions with canBeCold and canBeWarm to fix a conflict with the method Entity#canFreeze.

Update to Minecraft 1.21.5

This is a first release for Minecraft 1.21.5, targeting 1.21.5-rc1. This version is currently unstable, and should only be used for early porting.

  • Updated to Minecraft 1.21.5
  • Removed all deprecated APIs, including the EnvironmentController, TemperatureConverter, and some methods of ConfiguredTemperatureEffect, and TemperatureEffects.
  • Temporarily disabled gametests so that they can be rewritten at a later date
  • The EnvironmentCommand and TemperatureCommand classes were made final and now have a private constructor. Other static-only classes like this will receive similar treatment soon.
  • Updated to Minecraft 1.21.4
  • Minecraft 1.21.2-1.21.3 still seem to work with this version, however support for these may be removed at any time
  • Minecraft 1.20.1 is now officially unsupported

New Developer Wiki

  • The Thermoo Wiki has moved! It has been moved to a new MkDocs-powered wiki available at https://thermoo.thedeathlycow.com/
  • Along with the new wiki site, the wiki has been largely restructured and many pages have received updates.
  • Contributors can also now contribute to the wiki via pull request on GitHub.

Environment API

This is a large new API with a mix of datapack and mod-based components. I would highly recommend reading the Environment API Overview on the new wiki before going out and trying to implement it in your mods.

  • Introduced a new datapack-based Environment API to control environment temperature changes.
  • All methods in the Environment Controller have been replaced with a new, more fit for purpose alternative.
  • The fundamental change here is that the Environment datapack registry now computes a Temperature for a biome in a some widely recognised temperature unit (Celsius, Fahrenheit, Kelvin, or Rankine), as well as a few other parameters, and then those parameters are converted into temperature point changes by an event listener.
  • Added the datapack registry thermoo/environment. Format: https://thermoo.thedeathlycow.com/datapacks/environment_definition/
  • Added the datapack registry thermoo/environment_provider. Format: https://thermoo.thedeathlycow.com/datapacks/environment_provider_definition/
  • Added environment resistance attributes, thermoo:environment_heat_resistance and thermoo:environment_frost_resistance.
  • The environment resistance attributes represent a percentage chance to "dodge" the temperature change calculated from the events in ServerPlayerEnvironmentTickEvents each time they are applied.

The full list of method replacements is as follows:

  • getBaseValueForAttribute() -> ThermooAttributes#baseValueEvent()
  • getLocalTemperatureChange() -> The Environment Datapack Registry
  • getEnvironmentTemperatureForPlayer() -> ServerPlayerEnvironmentTickEvents.GET_TEMPERATURE_CHANGE
  • getTemperatureEffectsChange() -> LivingEntityTemperatureTickEvents.GET_ACTIVE_TEMPERATURE_CHANGE
  • getFloorTemperature() -> LivingEntityTemperatureTickEvents.GET_PASSIVE_TEMPERATURE_CHANGE
  • getMaxWetTicks() -> The entity attribute thermoo:max_soaking_tick_multiplier (on 1.21.1, the name is thermoo:generic.max_soaking_tick_multiplier)
  • getSoakChange() -> LivingEntitySoakingTickEvents.GET_SOAKING_CHANGE
  • getHeatAtLocation() -> LivingEntityTemperatureTickEvents.GET_PASSIVE_TEMPERATURE_CHANGE
  • applyAwareHeat() -> LivingEntityTemperatureTickEvents.ALLOW_ACTIVE_TEMPERATURE_CHANGE
  • getHeatFromBlockState() -> removed
  • isHeatSource() -> removed
  • isColdSource() -> removed
  • isAreaHeated() -> removed

Item Attribute Modifier Event

  • Added an experimental ModifyItemAttributeModifiersCallback.EVENT that is very similar to the previous Fabric API event of the same name.
  • This applies attribute modifiers to an entity when they equip or unequip an item, it does not actually modify the underlying minecraft:attribute_modifiers component of an item stack.

Kotlin Bindings

  • Added new Kotlin-specific method and field extensions to TemperatureAware and Soakable.
  • These methods allow Kotlin users to use these interfaces in an intuitive way and without having to add a thermoo$ prefix to all methods.

External resources


Project members

TheDeathlyCow

Owner


Technical information

License
LGPL-3.0-only
Client side
required
Server side
required
Project ID