# 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](https://thermoo.thedeathlycow.com/api_overview/#environment-api) 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](https://thermoo.thedeathlycow.com/datapacks/environment_definition/)
- `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.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }