﻿2.0.3:
- Fixed the player's body temperature sometimes resetting when exiting the world
- Addressed a minor issue related to configs resetting when changing some settings (please delete the main.toml config file)
- Addressed an issue with capabilities that caused incompatibilities with some mods
- Different kinds of ice now affect temperature accordingly
- Improved Hearth spreading algorithm (takes solid sides of blocks like stairs into account better)
- The Boiler now glows when it has fuel
- Soul Fire and Soul Campfires now cool down the player and no longer damage entities
- Made the Nether slightly hotter by default (this will not override existing configs)
- Fixed Serene Seasons being applied in dimensions where it shouldn't
- Fixed "time of day" affecting temperature in dimensions where time doesn't exist
- Instead of going to 150, the player's temperature will now visually max out at 100
    - After 100, the readout will begin to glow as the critical temperature builds up further
    - Mechanically, it still works the same
- World temperature no longer affects players in creative mode
- Fixed minor bug that would occasionally cause the world temperature to jitter
- Added a Russian translation courtesy of @Xemay on our Discord server


------------------------------------------------------------------------------------------------------------------------
2.0.3.1
- Fixed a bug that caused Cold Sweat to spam errors into the console in some cases
- Rebalanced temperature-emitting blocks to have a limited effect


------------------------------------------------------------------------------------------------------------------------
2.1 Beta 1
- New Item: Soulfire Lamp
    - Cools the player down when in the Nether
    - Requires Warped or Crimson stems as fuel (temporarily; will be changed to a custom item in the future)
- The Hearth now only consumes the necessary fuel to function
    - If it is hot, for example, it will only use cold fuel
    - The Hearth will not use any fuel if there are no players in the area
    - If the temperature in the area is habitable, the Hearth will not use any fuel
- Limited the number of total blocks the Hearth can affect to 2000
    - This replaces the 20-block radius that it used to have
    - increased the technical radius to 64 blocks
    - (note that it can't actually fill the entire 64-block radius, but it can reach these distances if you make a tunnel for the hearth to spread through)
- Leather armor now insulates based on what piece of armor it is (configurable)
    - i.e. a leather chestplate insulates more than a leather helmet
- Updated the Hearth's texture slightly
- Added Polish translation by @Lifus_Crustus on our Discord server
- Added Portuguese translation by @Joymachs and @Vellar on our Discord server
- Fixed multiple bugs with the Hearth that would cause it to not detect ceilings or solid blocks properly
- Fixed the /temperature command sending an incorrect message when setting another player's temperature

- Technical Changes:
    - BlockTemps and TempModifiers are now stored in a map instead of a list
        - Massive performance uplift
        - Easier to store/lookup elements by their ID/block
    - Updates to TempModifiers
        - Moved to the capabilities system
        - Much easier to add arguments
    - Added new events for compat mod developers to hook into:
        - TempModifierEvent.Add
            - Called when a TempModifier modifier is added to a player
            - Cancellable
            - Allows for changing arguments, enabling/disabling duplicates, and changing the modifier type
        - TempModifierEvent.Remove
            - Called when a TempModifier is removed from a player
            - Cancellable
            - Allows for changing the number of modifiers removed
        - TempModifierEvent.Init
            - Called when the registry of TempModifiers or BlockTemps is being built
            - Allows for injection of custom TempModifiers and BlockTemps
            - If you call this event manually, use getPool().flush() beforehand to prevent duplicate entries (lag)
    - The Hearth now uses the capability system instead of NBT
            - This should increase performance and prevent issues with the NBT data limit on some servers
    - "fuel_items.toml" config file changes:
        - Renamed to "item_settings.toml" to better indicate that it also includes insulation items
        - Insulation items (for the sewing table) and armor items with innate insulation are now defined separately
    - Added new translation keys:
        - "entity.player.damage.freeze" (The subtitle for when the player takes cold damage) (will be added next update)
        - "item.cold_sweat.soulfire_lamp" (The name of the Soulfire Lamp item)
    - Fixed a bug that would sometimes cause extreme lag when searching for temperature-affecting blocks
    - Removed some defunct recipes that would throw errors in server consoles


------------------------------------------------------------------------------------------------------------------------
2.1 Beta 2
- The Soulfire Lamp no longer requires ingredients from the Nether to craft
    - Now crafted with a Heart of the Sea
    - Its texture has been updated accordingly
- The Soulfire Lamp now uses ~30% less fuel
- Water now cools you down
    - When you get out, it takes a bit of time to warm up
    - In cold biomes, the effect is greater, so be careful!
    - The speed at which you warm up also depends on the world temperature
- Added new sounds for when the player is freezing
- Sleeping through the night now brings your temperature closer to 0
- Using the ingame config menu on a server now changes the server's configs if the player has OP permission level 2 or higher
- Configs on the server now properly take precedence over the player's configs
- Fixed Icebox and Soul Campfire not cooling the area around them
- Fixed an issue that caused the player's temperature to not be saved properly upon leaving the world
- Fixed crash with Waterskins in the player's hotbar
- Fixed bug that prevented some modded worn items from showing on the player's model
- Fixed a bug that prevented the Hearth from spreading through some non-solid blocks
- Performance improvements & bug fixes for when the player is holding a Soulfire Lamp
- New textures for Boiler and Icebox fuel gauges

- Technical Changes:
    - Added new methods for handling TempModifiers:
        - PlayerTemp.hasModifier():
            - Returns true if the player has a modifier of the given type
        - PlayerTemp.forEachModifier():
            - Calls the given function for each modifier of the given type
    - Changed how PlayerTemp.removeModifier() works
        - Instead of removing all modifiers of the given class, it takes a predicate which determines which modifiers to remove
    - Added new method for TempModifierEvent.Add: setModifier()
        - Replaces the modifier that would have been added with the one given
    - Renamed LeatherTempModifier to InsulationTempModifier
    - Added new event for compat mod developers to hook into:
        - TempModifierEvent.Tick
            - Fired when a TempModifier's value is called
            - Has two phases:
                - Pre: Called before getValue() is called
                    - Cancellable (Modifier will be skipped)
                - Post: Called after getValue() is called
    - When creating TempModifiers, override the getValue() method now instead of calculate()
        - Calculate is still used when referencing the modifier's value, but it also posts to TempModifierEvent.Tick
    - Replaced all temperature unit conversion methods with on method: MathHelperCS.convertUnits()
        - arguments: (double) value: a double representing the temperature to convert
                     (Unit) from: the unit to convert from (Unit is a new enum in net.momostudios.util)
                     (Unit) to: the unit to convert to
                     (boolean) absolute: if true, the offset of world temperature is taken into account (for example, adds 32 degrees when converting Minecraft to Fahrenheit)


------------------------------------------------------------------------------------------------------------------------
2.1 Beta 3
- Switched the Soulfire Lamp holding animation to the Mixin system to improve performance/compatibility
- Re-introduced the grace period from pre-2.0 versions
    - The player will be given the grace effect upon respawning or entering the world for the first time
    - "Grace" is a new potion effect that replaces Tolerance (which went unused until now!)
    - The length is configurable (default: 5 minutes)
    - It can also be disabled if you prefer
- New sounds for the Soulfire Lamp when it is lit or extinguished
- Active nether portals now give off heat in the overworld
- The world temperature gauge now smoothly transitions to new temperatures
- Massive performance improvements for things that affect temperature (mainly blocks, weather, and biomes)
- Config options now appear greyed-out instead of disappearing if the player is not OP or has cheats disabled
- Removed some blank space in Boiler & Icebox GUIs
- Retextured the Boiler
- Removed the ability to set min/max temperature & rate with commands
- Fixed incorrect math for converting temperatures to/from Celsius
- Fixed Ice Resistance Potion recipe not showing in JEI

Technical Changes:
- Added new translation key for the Grace effect: "effect.grace" (subtitle)
- Added new translation keys for Soulfire Lamp sounds: "item.soulfire_lamp.on" & "item.soulfire_lamp.off"


------------------------------------------------------------------------------------------------------------------------
Release 2.1:
- MASSIVE performance improvements (especially for the Hearth)!
- New Item: Soulfire Lamp
    - Cools you down when in the Nether (and nearby players, too!)
    - Requires Warped or Crimson stems as fuel (will be changed to a custom item in the future)
- Re-introduced the grace period from pre-2.0 versions
    - The grace period prevents temperature-related damage for a while
    - Everyone is given the grace effect upon respawning or entering the world for the first time
    - "Grace" is a new potion effect that replaces Tolerance (which went unused until now!)
    - The length is configurable (default: 5 minutes)
    - It can also be disabled if you prefer
- Water now cools you down
    - When you get out, it takes a bit of time to dry off/warm up
    - The effect is greater in cold biomes, so be careful!
    - Dry off faster by standing somewhere hot
- Changes to how weather affects players:
    - Snow no longer does anything (It doesn't really make sense)
    - Rain makes you wet, similar to how water does
- Hearth updates:
    - The Hearth now only consumes the necessary fuel to function
        - If it is hot, for example, it will only use cold fuel
        - The Hearth will only give insulation to players who need it (won't consume fuel otherwise)
        - It now must have over 3/4 of an item's fuel value missing to consume fuel
    - Now plays a sound when it runs out of the needed fuel type
    - The Hearth's code is now up to 800x more efficient (~20,000-40,000ms -> ~50-200ms of lag over 60 seconds)
- Made the Overworld slightly warmer by default (requires config reset)
- Sleeping through the night now brings your temperature closer to 0 (divides it by 4)
- Ice Resistance potions are now brewed with Prismarine Cystals
- Added new sounds for freezing damage
- Active nether portals now give off heat in the Overworld
- The world temperature gauge now smoothly transitions to new temperatures
- The /temperature command can no longer be used to set config settings
- Limited the number of total blocks the Hearth can affect to 4000
    - This is to prevent lag from tons of hearths
- Leather armor now insulates based on what piece of armor it is (configurable)
    - i.e. a leather chestplate insulates more than a leather helmet
- Using the ingame config menu on a server now changes the server's configs if the player has OP permission level 2 or higher
- Configs on the server now properly take precedence over the player's configs
- Updated the Hearth's texture slightly
- Retextured the Boiler
- New textures for Boiler and Icebox fuel gauges
- Compacted Boiler & Icebox GUIs

- Added Polish translation thanks to @Lifus_Crustus on our Discord server
- Added Portuguese translation thanks to @Joymachs and @Vellar on our Discord server
- Updated Russian translation thanks to @Xemay on our Discord server

Fixes:
- Fixed a crash with Waterskins in the player's hotbar
- Fixed incorrect math for converting temperatures to/from Celsius
- Fixed Icebox and Boiler not working properly with Hoppers
- Fixed Ice Resistance Potion recipe not showing in JEI
- Fixed an issue that caused the player's temperature to sometimes not be saved properly upon leaving the world
- Fixed a few bugs that made the Hearth have strange spreading behavior
- Fixed Icebox and Soul Campfire not cooling the area around them
- Fixed the /temperature command sending an incorrect message when setting another player's temperature
- Fixed Hearth spawning too many particles in small spaces
- Fixed temperature configs not working properly on servers

Technical Changes:
- BlockTemps and TempModifiers are now stored in a map instead of a list
    - Massive performance uplift
    - Easier to store/lookup elements by their ID/block
- Updates to TempModifiers
    - Moved to the capabilities system
    - Much easier to add arguments
    - Added new methods for handling:
        - PlayerTemp.hasModifier():
            - Returns true if the player has a modifier of the given type
        - PlayerTemp.forEachModifier():
            - Calls the given function for each modifier of the given type
    - Changed how PlayerTemp.removeModifier() works:
        - Instead of removing all modifiers of the given class, it takes a predicate which determines which modifiers to remove
- Added new events for compat mod developers to hook into:
    - TempModifierEvent.Add
        - Called when a TempModifier modifier is added to a player
        - Cancellable
        - Allows for changing arguments, enabling/disabling duplicates, and changing the modifier type
    - TempModifierEvent.Remove
        - Called when a TempModifier is removed from a player
        - Cancellable
        - Allows for changing the number of modifiers removed
    - TempModifierEvent.Init
        - Called when the registry of TempModifiers or BlockTemps is being built
        - Allows for injection of custom TempModifiers and BlockTemps
        - If you call this event manually, use getPool().flush() beforehand to prevent duplicate entries (lag)
    - TempModifierEvent.Tick
        - Fired when a TempModifier's value is called
        - Has two phases:
            - Pre: Called before getValue() is called (cancellable)
            - Post: Called after getValue() is called
- Replaced all temperature unit conversion methods with one method: MathHelperCS.convertUnits()
- The Hearth now uses the capability system instead of NBT
        - This should increase performance and prevent issues with the NBT data limit on some servers
- "fuel_items.toml" config file changes:
    - Renamed to "item_settings.toml" to better indicate that it also includes insulation items
    - Insulation items (for the sewing table) and armor items with innate insulation are now defined separately
- Added new translation keys:
    - "entity.player.damage.freeze" (The subtitle for when the player takes cold damage) (will be added next update)
    - "item.cold_sweat.soulfire_lamp" (The name of the Soulfire Lamp item)
- Fixed a bug that would sometimes cause extreme lag when searching for temperature-affecting blocks
- Removed some defunct recipes that would throw errors in server consoles


------------------------------------------------------------------------------------------------------------------------
2.1.1
- Changed the recipe of the Soulfire Lamp to require a golden nugget at the top
- Revised the icons for all three potion effects (some more than others)
- The Icebox now has much clearer visual indication for when it has fuel (new particles / texture)
- The end is now slightly warmer (it's still uninhabitable, but you can stay there a lot longer now)
- Custom particles now respect the player's particle settings ("minimal" setting disables all custom particles)
- You no longer have to sneak to equip a minecart with insulation

- Added Chinese translation courtesy of 6371peter on GitHub

Fixes:
- Fixed shift-clicking items in a GUI not working or crashing in some cases
- Fixed the Soulfire Lamp & Waterskins "bobbing" randomly when held
- Fixed HUD-related crash that occurred in some rare scenarios
- Fixed beds restoring the player's temperature without actually sleeping in it

Technical Changes:
- The Hearth no longer gives Insulation to players in habitable areas
- The Hearth now uses block bounding box shape for spread detection (much more reliable)
- Rebalanced block temperatures to have differing areas of effect


------------------------------------------------------------------------------------------------------------------------
2.1.2
- The Soulfire Lamp is now the Hellspring Lamp
      - Nothing serious has changed, but this rework brings it into closer parity with its crafting recipe
      - The ID has changed, but don't worry! Old worlds should update to the new ID automatically
      - Translation keys have changed, meaning its name will default to "Hellspring Lamp" in all languages
- Lowered the rate at which the Hearth consumes fuel
- Added compatibility for Better Weather
- The world temperature gauge now smooths out transitions on a per-frame basis instead of per-tick
      - This basically just makes it smoother for higher framerates

Fixes:
- Fixed major underlying bug with armor insulation that made it not work properly
- Fixed crash that occurs when the Hearth is near an unloaded chunk


------------------------------------------------------------------------------------------------------------------------
2.1.3
- The effects of temperature-emitting are now blocked if there are solid blocks in the way
- Added config option to insulate all non-living rideable entities (so you would be insulated inside a modded plane, for example)
- Rebalanced a lot of Overworld biome temperatures (requires deleting world-temperatures.toml)
- Translation improvements:
      - Some elements of the config GUI will now move around/stretch to accommodate longer words
      - Removed a lot of repetitive translation keys & cleaned them up, making translating much easier (we've updated all existing languages)
      - Fixed some outdated translation keys (Russian, Polish)
      - Fixed some things in the config GUI not updating after changing the language (like ON/OFF labels)
- Added the ability to right-click fuel items into the Boiler, Icebox, and Hearth right from your hand
- Going into caves will now have a much more smooth/noticeable effect on temperature thanks to a much smarter (and more efficient) algorithm
      - The amount of temperature-dampening depends on how far you are from an opening to the surface (natural light) and your y level (deeper is better)
      - As a result of this new system, shade (kind of) helps against extreme temperatures
- It is now possible to add temperature-affecting blocks via configs

Fixes:
- Fixed insulated minecarts dropping Minecart Insulation upon loading the world, allowing for duplication

Technical Changes:
- TempModifiers can now be queued to expire automatically by calling TempModifier#expire(int ticks) when adding it to the player
- TempModifier#getArgument() can now accept a Class argument to cast the return value to
- Merged PlayerTemp class into PlayerHelper class (old methods are now deprecated and will be removed in a future version)
- WorldInfo has been changed to WorldHelper
- Added new method to WorldHelper: schedule(Runnable runnable, int delayTicks)
      - Queues the given Runnable to be executed on the main thread after the given delay
- Blocks broken underground will now place cave air instead of normal are upon breaking (used for the new cave calculations)
- Made minecarts drop the block they carrying when destroyed


------------------------------------------------------------------------------------------------------------------------
2.1.4
- Food items can now be configured to affect the player's body temperature when eaten
- The "steve head" icon above the hotbar now displays the world temperature instead of the player's body temperature
- Config files that use numbers no longer require quotes around them

Fixes:
- Fixed crash with the Hearth caused by "ConcurrentModificationException"
- Fixed issue that made the player's temperature return to 0 very slowly in some cases

Technical Changes:
- TempModifiers are now registered with an instance instead of class reference


------------------------------------------------------------------------------------------------------------------------
2.1.5
-Fixed an issue that caused the two newest players on a multiplayer server to have their world temperatures "linked"


------------------------------------------------------------------------------------------------------------------------
2.1.6
- The dimensions in which the Hellspring Lamp works are now configurable
- The Hearth now has a less powerful effect on the world temperature (configurable)

Fixes:
- Fixed hotbar temperature icon not working properly in Celsius mode
- Fixed crash caused by conflicts with modded capabilities
- Fixed TempModifiers not syncing to client
- Fixed the top half of the Hearth being named "block.cold_sweat.hearth_top"


------------------------------------------------------------------------------------------------------------------------
2.1.7
- Fixed the Hellspring Lamp not working due to improper configs
- Fixed buggy shift-click behavior in the Sewing Table
- Fixed Water not affecting the world temperature properly in some cases
- Fixed occasional crash when syncing the player's temperature from the server to the client in singleplayer
- Added some more detailed explanations to some config files


------------------------------------------------------------------------------------------------------------------------
2.1.8
- Fixed mods with optional support (Serene Seasons, Better Weather) causing crashes when used with Cold Sweat
- Fixed players taking temperature-related damage in spectator mode

Technical Changes:
- PlayerTemp and all its methods have been removed (deprecated since 2.1.3). Use PlayerHelper instead.


------------------------------------------------------------------------------------------------------------------------
2.1.9-b01
- Updated to 1.18.1
- Updated the Hearth's model, texture, item, etc. to look more "primitive" and less like a modern machine
- Tweaked Waterskins to show more realistic temperatures when filled
- Inserting fuel into the Hellspring Lamp is now handled by mixins to prevent client having power over the server
    - The client was possibly able to "spawn in" a fake fuel item, then insert it into the lantern, and the server would accept it

Fixes:
- Waterskins now properly sample the biome's temperature when being filled (this has been broken since at least 2.1)
- Fixed Minecart Insulation being consumed when right-clicking a minecart with insulation already applied

Technical Changes:
- The Hearth no longer uses the capability system (shouldn't impact anything in-game)
- Many of the utility classes have been re-worked or removed. This will require compat mods to be updated.



------------------------------------------------------------------------------------------------------------------------
2.1.9-b02
- Fixed crash caused by Serene Seasons


------------------------------------------------------------------------------------------------------------------------
2.1.9-b03
- Fixed various crashes that would occur during server startup
- Fixed a rare crash that would occur when a block was removed in the world
- Fixed bug that caused the Sewing GUI to pull its title from the wrong translation key


------------------------------------------------------------------------------------------------------------------------
2.1.9-b04
- Lag from various sources has been significantly reduced (up to 75% overall decrease in lag per player in the world)
- Changed how Cold Sweat rearranges the hotbar to make it more compatible with mods that also change the hotbar
- Updated Hearth and empty Waterskin item textures to be more distinctive
- Increased the effective range of the Hellspring Lamp by 1.5 blocks (hopefully it's easier to share now!)

Fixes:
- Fixed the config menu not opening for some players in multiplayer
- Fixed some text boxes in the config menu not being able to be edited
- Fixed "Arrow of Ice Resistance" not having a translation key
- Fixed biomes that don't exist anymore appearing in world-temperatures.toml
- Fixed potential bug that could cause problems with multiple Hearths in the world
- Fixed buggy behavior when walking through soul fire
- Fixed references to "soulfire_lamp" in some files/filenames
- Fixed some TempModifiers triggering every tick when they shouldn't on the clientside
- Fixed TempModifiers ticking on the clientside when the game is paused

Technical Changes:
- All Temperature-related classes have been moved to a new "api" package (including TempModifiers, BlockTemps, etc.)
- Custom events have been moved to the "api" package as well
- Two new Temperature types have been added:
    - HOTTEST: Controls the maximum bearable temperature for the entity
    - COLDEST: Controls the minimum bearable temperature for the entity
    - These are an offset applied to their respective values in the config
    - Can be affected by TempModifiers, manipulated using PlayerHelper, etc.
- BlockTemps can now define which blocks they are attached to in the class's constructor instead of using hasBlock()
    - Please use this when possible, as it is dramatically faster


------------------------------------------------------------------------------------------------------------------------
2.1.9-b05
- The body temperature indicator now smoothly blends between stages (because it looks cool)
- Soul fire now gives you the powder snow freezing effect when you stand in it, making it deadly again

Fixes:
- Fixed a bug that prevented body temperature from working properly
- Fixed Soulfire not cooling down the surrounding area
- Fixed the item name hotbar overlay interfering with other UI elements
- Fixed some elements in the config menu not moving to accommodate longer strings of text

Technical Changes:
- Renamed PlayerHelper to TempHelper
      - All non-temperature-related methods have been moved from TempHelper to a new PlayerHelper class
- Events and methods for registering TempModifiers and BlockTemps have been moved/renamed to make it more intuitive
- TempModifier arguments can now be cast in a cleaner way with type arguments
      - ex: this.<Double>getArgument("my_argument") casts the returned argument to a double (CANNOT cast to primitives)
      - Because of this, the old getArgument(String id, Class clazz) method has been removed
      - This should also clear up a lot of issues with using primitives vs. classes (i.e. int vs. Integer)
- When registering TempModifiers/BlockTemps, the event is automatically wrapped in a try/catch block that alerts the user that registration has failed


------------------------------------------------------------------------------------------------------------------------
2.1.10-b01
- Backported as much content as possible from 1.18.x to 1.16.5
- Players can no longer sleep when their body temperature or the world's temperature is deadly
- Added hover tooltips for options in the configuration menu
- More extreme Hearth optimizations (it's about 10x faster than before, and over 1000x faster than CS 2.0)
- Added config option to move the world temperature UI element
- Ice Resistance now prevents damage from powder snow

Translation:
- Updated Korean translation (thanks to PixelVoxel)
- Updated Russian translation (thanks to Xemay)
- The new config tooltips have new corresponding translation keys
- Messages that show when the player is prevented from sleeping have their own translation keys

Fixes:
- Fixed custom particles rendering incorrectly (1.18.x)
- Fixed issue that caused players' world temperatures to be "linked" in multiplayer
- Fixed crash that would occur when loading/unloading chunks (1.16.5)
- Fixed special minecarts duplicating their contents (i.e. hopper minecarts duplicating hoppers)

Technical Changes:
- Backend parity between versions (especially for API-related things)
- Moved some BlockTemps to the config (ice, fire, magma blocks, and some others)
- Renamed HOTTEST and COLDEST temperature types to simply "MAX" and "MIN"
- Moved MixinWorld (1.16.5)/MixinLevel (1.18.x) to Forge event system (might help with problems importing Cold Sweat into a workspace)


------------------------------------------------------------------------------------------------------------------------
2.1.10-b02
- The player's hand is now rendered in 1st person when holding the Hellspring Lamp
- The Hellspring Lamp now works a bit differently:
      - Instead of decreasing the world's temperature, it now increases the maximum habitable temperature to  ~135 by default
      - No longer consumes more fuel in hotter areas

Fixes:
- Fixed crash when launching server
- Fixed abnormal lag caused by temperature-emitting blocks
- Fixed some items in the config menu smearing when changing window size
- Fixed Hellspring Lamp increasing world temperature
- Fixed Hearth/Boiler/Icebox not saving items when being unloaded or when the world is closed
- Fixed potential lag caused by block updates
- Fixed Hearth not recalculating radius when blocks are changed nearby (1.16.5)


------------------------------------------------------------------------------------------------------------------------
2.1.10-b03
- The Hearth/Boiler/Icebox now take all available fuel at once instead of one item per tick
      - This should decrease packet congestion, increase performance, and reduce client-server desyncs
- Optimized how UI elements are rendered to reduce lag

Fixes:
- Fixed Hearth GUI having broken name (1.18.x)
- Fixed players not being able to return from the End
- Fixed Cold Sweat messing with UI elements from other mods
- Fixed TempModifiers sometimes being stored in NBT incorrectly
- Fixed used Waterskins not stacking correctly
- Fixed beds not exploding when used in the Nether

Technical Changes:
- Inserting fuel into the Hellspring Lamp is now handled by mixins to prevent client having power over the server (1.16.5)
    - The client was possibly able to spawn in a fake fuel item, then insert it into the lamp and the server would accept it
- Improved client-server temperature syncing
      - Temperature is now only synced when there is an update, instead of every other tick
      - Player body temperature is now synced less often, and it is smoothed out on the clientside to account for this
      - Temperature can no longer be manually synced using setTemperature() or addTemperature() because of this system


------------------------------------------------------------------------------------------------------------------------
2.1.10-b04
- Added config option to revert Soul Fire back to dealing burning damage
- Notable backend optimizations by not sending as many packets around. This should help servers a lot!

Fixes:
- Fixed the Hearth/Boiler/Icebox causing items to disappear clientside (1.18.x)
- Fixed the Icebox taking too much fuel (1.18.x)
- Fixed the Hearth duplicating fuel items (1.18.x)
- Fixed the Hellspring Lamp not accepting fuel on servers
- Fixed entity mount insulation config not working properly
- Fixed custom sounds sometimes playing out-of-sync
- Fixed crash when languages that use "," instead of "." as decimal places were active in-game
- Fixed crash related to block updates in partially-loaded chunks
- Fixed crash when Waterskins were placed in the hotbar
- Fixed rare crash when a block was destroyed underground (1.18.x)
- Fixed rare crash due to improper registration when blocks from CS are placed (1.18.x)

Technical Changes:
- Optimized how TempModifiers are applied/removed
- Optimized how blocks emit temperature
- Optimized how the Icebox/Boiler consume fuel


------------------------------------------------------------------------------------------------------------------------
2.1.10-b05a
- Powder snow now decreases the player's body temperature by up to -20 when inside (1.18)
- The Hellspring Lamp item is now fire-resistant
- Improved styling of the readout when body temperature is above 100
- The Hearth's air particles are now enabled by default

Fixes:
- Fixed crash that occurred when getting the player's depth
- Fixed duplication glitch with waterskins
- Fixed BlockTemps affecting temperature inconsistently in extreme conditions
- Fixed body/world temperature gauges rendering over chat text
- Fixed Hellspring Lamp sometimes being twice as effective
- Fixed fuel items giving a stack's worth of fuel
- Fixed bug that caused players' world temperatures to be "linked" with each other (again)
- Fixed TempModifier arguments not being loaded from NBT

Technical Changes:
- Seasonal temperatures can now be configured in world-settings.toml
      - Seasons are broken up into 3 "sub-seasons," each with its own temperature
      - This section of the config will be automatically generated when Serene Seasons is detected
- Most config options for blocks/items/biomes now accept tags
      - Marked with a '#' followed by the tag (i.e. #minecraft:logs)
      - Can be used in place of a block/item/biome ID
      - All blocks/items/biomes with the tag will be affected by the config option
- Configuring custom BlockTemps is now more intuitive
      - Merged minEffect/maxEffect into a single "maxEffect" argument
- Most configs can now be updated by reloading the world instead of restarting the game
      - Servers will still have to restart for values to update
- Improved reliability of the /temperature command
      - Works properly in command blocks
      - Works correctly on other players
      - Sends the correct response message
      - Many times more efficient
      - Respects sendCommandFeedback and logAdminCommands gamerules
- Waterskins now preserve NBT data when used
- Merged UI elements that had multiple image files into one image file to preserve space & clean up file structure
      - Affected: Hellspring lamp fuel gauge, World temp. gauge, Body temp. gauge
- UI elements are now rendered through a more efficient method (1.18)
- Improved documentation in some config files; especially for BlockTemps
- Improved the layout of some config files
      - Config files will be automatically reformatted. Some data may be lost
- Optimized how the Insulated effect works
- Optimized how TempModifiers are applied/removed
- Optimized how blocks affect temperature
- Optimized how biomes affect temperature
- Reduced the size of config-related packets, which should help with network congestion on larger servers
- The algorithm for getting the player's depth no longer relies on cave_air blocks (1.18)

Translation Changes:
- Added Spanish (España) translation (@Criber_761 on Discord)
- Fixed some spelling mistakes in Russian (@git-dopi on GitHub)
- commands.cold_sweat.temperature.set.self.result (removed)
- commands.cold_sweat.temperature.set.other.result -> commands.cold_sweat.temperature.set.single.result
- commands.cold_sweat.temperature.set.all.result -> commands.cold_sweat.temperature.set.many.result
- Command messages are now better suited for languages with different sentence structures
- Removed unused translation keys in some languages
- Split sleep prevention messages into 4 separate translation keys (world/body, hot/cold)


------------------------------------------------------------------------------------------------------------------------
2.1.10-b05b
- Fuel can now be extracted from the Hearth with an empty bucket
- Gave the Boiler a slight redesign and an animated texture when lit
- Added ambient sounds to the boiler when lit
- The temperature of Lava is now capped at 300 degrees for balancing & performance reasons

Fixes:
- Fixed crash when toggling particles in the Hearth's GUI
- Fixed crash when a world is loaded without a Cold Sweat-compatible mod that was previously there
- Fixed the Hearth consuming cold fuel unnecessarily
- Fixed temperature being slow to react in some cases
- Fixed body temperature not working properly in some cases

Technical Changes:
- Removed some unnecessary mixins
- Reworked TempModifiers to be more consistent and not dependent on other TempModifiers
      - This is achieved by returning a function (Function<Temperature, Temperature>) instead of a value (Temperature)
      - Returning a function makes its result independent of any other TempModifier's result
- Greatly optimized the performance of temperature-affecting blocks


------------------------------------------------------------------------------------------------------------------------
2.1.10-b05c
- The Hellspring Lamp's functionality has been reverted to the old system
    - That is, it directly changes the world's temperature instead of raising the maximum habitable temperature

Fixes:
- Fixed body temperature still not working properly in some cases
- Fixed the Hearth not updating when an insulated area is blocked off
- Fixed the Hearth's Insulation effect occasionally dropping out
- Fixed potential duplication bug with some fuel items in the Hearth

Technical Changes:
- In small areas, the Hearth will slow its spreading algorithm down to 1/20th of the normal rate
      - Improves performance if the Hearth is in an area smaller than 6000 blocks
- More minor Hearth optimizations
- Fixed TempModifiers not ticking or expiring properly
- Changed the order in which vanilla TempModifiers are applied to prevent unwanted behavior (like seasons affecting underground players)
- Renamed all instances of "BlockEffect" to "BlockTemp" for clarity
- Renamed & simplified some methods in TempModifier for clarity
- TempModifiers now store the last value they received and the last value they returned
      - These can be used to get the temperature of a player before a certain modifier was applied (or after)
- New method in TempHelper: getModifier()
      - Returns the first occurrence of a TempModifier with the given class
      - Overload method uses a predicate instead of a class
- Fixed potentially erroneous behavior in TempHelper.addModifier() (specifically with the "replace" flag)
- Reduced the amount of packets being sent for various clientside updates
- Temperature#with() now takes into account modifier tickRates


------------------------------------------------------------------------------------------------------------------------
2.1.10.1

Fixes:
- Fixed memory leak when syncing TempModifiers from server to client
- Fixed Hearth not resetting when a block update happens nearby
- Fixed Hearth letting the Insulated effect expire before giving it to the player again (1.18.x)
- Fixed the Hearth giving the Insulated effect despite having the incorrect fuel type
- Fixed the Hearth not being able to be placed on a replaceable block (snow layer, tall grass, etc.)
- Fixed the "replace" function of addModifier() not working properly (1.18.x)

Technical Changes:
- BlockTemps defined in the config now override vanilla BlockTemps


------------------------------------------------------------------------------------------------------------------------
2.1.10.2
- All biomes from Biomes o' Plenty have been given custom temperatures to work better with Cold Sweat
      - The world-settings.toml config file will need to be deleted for this change to take effect
- Temperatures will now blend between sub-seasons in Serene Seasons on a day-by-day basis
- All Hearths' particle visibility settings are now stored persistently per-player
    - Might not work on servers for now
- Biome humidity now plays a role in how the time of day affects temperature
      - More humid biomes will have less drastic temperature shifts
- Added a small cooldown for Waterskins to prevent spamming

Fixes:
- Fixed the Hellspring Lamp not working (1.18.x)
- Fixed the Hearth not insulating the player from more than 1 block away (1.18.x)
- Fixed Waterskins not working sometimes
- Fixed body temperature ticking up/down in erratic patterns
- Fixed changes in temperature being delayed by ~5 ticks
- Fixed crash when destroying a minecart carrying a block (1.16.5)
- Fixed minecarts dropping duplicate items when destroyed
- Fixed rare crash when rendering UI elements (1.18.x)
- Fixed the Hearth spreading to un-roofed areas in some cases
- Fixed armor insulation not being as effective as intended
- Fixed biome temperature calculations being incorrect

Technical Changes:
- The Hearth is now up to ~2,000% more computationally efficient than in 2.1.10.1
    - ~2,000,000% more efficient than in 1.3.5 or 2.0
    - It now takes 4 ms of compute time per minute vs >40,000 ms in older versions
- schedule() is now handled by a custom task scheduler instead of Forge's event system
    - It has also been broken up into client-side and server-side methods
    - Otherwise, it is functionally the same


------------------------------------------------------------------------------------------------------------------------
2.1.10.3
- Players' Hearth particle preferences are now saved on servers
- Refined the temperatures of some biomes (mostly from Biomes o' Plenty)

Fixes:
- Fixed some crashes related to empty/nonexistent chunks
- Fixed the Hearth crashing the server in rare cases
- Fixed the Hearth incorrectly detecting skylight access in some cases
- Fixed Waterskins reaching too extreme of temperatures when being filled in intense climates
- Fixed players' Hearth particle settings not working on servers

Technical Changes:
- The Hearth will now only reset from a block update if the Hearth's radius is occupying that position
- Refined the algorithm that determines the intensity of time-related temperature changes
      - A config option has been added to override this in cases where it is inaccurate ("Biome Variance" in world-settings.toml)


------------------------------------------------------------------------------------------------------------------------
2.1.11
- The Grace effect now shows as an icon on the top-right when it is active
- The Insulated effect is now removed when the player is in an un-roofed area
- Renamed Hellspring Lamp to Soulspring Lamp (the ID has changed, too, but old worlds will be automatically converted)
- The Hearth now displays 3D boxes around the area it is affecting when the F3 debug screen is open
      - This might severely impact performance, so a config option has been added to disable it
- Client-only config settings are now labeled with an icon in the config menu

Fixes:
- Fixed crash when starting a server
- Fixed crash that could occur when a minecart was broken
- Fixed GUIs not being centered in the screen
- Fixed error when attempting to join a server due to missing class definition
- Fixed sub-seasonal temperatures not blending into each other correctly
- Fixed configs loading multiple times when starting a world
- Fixed the Hearth spreading to places it shouldn't (or not spreading to places it should)
- Fixed tooltips not showing in the config menu when hovering over some widgets

Technical Changes:
- Removed TimeTempModifier (merged with BiomeTempModifier)
- Config settings for biome temperature now specify the midnight and noon temperatures a biome (in other words, the "low" and "high" temperatures)
      - Old configs will be treated as "legacy", and will still work to some extent; though it's highly advised to switch to the new system
      - Removed the "Biome Variance" config option, as it is no longer needed
- Centralized/streamlined how config settings are internally handled
- Created custom block update event to more accurately detect block updates
- Optimized the Hearth's spreading algorithm by reducing extraneous checks & using the new update event


------------------------------------------------------------------------------------------------------------------------
2.1.11.1

- Fixed crash due to client-only class loading on servers
- Fixed freeze that could occur when a block update happened while the world was loading
- Fixed the Hearth not detecting players
- Fixed the Hearth not saving "warm-up" time when the world is closed (1.16.5)
- Fixed the Insulation effect being removed when the player has skylight access


------------------------------------------------------------------------------------------------------------------------
2.2-b01a
- Revamped the armor insulation system:
      - Each piece of armor has a number of slots that can be filled with insulation
      - A graphic of the armor's insulation will display in the item's tooltip
      - There are now multiple types of insulation items:
            - Leather: Provides an equal amount of hot and cold insulation
            - Goat Fur: Provides strong cold insulation
            - Hoglin Hide: Provides strong hot insulation
      - Leather armor can still be sewed to armor, filling all of its insulation slots
      - Insulation items can be combined in different ways for more specific use-cases
      - Because there are now two types of insulation, some configs have been changed to match
        (not deleting the old ones may cause a crash)
      - The number of insulation slots in helmets, chestplates, leggings, and boots is now configurable
- Goats can now be sheared to get Goat Fur
      - Their fur will grow back after some time (15% chance to grow back every 45 seconds)
      - Their texture has been tweaked to better incorporate this
- Hoglins now drop Hoglin Hide when killed, in addition to their other drops
- The Soulspring Lamp can now be fuelled by attacking an entity at full health with it
      - This restores up to 4 fuel
      - Does not work on entities below full health
- When 'Shift' is held, the Soulspring Lamp's tooltip will now show a graphic of what items it can be fuelled with

Fixes:
- Fixed the Sewing Table deleting items if the player disconnects without closing the menu
- Fixed furnaces not affecting temperature


------------------------------------------------------------------------------------------------------------------------
2.2-b01b
- Insulation items can now be removed with Shears in the Sewing Table
- Enchanted insulation items will now (irreversibly) transfer compatible enchantments to the armor when being sewn
- The world temperature gauge is now much more responsive
- Updated the Goat texture to look better when sheared
- Changed Goats' fur growth:
      - There is now a 2-minute minimum cooldown (configurable)
      - After this time, it tries to grow it back every 1 minute (configurable)
      - There is a 20% chance for this to succeed (configurable)

Fixes:
- Fixed player temperature sometimes not changing if it is at 0
- Fixed crash related to Goats that might occur when joining the world
- Fixed some configs being reset when any changes are made

Technical Changes:
- "Temperature" is no longer an object type
      - All instances of Temperature have been replaced by double values
      - Replaced "with()" with the static method "Temperature.apply()"
      - Because all methods in Temperature are now static, the class has been merged with TempHelper (new class is named Temperature)
- Renamed methods in TempHelper (Temperature):
      - "getTemperature()" -> "get()"
      - "setTemperature()" -> "set()"
      - "addTemperature()" -> "add()"
- The insulation system now uses capabilities instead of NBT


------------------------------------------------------------------------------------------------------------------------
2.2-b01c
- Armor insulation configs now have better support for items with total insulation values smaller than 2
      - Negative values work against positive values, speeding up the rate at which the player's temperature changes
      - Added icons for partial insulation values to the armor insulation tooltip
- Shears are no longer damaged when removing insulation from armor in creative mode
- Waterskins now extinguish the player when used
- Waterskins now have custom dispense behavior
      - The dispenser pours the waterskin's contents onto players below
      - The water's effect weakens over distance (does nothing after ~20 blocks)
- Added a config option to disable the mod preventing sleep if the player is too hot/cold

Fixes:
- Fixed player temperature never naturally returning to 0
- Fixed goats trying to ram players in creative mode

Technical Changes:
- TempModifiers now have a full CompoundTag attached to each instance
      - This can be used to store any custom data that needs to be saved
      - Replaces the old "arguments" system


------------------------------------------------------------------------------------------------------------------------
2.2-b02a
- Added various negative effects that are inflicted on the player if they are too hot/cold:
      - Hot (disorients the player):
            - Reduced view distance at temperatures above 50 (less range as temperature increases)
            - Blurred vision as temperature increases above 50
            - Randomly drifting camera as temperature increases above 50
      - Cold (dangerous to the player):
            - Reduced mining/movement speed (slower as temperature decreases)
            - Player attack knockback is reduced (less knockback as temperature decreases)
            - Up to 50% of the player's hearts freeze over (frozen hearts cannot be regenerated)
- Added new mob: Chameleon
      - Spawns in tropical biomes (Like jungles)
      - Change color according to the temperature around them (it can be a useful thermometer replacement!)
      - It might trust you if you throw it a spider eye
            - Chameleons can trust multiple players
            - You can right-click a chameleon that trusts you to carry it on your head
            - Eventually, chameleons will do other things when fed different items
      - Occasionally, a chameleon will shed its skin, dropping the new Chameleon Molt item
            - Chameleon molt will have important uses in future updates, so don't throw it away!
- Items that can be used as insulation now have a tooltip displaying their effects
- Insulation tooltips are now more clear about positive/negative insulation values
- the Thermometer can now be equipped as a charm if Curios is installed
- Slightly tweaked how removing insulation works to make removing multiple items more streamlined
- Added "minecart with insulation" item
      - Crafted with a minecart and minecart insulation
- Retextured minecart insulation
- Reorganized the Cold Sweat creative tab to group items more logically

Fixes:
- Fixed crash related to goats' stored data
- Fixed performance issue caused by extreme amounts of block updates
- Fixed the Soulspring Lamp sometimes not being activated/deactivated properly
- Fixed the Soulspring Lamp starting off empty when crafted
- Fixed blocks not being mineable with the correct tool
- Fixed UI elements sometimes showing when the UI is supposed to be hidden and vice versa
- Fixed goats trying to ram players in peaceful mode
- Fixed food items configured to affect temperature being double-effective
- Fixed insulation tooltips sometimes overlapping other tooltips
- Fixed Soulspring Lamp tooltip not being properly sized when Shift is held and advanced tooltips are disabled
- Items will now always burn in soul fire when the Spirit mod is installed to prevent incompatibility

Technical Changes:
- Revamped the temperature system to allow all living entities to have their own temperatures
      - Although the system has been reworked in the backend, there is very little difference in implementation aside from some method parameters
      - This may pave the way for livestock temperature to make a return in the future


------------------------------------------------------------------------------------------------------------------------
2.2-b03a
* Added new block: Thermolith
      - Outputs a redstone signal based on the temperature of the nearby area (from 0 to 15 from minimum to maximum temperature set in the config)
      - Crafted with 3 chameleon molt and 4 terracotta
* Chameleons can now perform new actions when fed certain items:
      - Magma cream, nether wart, cactus: Chameleon will point towards nearest hot biome (temperature > 1.7) within 2000 blocks 1 minute
      - Snowball, beetroot, sweet berries: Chameleon will point towards the nearest cold biome (temperature < 0.2) within 2000 blocks for 1 minute
      - Slimeball, ink sac, cocoa beans: Chameleon will point towards the nearest humid biome (temperature > 0.8 and downfall > 0.85) within 2000 blocks for 1 minute
      - Spider eye, fermented spider eye, fish: Heals 3 health for the chameleon
* Added new default insulation items:
      - Wool: 1.5 points of cold insulation, making it a half-step between leather (1) and goat fur (2)
      - Slimeball: 1.5 points of hot insulation, making it a half-step between leather (1) and hoglin hide (2)
      ! 'item-settings.toml' will need to be deleted for these changes to take effect
* Added support for Armor Underwear:
      - Simple linings now allow the player to withstand more drastic temperatures
      - Ozzy lining adapts to the player's body temperature and makes either hot or cold environments more habitable accordingly
      - Otto/Ollie linings will protect against freezing/burning damage respectively. Each lined armor piece reduces the damage by 25%, up to 100%
      - Otto/Ollie linings also lessen temperature debuffs
* Added support for Oh the Biomes You'll Go!:
      - Rebalanced several biomes' temperatures to be more accurate in Cold Sweat's temperature system
      - Chameleons can now spawn in BYG biomes
      ! 'world-settings.toml' and 'entity-settings.toml' will need to be deleted for these changes to take effect
* Added new recipe unlocks and advancements when certain criteria are met to help progression
- Added the ability to pipe temperature-controlled air from the hearth using Create's pipes
- Chameleons can now spawn in desert-like biomes
- Chameleon taming items can now be configured
- Reduced the time it takes for the chameleon to complete shedding from 1 minute to 30 seconds
- The chameleon will now drop 1-3 chameleon molt when shedding
- New chameleon sounds for ambient, death, and eat
- Darkened the green chameleon texture so it isn't so washed-out
- Fuel items for the soulspring lamp can now be configured to give different amounts of fuel
- When a block is changed near a hearth, only the parts of the hearth's area-of-effect that stem from that block will be updated
      - For example, if a door is closed, only the area through the door will be updated
- Retextured the top of the sewing table to look less like a crafting table
- The soulspring lamp can now be used more offensively, stealing up to 8 health from a target on attack. This can only be done once per entity

Fixes:
- Fixed crash when hovering over insulation items in certain cases
- Fixed chameleon ambient/hurt sounds not following the entity's position (Vanilla Minecraft bug)
- Fixed chameleon animations sometimes being applied to other chameleons
- Fixed block updates not being detected by the hearth
- Fixed reloading the world causing chameleons' shed cooldowns to be set to an extremely high negative number
- Fixed negative temperature effects being applied when the player has fire/ice resistance or grace
- Fixed heatstroke blur effect not persisting when perspective is changed (F5)
- Fixed HUD elements showing/hiding being delayed when switching gamemodes
- Fixed modded campfires not emitting heat
- Fixed the chameleon becoming desynched if the player it is riding enters water
- Fixed the shield's blocking animation being misaligned
- Fixed the soulspring lamp not gaining fuel when attacking
- Fixed camera sway at extremely hot temperature being almost negligible


Technical Changes:
- Entities are now given the temperature capability on an EntityType basis instead of an individual basis
      - Prevents every entity in the world being unnecessarily scanned for the capability every tick (performance improvement)
- TempModifier#calculate() will now be passed a Temperature.Type representing the type of temperature the modifier is attached to
      - This means TempModifiers are now able to perform different functions depending on how they are applied (world, core, rate, etc.)
- Added new advancement triggers related to Cold Sweat-specific events:
      - "cold_sweat:temperature_changed":
            - Triggered when the player's temperature changes
            - Can discriminate based on the type of temperature being affected
            - Can also be configured to only trigger when the temperature is within a certain range
      - "cold_sweat:block_affects_temperature":
            - Triggered when a nearby block affects the player's temperature
            - Arguments for distance, block type, and the total effect this block type has had on the player
      - "cold_sweat:soul_lamp_fueled":
            - Triggered when the player fuels a soulspring lamp
            - Arguments for the amount of fuel added
      - "cold_sweat:armor_insulated":
            - Triggered when the player equips armor with insulation
            - Arguments for the armor item stack and insulation item stack
            - NOT triggered when insulation is removed with shears
- The /temperature command now works on entities
- Added much more granular control for the order in which TempModifiers are applied:
      - The base Temperature#addModifier() method now takes a Temperature.Addition parameter
      - Temperature.Addition has three parameters:
            - Relation (BEFORE, AFTER, or REPLACE)
            - Order (FIRST, LAST)
            - Predicate<TempModifier>
            - The method will scan through the list of modifiers on the entity (in reverse order if Relation is LAST) and find the first modifier that matches the Predicate
                  - It will insert the new modifier before or after this modifier, or replace it, depending on the Relation
      - A Temperature.Addition is created like so:
            - Temperature.Addition.of(AFTER, LAST, modifier -> modifier instanceof MyTempModifier)
            - This example will place the newly inserter TempModifier after the last instance of MyTempModifier in the entity's list of TempModifiers


------------------------------------------------------------------------------------------------------------------------
2.2-b03b

Fixes:
* Fixed TempModifiers sometimes not being applied properly, causing temperature from certain sources to be ignored
- Fixed TempModifiers not being synced to the client
* Fixed attacking an entity triggering the soul stealing effect regardless of if the soulspring lamp is equipped
* Fixed some config settings not being synced between server and client
* Fixed goats' data not syncing on servers
- Fixed items defined in the "Insulating Armors" config not displaying the insulation tooltip

Technical Changes:
- All configs now use a much more flexible and modular system of instantiation and syncing (you can use it too!)
      - This creates a standard way for all configs to be synced via packets and written to the server's config files if needed
      - Non-synced configs can also be created


------------------------------------------------------------------------------------------------------------------------
2.2-b03c

Fixes:
* Fixed crash when a chameleon does not have a biome it is actively tracking
* Fixed goats not losing their fur after being sheared on a server, allowing for infinite fur
- Fixed chameleons' data sometimes not being synced to clients on a server
- Fixed chameleons eating an entire stack of items when dropped for them, instead of just 1
- Fixed "The Pit of Fire" advancement being too difficult to complete
- When a chameleon eats an item, all items associated with that action will now be put on cooldown


------------------------------------------------------------------------------------------------------------------------
2.2-b03d

* Added support for Environmental:
      - Adjusted the temperature of the marsh biome to be more in line with other swamp-like biomes
      - Yak pants now provide insulation when worn
      - Yak hair blocks can be used as an insulation item (equivalent to goat fur)
            - For balancing purposes, it also has 1 negative heat insulation
      ! 'world-settings.toml' and 'item-settings.toml' will need to be deleted for these changes to take effect
* Added support for Atmospheric:
      - Adjusted the temperatures of several biomes to be more realistic in Cold Sweat's temperature system
      - Chameleons can now spawn in dunes and rainforest biomes from Atmospheric
      ! 'world-settings.toml' and 'entity-settings.toml' will need to be deleted for these changes to take effect
- Adjusted the spawn rates of goats so it is actually possible to happen upon them in the wild
      - Can now spawn in more biomes, including those from from Biomes O' Plenty, BYG, and Atmospheric
      ! 'entity-settings.toml' may need to be deleted for these changes to take effect
- "The Pit of Fire" advancement now requires the player to be in the nether, surrounded by more lava
- A Thermometer placed in an item frame will now display the exact temperature when hovered

Fixes:
* Fixed crash when navigating to page 2 of the config screen
* Fixed crash when a chameleon with no trusted players is loaded
* Fixed issue that prevented temperature-affecting things, like the hearth, from working properly
      - More specifically, TempModifiers added in "REPLACE" mode were not being applied
- Fixed entities/players always spawning with a world temperature of 32 °F or 0 °C
- Fixed the thermometer's texture updating in GUIs where it shouldn't (in the advancement menu, for example
- Fixed the thermometer displaying temperature incorrectly when placed in an item frame or thrown on the ground
- Fixed thermometers stacking to 64

Technical Changes:
- Biome tags are no longer supported in configs due to tags loading very late in the game's runtime
- Added new method getTemperatureAt(BlockPos, Level)
        - As you probably could have guessed, this method returns the world's temperature at the given position (using Cold Sweat's default TempModifiers)
- Added new event: EntityPickEvent
        - Fired when the player uses pick-block (middle-click) on an entity
        - Allows for changing the ItemStack returned


------------------------------------------------------------------------------------------------------------------------
2.2-b03e
- Added support for Terralith biomes
        - Adjusted the temperatures of several biomes to be more fitting in Cold Sweat's temperature system
        ! 'world-settings.toml' will need to be deleted for these changes to take effect

Translation Updates:
- Updated Russian translation (by @Xemay on Discord)

Fixes:
- Fixed occasional crash when a block update happened in the world
- Fixed middle-clicking an entity not working (i.e. not giving the player a spawn egg)


------------------------------------------------------------------------------------------------------------------------
2.2-b04a
* New block: Soul Stalk
      - Grows on soul sand and naturally generates in the Nether
            - Grows like sugar cane, up to 6 blocks tall
            - Grows much faster in hot environments
      - When it grows, the new stalk will have a 50% chance to bear a soul berry
      - The top bulb always drops a soul berry
* New item: Soul Berry
      - Can be eaten to restore 3 hunger points (1.5 bars)
      - Lowers the player's body temperature by 20 degrees when eaten (effect lasts 45 seconds)
      - Can be planted on soul sand to grow a soul stalk
      - Can be used as an effective source of fuel for the soulspring lamp
      ! 'item-settings.toml' will need to be deleted for this change to take effect
* New Armor Set: Hoglin Hide
      - Crafted with hoglin hide in typical armor patterns
      - Each armor piece provides maximum heat insulation
      - Cannot be insulated in the sewing table
      - Can be used as insulation for other items (similar to leather armor)
* New Armor Set: Goat Fur
      - Crafted with goat fur in typical armor patterns
      - Each armor piece provides maximum cold insulation
      - Cannot be insulated in the sewing table
      - Can be used as insulation for other items (similar to leather armor)
* Chameleon molt can now be used as insulation
      - This is a special new "adaptive" insulation item type
            - Slowly adjusts its insulation value from hot to cold according to the player's environment
            - This process is slow, taking about 2 minutes to fully transition from cold to hot
      - Has the same raw insulation power as rabbit hide & wool
- Rabbit Hide is now the mid-tier hot insulation item (instead of slimeballs)
      ! 'item-settings.toml' will need to be deleted for this change to take effect
- Added an advancement that unlocks the boiler & icebox recipes when the player makes a waterskin
- Ice resistance potions are now brewed with a soul sprout instead of prismarine crystals

Fixes:
- Fixed crash when breaking special minecart types (chest, hopper, insulated, etc.)

Translation Updates:
- Added Brazilian Portuguese translation (by @Vellar on Discord)

Technical Changes:
- Block Temperatures can now be given a "predicate", which makes the block emit/not emit temperature based on its state (i.e. a campfire being lit)


------------------------------------------------------------------------------------------------------------------------
2.2-b04b

Fixes:
- Fixed items not dropping on death when killed by temperature in some cases
- Fixed the heatstroke blur effect being applied when the player has immunity
- Fixed inaccurate depth detection leading to unpredictable temperatures when standing near sloped surfaces
- Fixed some visual bugs & inconsistencies when a chameleon is on the player's head
- Fixed camera sway not starting immediately when the player's temperature is above 50
- Fixed skins with an outer leg layer poking out through goat fur boots & hoglin hooves
- Fixed the chameleon eating spider eyes even when at full health and the player is already trusted

Technical Changes:
- Items with both item insulation and equipment insulation (like leather armor) will show both bars if the values are different


------------------------------------------------------------------------------------------------------------------------
2.2-b04c
- Added new sub-command for /temperature: "showmodifiers"
      - Displays all of the temperature modifiers present on an entity, as well as how each one affects the entity's temperature
- Potions can now be placed into the hearth's fuel slot, giving all nearby players the effect until they leave the radius or the potion expires
- Changed the chameleon molt texture
- Added the chameleon spawn egg to Cold Sweat's creative tab
- Soul stalk now generates with a more even distribution throughout the Nether
- Removed warped/crimson stems as default fuel sources for the soulspring lamp
      ! This change will not take effect until "item-settings.toml" is deleted
- The boiler can now be crafted with cobbled, polished, and normal deepslate
- Smoothed out the texture of the sewing table
- The icebox/boiler now only accept items from hoppers on the correct side
      - Waterskins are inserted from the top, fuel is inserted at the side, and waterskins can be extracted from the bottom

Fixes:
- Fixed scheduled events sometimes crashing the game (again)
- Fixed items with an insulation value of less than 2 not displaying or working properly
- Fixed the insulation bar on armor items not stretching properly if the item has more than max insulation
- Fixed adaptive insulation vales always appearing to occupy one slot
- Fixed adaptive insulation values of more than 2 duplicating on armor
- Fixed soul campfires not freezing the player
- Fixed the chameleon's hitbox overlapping the player's head when mounted
- Fixed temperature in areas of the world with 3D biomes behaving erratically
- Fixed yak pants having different insulating properties from yak hair (Environmental)
- Fixed the hearth allowing the Insulated effect to expire while the player is within range
- Fixed armor insulation values above the max value being achievable under Vanilla conditions in some cases
- Fixed the effects of the "Prevent Sleep When in Danger" config option being reversed

Translation Updates:
- Updated Chinese translation (by @wumeng on Discord)
- Updated Brazilian Portuguese translation (by @Vellar on Discord)


------------------------------------------------------------------------------------------------------------------------
2.2-b04d
* Added new original music track: Far Lands
      - Plays randomly along with the Vanilla music in the Overworld
* Added basic support for Weather, Storms & Tornadoes:
      - Snowstorms will now drastically lower the temperature in the affected area
      - Rain from storms is now treated like normal rain (makes the player wet)
- Biome temperature now takes altitude into account more seriously
      - Temperature will drop more substantially as height increases above sea level\
- Optimized how biome & block temperature are calculated
- Made several changes to the config menu:
      - The Cold Sweat config button can now be repositioned on the screen (option in the config menu)
      - Compacted & reworded some config settings to fit better in the menu
      - Hovering over config options to show the tooltip is now more consistent
      - Added config option to disable camera sway to the in-game config menu
- Baby goats can no longer be sheared
- Refined the chameleon walking animation slightly

Fixes:
- Fixed rare crash when completing the "Follow the Leader" advancement
- Fixed rare crash due to general task scheduling issues
- Fixed baby chameleons having improper hitbox size and appearing to be an adult
- Fixed the difficulty slider having a missing texture
- Fixed the config options for grace period causing the difficulty to be set to "custom" when changed
- Fixed seasonal temperature affecting players underground if serene seasons is installed after the player spawns for the first time
- Fixed incorrect biome temperature calculation underground
      - More specifically, Cold Sweat's biome temperature system was never optimized for 1.18's 3D biomes, meaning all biomes were treated as if they were above-ground
      - This would dull the temperatures of cave-like biomes as depth increases, which shouldn't happen for underground biomes
- Fixed planting a soul sprout not granting the "A Seedy Place" advancement
- Fixed players sometimes not dropping items on death when First Aid is installed


------------------------------------------------------------------------------------------------------------------------
2.2-b04e
- Updated Create compatibility to 5.1b
- Increased chameleon spawn rates in jungle biomes due to thick vegetation

Fixes:
- Fixed temperature-related UI elements not rendering
- Fixed crash when opening the sewing table menu
- Fixed goats not being able to spawn
- Fixed the boiler not spawning particles when lit

Technical Changes:
- Added #boiler_valid and #icebox_valid tags
      - These tags now determine what items can be placed into the top slots of the icebox & boiler
- Added tags for items that the chameleon can eat:
      - #chameleon/find_hot_biomes: The chameleon will locate the nearest hot biome
      - #chameleon/find_cold_biomes: The chameleon will locate the nearest cold biome
      - #chameleon/find_humid_biomes: The chameleon will locate the nearest humid biome
      - #chameleon/taming: Item used to tame a chameleon
- Added #soulspring_lamp_valid tag to define dimensions that the soulspring lamp will activate in


------------------------------------------------------------------------------------------------------------------------
2.2-b04f
- Milk can now be used to clear all effects from the hearth

Fixes:
- Fixed servers not being able to load
- Fixed tooltips showing insulation info when the insulation configs contain an item that doesn't exist
- Fixed the hearth not "un-filling" the proper areas when a block is placed in some cases
- Soul stalk now only drops sticks from "middle" blocks
      - Prevents a duplication glitch with placing/breaking a soul stalk
      - Now only drops 0-2 sticks instead of 1-3

Technical Changes:
- Added config options to blacklist or completely disable potions from being used in the hearth
- Mods that have compat but are an unsupported version will now cause the compat to disable itself instead of causing issues
      - For example, now that the minimum version of Create is 5.1, Cold Sweat will disable its Create compat if Create is below 5.1


------------------------------------------------------------------------------------------------------------------------
2.2-b04g

Fixes:
- Fixed chunkloading deadlocks when generating a new world


------------------------------------------------------------------------------------------------------------------------
2.2-b04h
* Added support for biomes from William Wyther's Overhauled Overworld (Pyrael on Discord)
- Doubled the rate at which the hearth drains fuel (a full gauge will now last ~30 real minutes)
- Added a normal-duration (3:00) ice resistance potion
    - The existing (8:00) potion is now the long-duration version (brewed with redstone)
- Goats now drop 0-2 goat fur when killed
- Rebalanced chameleon spawns again to make them more common in lush areas and rarer in sparse/desert-like areas
- The player is now granted the sewing table recipe upon obtaining an insulation item
- The chameleon can now be tempted with any item it can eat

Fixes:
- Fixed crash when pressing "done" in the config menu before a world is loaded
- Fixed the thermolith not having a preferred mining tool
- Fixed the thermolith not dropping anything when mined
- Fixed the hearth not draining fuel properly
- Fixed hearth particles still spawning when "show particles" is disabled
- Fixed the default difficulty appearing to be "Hard" despite the settings being tuned to "Normal"
- Fixed the "Super Easy" difficulty being switched to "Easy" in some cases
- Fixed the "Biome Temperatures" and "Biome Offsets" config options being converted to MC units when world-settings.toml is (re)loaded
- Fixed "air" becoming a valid insulation item if the configs define an insulation value for an item that doesn't exist
- Fixed block temperature not being detected across chunk borders in some cases
- Fixed missing subtitles for chameleon eating sounds
- Fixed some advancements triggering under the wrong conditions
- Fixed the soulspring lamp not draining fuel (1.18)

Technical Changes:
- New "HeatResistance" and "ColdResistance" NBT tags can now be applied to players for easy temperature resistance
      - Slows the rate at which the player's temperature changes, similar to armor insulation
      - Setting either of these values to 100 will make the player completely immune to that temperature
* Existing armor items using the old insulation format (from pre-2.2) will now be automatically updated to the new insulation format
      ! Note: the new insulation format cannot be read by older versions, so if you downgrade Cold Sweat again all item insulation will be lost


------------------------------------------------------------------------------------------------------------------------
2.2-b04i
- Reduced the duration of ice resistance potions to 1:30 and 4:00 due to soul sprouts being easy to farm
- Reduced the chance for soul stalks to bear additional soul sprouts from 50% to 33% per middle section block
- The powder snow overlay now appears when the player is freezing
- Soul sprouts now extinguish the player when eaten
- 1-5 Soul sprouts how have a chance to result from piglin bartering
- Increased the effectiveness of most temperature-emitting blocks; though there is still a cap on how much a given block type can affect the player
- The temperature of lava is now drastically reduced while riding a strider
      - This is to prevent the player overheating extremely quickly while riding a strider on a lava ocean
- Gave all insulation types distinct tooltip icons for easier reading

Fixes:
- Fixed "Max Temperature", "Min Temperature", and "Rate Modifier" options appearing to be editable in the config menu even if the player is non-OP
- Fixed the hearth's fuel gauges not updating when draining fuel
- Fixed missing lang entries for long-duration ice resistance potions
- Fixed bug that caused the game to stall when a chameleon is created at the edge of the loaded world
- Fixed the soulspring lamp not draining fuel (1.19)
- Fixed soul stalk not growing (1.19)
- Fixed the hearth only being able to insulate one player at a time

Technical Changes:
- The "Block Temperatures" config option has been moved to world-settings.toml
      ! This will delete existing configs in main.toml. Back them up first!
- TempModifier registration is now done using suppliers of TempModifiers
      - This makes for a less hacky backend way of instantiating TempModifiers, no longer requiring a default constructor
      - If registration is done using an instance, it will be turned into a supplier of that instance


------------------------------------------------------------------------------------------------------------------------
2.2-b04j
- Added new song: "Modulo"
      - Plays in-game and in the menu
- Hoglin hide can now be obtained through piglin bartering
- Goat fur now has a chance to be sold by the wandering trader
- Updated chameleon sounds to be more true to real chameleons
- A death message will now be displayed if a tamed chameleon dies

Fixes:
- Fixed the hearth thinking it is surrounded by solid blocks in some cases
- Fixed another bug that caused the game to stall when a chameleon is created at the edge of the loaded world
- Fixed blocks sometimes not affecting temperature properly
- Fixed issue that caused players' temperatures to be "shared" on a server in some cases

Technical Changes:
- TempModifier registration using instances is no longer allowed. A supplier must be used


------------------------------------------------------------------------------------------------------------------------
2.2-b04k
- All wearable items can now have insulation, instead of just armor
- Added new config option in item-settings.toml to "blacklist" items from allowing insulation
- Doubled the effectiveness of all armor insulation
- Halved the rate at which the soulspring lamp consumes fuel

Fixes:
- Fixed some block state predicates not working for BlockTemp configurations
- Fixed only one BlockTemp being allowed per block, even if they have different predicates
- Fixed "invalid player data" message when the player joins the world while in water
- Fixed biome-related config options not working for biomes added via datapacks
- Fixed the "Dimension Offsets" config setting not working
- Fixed the hearth sometimes not calculating area-of-effect properly, especially when a block is placed/broken
- Increased the reliability of soul stalk generation

Technical Changes:
- Block updates now reset the hearth's entire AOE (the selective "smart" method of updating the AOE was too unreliable)
      - Sped up hearth "spread" calculations by 5x to account for sections of the AOE being unnecessarily cleared


------------------------------------------------------------------------------------------------------------------------
2.2-b05a
* Added a new "vague" temperature gauge
      - Gives a rough idea of the world's temperature if the player doesn't have a thermometer
      - When the player gets a thermometer, this will be replaced by the normal (exact) temperature gauge
      - If "Require Thermometer" is turned off, the exact gauge will always be shown
- Waterskins can now be heated at campfires and cooled at soul campfires

Fixes:
- Fixed block temperatures not being detected in some cases
- Fixed chameleons attempting to access unloaded chunks when detecting temperature, causing the world to freeze
- Fixed unnecessary overhead from the Task Scheduler
- Fixed entity update packets being sent to all tracking players instead of just the player who needs the data
- Fixed temperature configs for drinkable food items not working
- Fixed armor with no insulation sometimes being shear-able if the server is lagging, causing the game to crash when attempted
- Fixed insulation only being applied to the player from the first piece of armor equipped

Technical Changes:
- Configs are now reloaded when the server finishes starting, to ensure that all needed sources are loaded (such as datapacks)
- Adjusted the formula for armor insulation to make increasing insulation have a more linear effect
      - "Diminishing returns" have been drastically smoothed out
- The rate increase caused by negative insulation is now uncapped, and increases linearly


------------------------------------------------------------------------------------------------------------------------
2.2-b05b
- Hoglin hide can now be sold by the wandering trader

Fixes:
- Fixed crash caused by a mixin for campfires

Technical Changes:
- Optimized the algorithm for block temperature, especially in extreme cases with lots of blocks affecting the player


------------------------------------------------------------------------------------------------------------------------
2.2-b05c
- Added a config option to change the amount that temperature equalizes underground
- Added a tooltip to the waterskin when filled, which describes the functionality of holding it in the hotbar
- Insulation can now be chosen as a secondary power at a tier-4 beacon

Fixes:
- Fixed chameleons not dropping chameleon molt
- Fixed the soul campfire freezing the player on contact when unlit
- Fixed config settings with lists of elements not being allowed to be empty

Technical Changes:
- The body temperature's tendency to "equalize" will no longer fight against modifiers applied to it (such as waterskins)


------------------------------------------------------------------------------------------------------------------------
2.2 (So far)
! Existing armor items using the old insulation format (from pre-2.2) will be automatically updated to the new insulation format. However:
      ! The new insulation format cannot be read by older versions, so if you downgrade Cold Sweat again all item insulation will be lost
      ! Even though this update should be fine to simply drop into an existing world, it is still recommended to back up your world first

Revamped Armor Insulation System:
      - Each piece of armor has a number of slots that can be filled with insulation
      - A graphic of the armor's insulation will display in the item's tooltip
      - There are now multiple types of insulation items:
            - Leather: Provides an equal amount of hot and cold insulation
            - Goat(1.18+) or Llama(1.16) Fur: Provides strong cold insulation
            - Hoglin Hide: Provides strong hot insulation
            - Wool: Provides insulation at a half-step between leather and goat fur
            - Rabbit Hide: Provides insulation at a half-step between leather and hoglin hide
            - Chameleon Molt: Special "adaptive" insulation that adjusts to the player's environment
      - Items that can be used as insulation now have a tooltip displaying their effects
      - Leather armor can still be sewed to armor, filling all of its insulation slots
      - Insulation items can be combined in different ways for more specific use-cases
      - Insulation items can now be removed with Shears in the Sewing Table
      - Enchanted insulation items will now (irreversibly) transfer compatible enchantments to the armor when being sewn
      - Because there are now two types of insulation, some configs have been changed to match
        (not deleting the old ones may cause a crash)
      - The number of insulation slots in helmets, chestplates, leggings, and boots is now configurable
      - All wearable items can now have insulation, instead of just armor
- Goats can now be sheared to get Goat Fur
      - Their fur will grow back after some time (15% chance to grow back every 45 seconds)
      - Their texture has been tweaked to better incorporate this
- Hoglins now drop Hoglin Hide when killed, in addition to their other drops

Soulspring Lamp Changes:
- The Soulspring Lamp can now be fuelled by attacking an entity at full health with it
      - This restores up to 4 fuel
      - Only works once per entity, forever
- When 'Shift' is held, the Soulspring Lamp's tooltip will now show a graphic of what items it can be fuelled with
- Removed warped/crimson stems as default fuel sources for the soulspring lamp
- Halved the rate at which the soulspring lamp consumes fuel

Waterskin Changes:
- Waterskins now extinguish the player when used
- Waterskins can now be heated at campfires and cooled at soul campfires
- Waterskins now have custom dispense behavior
      - The dispenser pours the waterskin's contents onto players below
      - The water's effect weakens over distance (does nothing after ~20 blocks)
- Added a tooltip to the waterskin when filled, which describes the functionality of holding it in the hotbar

New Temperature Effects:
- Added various negative effects that are inflicted on the player if they are too hot/cold:
      - Hot (disorients the player):
            - Reduced view distance at temperatures above 50 (less range as temperature increases)
            - Blurred vision as temperature increases above 50
            - Randomly drifting camera as temperature increases above 50
      - Cold (dangerous to the player):
            - Reduced mining/movement speed (slower as temperature decreases)
            - Player attack knockback is reduced (less knockback as temperature decreases)
            - Up to 50% of the player's hearts freeze over (frozen hearts cannot be regenerated)
      - All screen-distorting effects can be disabled in the config menu under (distortion effects)

Misc. Temperature Changes:
- Added a new "vague" temperature gauge
      - Gives a rough idea of the world's temperature if the player doesn't have a thermometer
      - When the player gets a thermometer, this will be replaced by the normal (exact) temperature gauge
      - If "Require Thermometer" is turned off, the exact gauge will always be shown
- Biome temperature now takes altitude into account more seriously
      - Temperature will drop more substantially as height increases above sea level
- Increased the effectiveness of most temperature-emitting blocks; though there is still a cap on how much a given block type can affect the player
- The temperature of lava is now drastically reduced while riding a strider
      - This is to prevent the player overheating extremely quickly while riding a strider on a lava ocean
- The body temperature's tendency to "equalize" will no longer fight against modifiers applied to it (such as waterskins)

Chameleon:
- Added new mob: Chameleon
      - Spawns in tropical biomes (Like jungles)
      - Change color according to the temperature around them (it can be a useful thermometer replacement!)
      - It might trust you if you throw it a spider eye
            - Chameleons can trust multiple players
            - You can right-click a chameleon that trusts you to carry it on your head
      - Occasionally, a chameleon will shed its skin, dropping the new Chameleon Molt item
            - Chameleon molt will have important uses in future updates, so don't throw it away!
      - Can perform new actions when fed certain items:
            - Magma cream, nether wart, cactus: Chameleon will point towards nearest hot biome (temperature > 1.7) within 2000 blocks 1 minute
            - Snowball, beetroot, sweet berries: Chameleon will point towards the nearest cold biome (temperature < 0.2) within 2000 blocks for 1 minute
            - Slimeball, ink sac, cocoa beans: Chameleon will point towards the nearest humid biome (temperature > 0.8 and downfall > 0.85) within 2000 blocks for 1 minute
            - Spider eye, fermented spider eye, fish: Heals 3 health for the chameleon

New Armor Sets:
* New Armor Set: Hoglin Hide
      - Crafted with hoglin hide in typical armor patterns
      - Each armor piece provides maximum heat insulation
      - Cannot be insulated in the sewing table
      - Can be used as insulation for other items (similar to leather armor)
* New Armor Set: Goat Fur
      - Crafted with goat fur in typical armor patterns
      - Each armor piece provides maximum cold insulation
      - Cannot be insulated in the sewing table
      - Can be used as insulation for other items (similar to leather armor)

New Blocks/Items:
- New block: Soul Stalk
      - Grows on soul sand and naturally generates in the Nether
            - Grows like sugar cane, up to 6 blocks tall
            - Grows much faster in hot environments
      - When it grows, the new stalk will have a 50% chance to bear a soul berry
      - The top bulb always drops a soul berry
- New item: Soul Sprout
      - Can be eaten to restore 3 hunger points (1.5 bars)
      - Lowers the player's body temperature by 20 degrees when eaten (effect lasts 45 seconds)
      - Can be planted on soul sand to grow a soul stalk
      - Can be used as an effective source of fuel for the soulspring lamp
      ! 'item-settings.toml' will need to be deleted for this change to take effect
- Added new block: Thermolith
      - Outputs a redstone signal based on the temperature of the nearby area (from 0 to 15 from minimum to maximum temperature set in the config)
      - Crafted with 3 chameleon molt and 4 terracotta
- Added "minecart with insulation" item
      - Crafted with a minecart and minecart insulation

Hearth:
- Massive performance uplift
- Doubled the rate at which the hearth drains fuel (a full gauge will now last ~30 real minutes)
- Potions can now be placed into the hearth's fuel slot, giving all nearby players the effect until they leave the radius or the potion expires
      - Milk can be used to clear all effects from the hearth
- Added config options to blacklist or completely disable potions from being used in the hearth
- Added the ability to pipe temperature-controlled air from the hearth using Create's pipes

Original Music:
- Added new song: Far Lands
      - Plays randomly alongside Vanilla music in the Overworld
- Added new song: "Modulo"
      - Plays in-game and in the menu

Potions:
- Ice resistance potions are now brewed with a soul sprout instead of prismarine crystals
- Added a normal-duration (1:30) ice resistance potion
  - The existing (8:00) potion has been reduced to 4:00 and is now the long-duration version (brewed with redstone)
- Fire/Ice resistance potions can be used to negate the new effects of temperature on the player

Misc. Additions:
- Added new recipe unlocks and advancements when certain criteria are met to help progression
- the Thermometer can now be equipped as a charm if Curios is installed
- Reorganized the Cold Sweat creative tab to group items more logically
- Adjusted the spawn rates of goats(1.18+) or llamas(1.16) so it is actually possible to happen upon them in the wild
      - Can now spawn in more biomes, including those from from Biomes O' Plenty, BYG, and Atmospheric
- A Thermometer placed in an item frame will now display the exact temperature when hovered
- The boiler can now be crafted with cobbled, polished, and normal deepslate (or stone in 1.16)
- The icebox/boiler now only accept items from hoppers on the correct side
      - Waterskins are inserted from the top, fuel is inserted at the side, and waterskins can be extracted from the bottom
- Goats now drop 0-2 goat fur when killed
- 1-5 Soul sprouts how have a chance to result from piglin bartering
- Hoglin hide how has a chance to result from piglin bartering
- Goat fur now has a chance to be sold by the wandering trader
- Hoglin hide now has a chance to be sold by the wandering trader
- Insulation can now be chosen as a secondary power at a tier-4 beacon

Mod Compatibility:
- Added support for Armor Underwear:
      - Simple linings now allow the player to withstand more drastic temperatures
      - Ozzy lining adapts to the player's body temperature and makes either hot or cold environments more habitable accordingly
      - Otto/Ollie linings will protect against freezing/burning damage respectively. Each lined armor piece reduces the damage by 25%, up to 100%
      - Otto/Ollie linings also lessen temperature debuffs
- Added support for Oh the Biomes You'll Go!:
      - Rebalanced several biomes' temperatures to be more accurate in Cold Sweat's temperature system
      - Chameleons can now spawn in BYG biomes
      ! 'world-settings.toml' and 'entity-settings.toml' will need to be deleted for these changes to take effect
- Added support for Environmental:
      - Adjusted the temperature of the marsh biome to be more in line with other swamp-like biomes
      - Yak pants now provide insulation when worn
      - Yak hair blocks can be used as an insulation item (equivalent to goat fur)
            - For balancing purposes, it also has 1 negative heat insulation
      ! 'world-settings.toml' and 'item-settings.toml' will need to be deleted for these changes to take effect
- Added support for Atmospheric:
      - Adjusted the temperatures of several biomes to be more realistic in Cold Sweat's temperature system
      - Chameleons can spawn in dunes and rainforest biomes from Atmospheric
      ! 'world-settings.toml' and 'entity-settings.toml' will need to be deleted for these changes to take effect
- Added support for Terralith (1.18+):
      - Adjusted the temperatures of several biomes to be more fitting in Cold Sweat's temperature system
      ! 'world-settings.toml' will need to be deleted for these changes to take effect
- Added basic support for Weather, Storms & Tornadoes (1.18+):
      - Snowstorms will now drastically lower the temperature in the affected area
      - Rain from storms is now treated like normal rain (makes the player wet)
- Added support for biomes from William Wyther's Overhauled Overworld (Pyrael on Discord)
- Mod compat for loaded mods that are of an unsupported version will now be disabled to prevent conflicts
      - For example, now that the minimum version of Create is 5.1, Cold Sweat will disable its Create compat if Create is below 5.1


Technical Changes:
- "Temperature" is no longer an object type
      - All instances of Temperature have been replaced by double values
      - Replaced "with()" with the static method "Temperature.apply()"
      - Because all methods in Temperature are now static, the class has been merged with TempHelper (new class is named Temperature)
- TempModifiers now have a full CompoundTag attached to each instance
      - This can be used to store any custom data that needs to be saved
      - Replaces the old "arguments" system
- TempModifier registration is now done using suppliers of TempModifiers
    - This makes for a less hacky backend way of instantiating TempModifiers, no longer requiring a default constructor
- Renamed methods in TempHelper (Temperature):
      - "getTemperature()" -> "get()"
      - "setTemperature()" -> "set()"
      - "addTemperature()" -> "add()"
- Added new method getTemperatureAt(BlockPos, Level)
        - As you probably could have guessed, this method returns the world's temperature at the given position (using Cold Sweat's default TempModifiers)
- Revamped the temperature system to allow all living entities to have their own temperatures
      - Although the system has been reworked in the backend, there is very little difference in implementation aside from some method parameters
      - This may pave the way for livestock temperature to make a return in the future\
- Added new event: EntityPickEvent
        - Fired when the player uses pick-block (middle-click) on an entity
        - Allows for changing the ItemStack returned
- Added new sub-command for /temperature: "showmodifiers"
      - Displays all of the temperature modifiers present on an entity, as well as how each one affects the entity's temperature
- Added #boiler_valid and #icebox_valid tags
    - These tags now determine what items can be placed into the top slots of the icebox & boiler
- Added tags for items that the chameleon can eat:
    - #chameleon/find_hot_biomes: The chameleon will locate the nearest hot biome
    - #chameleon/find_cold_biomes: The chameleon will locate the nearest cold biome
    - #chameleon/find_humid_biomes: The chameleon will locate the nearest humid biome
    - #chameleon/taming: Item used to tame a chameleon
- Added #soulspring_lamp_valid tag to define dimensions that the soulspring lamp will activate in
- New "HeatResistance" and "ColdResistance" NBT tags can now be applied to players for easy temperature resistance
      - Slows the rate at which the player's temperature changes, similar to armor insulation
      - Setting either of these values to 100 will make the player completely immune to that temperature

Configs:
- Added a config option to disable the mod preventing sleep if the player is too hot/cold
- Fuel items for the soulspring lamp can now be configured to give different amounts of fuel
- Block Temperatures can now be given a "predicate", which makes the block emit/not emit temperature based on its state (i.e. a campfire being lit)
- The Cold Sweat config button can now be repositioned on the screen (option in the config menu)
- Compacted & reworded some config settings to fit better in the menu
- Hovering over config options to show the tooltip is now more consistent
- The "Block Temperatures" config option has been moved to world-settings.toml
    ! This will delete existing configs in main.toml. Back them up first!
- Added new config option in item-settings.toml to "blacklist" items from allowing insulation
- Added a config option to change the amount that temperature equalizes underground


Translation Updates:
- Added Brazilian Portuguese translation (by @Vellar on Discord)
- Updated Chinese translation (by @wumeng on Discord)
- Updated Brazilian Portuguese translation (by @Vellar on Discord)


------------------------------------------------------------------------------------------------------------------------
2.2-b05d

Fixes:
- Fixed the goat/llama fur drop overriding all other goat/llama drops
- Fixed "Biome Temperatures/Offsets" config option being set to MC units when closing the config screen
- Fixed some mods not working with Cold Sweat due to a bug with registering capabilities (1.16.5)
- Fixed Cold Sweat item tooltips being rendered over other tooltips that are ordered before them (1.16.5)


------------------------------------------------------------------------------------------------------------------------
2.2-b05e
- Renamed all instances of Llama/Goat Fur to just "Fur" for better parity between 1.16 and 1.18/19
      ! Existing goat/llama fur items will be automatically converted, so no worries about items being deleted by the ID change

Fixes:
- (1.16) Fixed the soulspring lamp not accepting fuel
- (1.16) Fixed biome temperatures sometimes being set to MC units in the config


------------------------------------------------------------------------------------------------------------------------
2.2-b05f
- (1.16) Added support for shearing goats from the Caves & Cliffs Backport mod

Fixes:
- (1.18/1.19) Fixed armor insulation tooltips not displaying

Technical Changes:
- Player/entity/item capabilities are now cached, increasing performance

Translation Updates:
- Updated Chinese translation (by @wumeng on Discord)


------------------------------------------------------------------------------------------------------------------------
2.2 Release (changes since 2.2-b05f)
- Soul stalk can now generate with a patch disk of soul sand underneath, allowing it to generate in almost any biome
      - This should help with its reliability and make it more accessible to newer players
- Foods with temperature values assigned via configs now have a tooltip displaying their effects
- The vague temperature gauge now has a white outline when the player is in a critically hot/cold environment

Fixes:
- (1.16) Fixed crash due to MixinWorldRender not being remapped properly
- (1.18+) Fixed crash when using tags in config settings
- (1.18+) Fixed temperature inconsistency/jitter when traversing 3D biomes in some cases

Technical Changes:
- CSMath.convertUnits() has been moved to the Temperature class
- All dev.momostudios packages have been changed to com.momosoftworks (sorry)


------------------------------------------------------------------------------------------------------------------------
2.2.1

Technical Changes:
- (1.20) Changed how some mixins work to make the mod compatible with older versions of Forge (pre-47.1.14)


------------------------------------------------------------------------------------------------------------------------
2.2.2
- Added a high contrast option, which simplifies and adds symbols to UI elements for better readability
      - Can be toggled in the config menu

Fixes:
- (1.16) Fixed crash when paired with mods that change entity models (like Epic Fight)
- (1.20) Fixed crash when taking burning/freezing damage
- (1.19.4) Fixed crash due to mixin mapping issue
- (1.19.4) Fixed tooltips not rendering

Technical Changes:
- (1.20) Changed to NeoForge
- Added a ton of attributes for developers to use:
      - cold_dampening: Slows the rate at which the player freezes. Negative values accelerate it.
      - heat_dampening: Slows the rate at which the player overheats. Negative values accelerate it.
      - burning_point_offset: Applies an offset to the player's maximum habitable world temperature.
      - freezing_point_offset: Applies an offset to the player's minimum habitable world temperature.
      - cold_resistance: A multiplier applied to incoming freezing damage (from 0 to 1, with 1 being full resistance).
      - heat_resistance: A multiplier applied to incoming burning damage (from 0 to 1, with 1 being full resistance).
      - core_temperature_offset: An offset applied to the player's core temperature every tick.
      - base_temperature_offset: An offset that is added to the player's body temperature. This can be applied once and the offset is persistent.
      - world_temperature_offset: Applies an offset to the player's perceived world temperature.
      The following attributes are read-only values that mirror the player's temperatures:
      - world_temperature: The player's current world temperature.
      - burning_point: The player's maximum habitable world temperature.
      - freezing_point: The player's minimum habitable world temperature.
      - core_temperature: The player's core body temperature.
      - base_temperature: The player's base body temperature.


------------------------------------------------------------------------------------------------------------------------
2.2.3
- Multiple hearth updates:
      - Updated model to be more "Minecraft-y"
      - Added standard fluid support:
            - Water and lava can now be piped into the sides (except the face) or bottom of the block
            - Water can be extracted from the sides (except the face), and lava can be extracted from the bottom
      - Adjusted the fuel values of some cold items. Clay and water are now much more effective
            ! 'item-settings.toml' will need to be deleted for this change to take effect
- Curios can now be configured to provide insulation

Fixes:
- Fixed missing lang entries for custom attributes (Cadentem on Discord)
- Fixed crash when porting existing worlds from Cold Sweat 2.1 to 2.2
- (1.16) Fixed llama fur not growing after being sheared
- Fixed issue when using the "getTemperatureAt()" method after the player has quit and re-joined a world
- Fixed Create pipes still requiring a roof to transmit hearth air

Technical Changes:
- The default TempModifiers an entity gets upon spawning are now configurable via GatherDefaultTempModifiersEvent
- Setting the cold_resistance or heat_resistance attributes to 100 will now cause that temperature to not affect the player at all, rather than just slowing its effect to 0


------------------------------------------------------------------------------------------------------------------------
2.2.4
- Changed the hearth recipe to better reflect its new design
- Adjusted the protection & durability values for fur and hoglin armor to make them much more viable to actually wear
      - New protection values (helmet, chest, legs, boots):
            - Hoglin hide: 3 6 5 2
            - Fur: 2 5 4 1
      - Doubled durability
- Further adjustments to default fuel items for icebox, boiler, and hearth:
      - Added logs and planks to the list of burnable items
      - Increased the effectiveness of clay and water
- Improved functionality of the Hearth with Create pipes:
      - Pipes can now be directly attached to the top of the hearth to extract the air without having to box it in
      - Hearth spreading now works through encased pipes
- Improved block update  detection for the hearth

Fixes:
- (1.16) Fixed insulator tooltips rendering the bar icon incorrectly
- (1.19, 1.18, 1.16) Fixed chameleon appearing to float over the player's head when being carried
- Fixed texture inconsistencies between the normal and frosted variants of the icebox

Technical Changes:
- Moved hearth spread settings to world-settings.toml
      ! This will delete existing configs in main.toml. Back them up first!

Translation Updates:
- Updated Russian translation (by @rey_zex on Discord)
- Updated Italian translation (by @sniper_foxy on Discord)


------------------------------------------------------------------------------------------------------------------------
2.2.5

Fixes:
- Fixed mounts not providing insulation effectively when configured to do so
- Fixed hearth air still not being able to spread through Create encased pipes by default
- Fixed dimension temperature configs not having proper support for non-MC units
- (1.18) Fixed temperature not resetting to 0 on death
- (1.20) Fixed the hearth using the old recipe

Technical Changes:
- Unobfuscated mod source is now available on CurseForge
- Added message when entering creative mode warning players about insulation being deleted when opening the creative menu
- The "Insulated Entities" config setting now works on a scale of 0 to 1, with 1 being 100% insulation


------------------------------------------------------------------------------------------------------------------------
2.2.5.1

Fixes:
- Fixed server crash due to invalid class being loaded


------------------------------------------------------------------------------------------------------------------------
2.3-b01a
- Added hearth-like functionality to the boiler and icebox:
      - Added new block: Smokestack
      - A smokestack can be placed on top of these blocks to make them act like a half-power hearth
            - They give up to Insulation V and can only heat or cool, respectively
            - They have about 60% of the radius and much less maximum volume
      - They now produce ambient air particles when fueled and have a smokestack
            - Added a new button to their GUIs to toggle this effect
      - Lava/water can be piped into them, similar to the hearth
- The hearth has been altered to be a post-Nether block
      - Crafted with nether bricks and basalt, as well as the new smokestack block
      - The texture has been changed accordingly
      - All other functionality is the same. This block is now an "upgrade" to the smokestack/boiler/icebox
- Added new config option to smooth out how rapidly changing temperatures are represented by the world temperature gauge
      - In other words, the gauge won't jitter as much when the player is moving around near heat sources
      - This option is defaulted to 10, double the smoothing of previous versions
- Added option to hide individual UI elements in the config menu
- Altered/touched up the config screen in a few other areas
- Added Primal Winter support by default
- (1.20) Added Weather, Storms & Tornadoes (Weather2) support


Fixes:
- Fixed insulation tooltips not showing when Legendary Tooltips is installed
- (1.19.2) Fixed resulting item being invisible when shearing insulation from armor
- Fixed dimension temperature configs not being converted correctly internally, resulting in unpredictable behavior
- Fixed text in certain HUD elements not scaling correctly at some resolutions
- Fixed armor attributes not being taken into account when calculating its built-in insulation


------------------------------------------------------------------------------------------------------------------------
2.3-b02a
- The "vague" temperature gauge (world temperature gauge without a thermometer) has been turned into a frame around the body temperature icon
      - Functionality is the same; these UI elements have just been combined to make the UI less cluttered. It look pretty good, too!
      - The exact world temperature readout will still be shown as normal when the player has a thermometer
- The body temperature readout is now hidden by default
      - This UI element may or may not be staying. It might possibly be locked behind the thermometer in future versions
      - It can be turned back on in the config menu
      - Instead, the body temperature icon will now gradually fill up as the player's temperature increases/decreases
- The temperature rate config setting now affects how fast waterskins heat/cool in the boiler and icebox
- Added support for Thirst Was Taken:
      - Waterskins are now drinkable via right-click
      - Their normal (pour) behavior has been changed to left-click
      - Purity defaults to "Slightly Dirty"
      - Can be purified by the same means as water bottles (furnace, campfire)
            - This does not affect the temperature of the waterskin, only its purification level
      - Drinkable items can now be purified in the boiler:
            - When a waterskin is up to max temperature (120 F / 48 C), it will purify by one level every 10 seconds
            - Other drinkable items don't need to heat up. They will start purifying immediately
            - Purification rate is also affected by the configured temperature rate
- Waterskins can now be filled by Create components (250mb of water)
- The hearth-like blocks now protect against temperature 50% more effectively
      - This should provide a needed buff to the icebox/boiler and make the hearth more worth it

Fixes:
- Fixed the smokestack not having a recipe
- Fixed clientside settings attempting to load on dedicated servers
- (1.20) Fixed soul stalk not dropping items when broken
- Fixed world temperature changing slightly when sitting in a minecart due to the player's hitbox being in the ground
- Fixed boiler/icebox not saving insulation strength upon world reload
- Fixed filled waterskin having a very long tooltip when the temperature rate is set to certain values
- Fixed boiler not being craftable with modded cobblestone-like blocks

Technical Changes:
- Major changes to attributes:
      - The read-only attributes can now be written to
            - If an attribute is set, it will override the player's temperature type that corresponds to that attribute
            - For example, setting the player's cold_sweat:world_temperature to 0 will make the player's world temperature 0 until the attribute is removed
      - Previous "offset" attributes have been removed
      - Core temperature attribute has been removed
- Added new sub-command for /temperature: "modify"
      - Allows for changing the player's temperature attributes
      - Also allows for attributes to be marked as "persistent", meaning they will not be removed upon death


------------------------------------------------------------------------------------------------------------------------
2.3-b02b
- Added "Cold Sweat: Insulators" creative tab
        - Contains all items that can be used as insulation, or provide insulation when worn
- The inside of naturally-generated igloos is now habitable
- Increased hoglin hide drop rate to 1-3 per hoglin killed
- Changed the hearth item texture to better match the block texture
- Chameleon molt dropped from chameleons now lasts 20 minutes before despawning

Fixes:
- Fixed invalid fuel item configs defaulting to "air"
- Fixed the chameleon showing as cold when first spawned
- Fixed temperature attributes breaking when updating to 2.3-b02a
      - This fix will not apply if you've already updated to 2.3-b02a.
      - In worlds on 2.3-b02a with broken attributes, run "/temp modify @s clear" to reset your attributes
- Fixed the soulspring lamp losing its fuel when updating from existing pre-2.3 worlds
- Fixed negative heat/cold dampening values not working properly

Technical Changes:
- Added support for adding item insulation, block temperature, and biome temperature using JSON
      - These are a more modular way of configuring things, without having to add them to the config files
      - These can be defined by developers or via datapacks:
            - Insulation: resources/data/<yourmod>/cold_sweat/insulatorData
            - Block Temps: .../block_temp
            - Biome Temps: .../biome_temp
            - Dimension Temps: .../dimension_temp
            - More datapack support is planned for future versions.
- Added config option for setting the temperature of natural structures
      - This controls the world temperature when the player is inside the structure
- Added config option to allow certain blocks to be slept on regardless of the outside temperature
- Most item configs now support defining NBT tags (i.e. {Color:"blue"}).
      - Item configs with NBT tags defined will require the specified NBT data to be present on the item
- Moved the "Cold Soul Fire" and "Check Sleep Conditions" settings to world-settings.toml
- Renamed some too-verbose config settings/sections


------------------------------------------------------------------------------------------------------------------------
2.3-b02c
- Added new "compact" view for insulation tooltips with 10 bars of insulation or more
- Added better support for netherite diving gear from Create
      - When wearing a full diving set with a filled backtank, the armor will provide 999 heat insulation per piece (near-immunity)
      - This leverages the new entity predicate system added in this update
      - The backtank will now drain air (and show the time indicator) when the player is in a hot environment

Fixes:
- Fixed items not being stackable after opening an inventory screen
- Fixed crash when opening an icebox or boiler without a smokestack on top
- Fixed crash due to null item slots with some mod combinations
- Fixed crash when a chameleon molts in some cases
- Fixed broken compat with Weather, Storms, and Tornadoes (Weather2)
- Fixed snowfall causing the player to become wet if Serene Seasons is installed
- Fixed references to burning_point and freezing_point being swapped in some cases
- Fixed the burning_point attribute not having a description

Technical Changes:
- Added support for checking player data to conditionally enable insulation
      - Insulation items with this predicate will only provide insulation if the player has the specified data
      - Deactivated insulation items can still be equipped, but will not provide insulation or show in the tooltip
      - This is a brand new system, but is structured like a Vanilla entity predicates with some slight tweaks


------------------------------------------------------------------------------------------------------------------------
2.3-b02d

Fixes:
- Fixed crash when Create is not installed
- Fixed item still not stacking properly in some cases


------------------------------------------------------------------------------------------------------------------------
2.3-b02e

Fixes:
- Fixed armor insulation being cleared when opening the creative inventory on a dedicated server
- Fixed minimum and maximum habitable temperatures being swapped in some logic
      - This fixes the bug that prevents players from sleeping
- Fixed server crash when using conditionally-insulated items
- Fixed some config settings not syncing to clients on servers
- Fixed crash when hovering over armor tooltips in some cases
- Fixed abnormally high lag caused by Create compat

Technical Changes:
- Added support for adding custom attributes to insulation items using JSON
      - Attributes will be applied to the player's armor
      - Any attributes (even Vanilla and modded ones) are supported


------------------------------------------------------------------------------------------------------------------------
2.3-b03a
- The soulspring lamp can now be given one fuel item at a time by right-clicking
- Chameleons can now be right-clicked to be given items
      - This is also a way of ensuring which chameleon will eat the item if there are multiple nearby. The dropped item will be marked with the chameleon's UUID
- Added an empty tag remover that fixes existing items affected by the item stacking bug from previous versions

Fixes:
- Fixed cold fuel items not working in the hearth or icebox
- Fixed the soulspring lamp not recharging when given fuel
- Fixed goats not dropping fur on death
- Fixed malformed JSON file for the Home Sweet Home advancement
- Fixed the smokestack not being mineable with a pickaxe
- Fixed the tooltip for temperature-affecting foods being formatted incorrectly
- Fixed clientside mixin (MixinPickEntity) trying to load on the server
- When a chameleon is fed an item that makes it search for a biome, the search is now done on a separate thread to prevent stalling the server thread
      - This means there is no longer a noticeable lag spike when a chameleon attempts to find a biome
- Fixed chameleons' death messages not showing the cause of death in some cases
- Fixed other issues with chameleons locating biomes

Technical Changes:
- Data-driven stuff can now be defined in Cold Sweat's config folder (config/coldsweat/data)
      - This allows users to define their own data without having to make a datapack
- Added data-driven options for the several configs:
      - Fuel items
      - Structure temperatures
      - Food temperatures
      - Insulating mounts
- Added block tags for hearth spread whitelist/blacklist (cold_sweat:tags/block/hearth/spread_whitelist and spread_blacklist)
- Added block tag for blocks that should ignore sleeping conditions (cold_sweat:tags/block/ignore_sleep_check) (ignore the "Check Sleeping Conditions" setting)
- Added item tag for non-insulatable armor items (cold_sweat:tags/item/not_insulatable)
- Added effect tag for blacklisted potion effects in the hearth (cold_sweat:tags/mob_effect/hearth_blacklisted)


------------------------------------------------------------------------------------------------------------------------
2.3-b03b
- Improved the output formatting for the /temp debug command

Fixes:
- Fixed the thermometer not displaying temperature units when in an item frame
- Fixed improper conversions between units of temperature in some cases
- Slightly modified unit conversions to use more sensible numbers
      - Previously, arbitrary numbers like 42 and repeating numbers like 23.333... were used
      - Conversions now:
            - MC to C: x * 25
            - MC to F: x * 45 (+ 32 if absolute measurement)
      - Some config settings defined in MC units (like min/max temp) might be slightly off now until they are reset
- Fixed crash with certain mods that edit tooltips when advanced tooltips is enabled
- Fixed inconsistencies between item/entity predicates (Vanilla) and item/entity requirements (Cold Sweat)
- Removed the empty tag remover, as it was causing unforeseen issues with some items

Technical Changes:
- Temperature.Type and Ability have been merged together into Trait
      - These two things were functionally identical anyway, so separating them only made them more annoying to work with
      - This also means that previous Temperature.Ability types can now have TempModifiers applied to them
- The TempModifier registration system has been slightly changed:
      - The ID for TempModifiers is no longer provided by a method in the TempModifier class
      - IDs are now assigned at registration via ResourceLocations like most other things
- The Temperature.addModifier() method will now add/replace for every TempModifier instance that matches the given predicate if allowDupes is true
- Added range field to BlockTemp JSONs


------------------------------------------------------------------------------------------------------------------------
2.3-b03c
- Removed the Insulated effect from the list of top-tier beacon effects
- Added structure temperature offset config option

Fixes:
* Fixed TempModifiers stacking in cases where they shouldn't
* Fixed crash when saving configs or closing the config menu
- (1.19, 1.20) Fixed special minecarts splitting into multiple items when destroyed

Technical Changes:
* Added JSON config for entity spawn biomes


------------------------------------------------------------------------------------------------------------------------
2.3-b03d
* Tamed chameleons can now be bred using their normal taming items (fish, spider eye), but only once
      - This is to make chameleons slightly easier to obtain, and help with potential scarcity on large servers
      - Baby chameleons shed chameleon molt immediately upon turning in to an adult, but otherwise don't
- Chameleons now drop 1 chameleon molt when killed, except if they are a baby
- Made baby chameleons slightly smaller

Fixes:
* Fixed crash when displaying item tooltips in some cases
* Fixed server configs not syncing to clients in many cases
* Fixed the temperature inside generated structures being freezing cold if not defined in the configs
* Fixed fuel items not working properly in the icebox
- Fixed the hearth not insulating in some cases in which it should
- Fixed adaptive insulation not adapting or protecting properly
- Fixed the icebox and boiler not draining fuel when equipped with a smokestack
- Fixed armor insulation tooltip not displaying the correct amount of insulation in some cases

Technical Changes:
* Config settings for biomes, dimensions, structures, and items have much more robust logging and are less prone to failure in cases where the option is malformed


------------------------------------------------------------------------------------------------------------------------
2.3-b03e
- Added config setting to change the drop rate of chameleon molt
- Slightly decreased the rate at which chameleons shed

Fixes:
* Fixed another crash related to item tooltips
- Fixed some config settings for things like biomes, dimensions, and structures not loading or working properly in some cases
- Fixed the "offset" field of structure temperature JSONs not working
- Fixed tags not working for dimension or structure-related config settings

Technical Changes:
* Changed the order of precedence for config settings:
      - user datapacks (in config folder) > datapacks (from mods or worlds) > traditional configs (.toml files)
- Config settings can now accept a comma-separated list of biomes, dimensions, or structures to apply the same settings to multiple things
* (1.16) 3rd party mods can now define datapack configs for Cold Sweat, as has been possible in other versions
      - This is done with a custom data loading system, which means there are a couple minor differences in folder structure:
            - Data files are kept in data/cold_sweat/config/* instead of data/<yourmod>/cold_sweat/*
            - Otherwise, the internal structure is the same
            ! Datapacks in world folders still can't be read by this system. The alternative is to put datapack configs in configs/coldsweat/data/*


------------------------------------------------------------------------------------------------------------------------
2.3-b03f
- Added more info about the filled waterskin's uses to its tooltip

Fixes:
- Fixed config settings for chameleon spawn biomes being loaded too late, preventing them from spawning at all
- Fixed error in determining whether it was snowing or raining if Serene Seasons was installed
- Fixed crash when combining items in the sewing table in some cases
- Fixed crash that rarely occurs when equipping armor items
- Fixed crash when hovering an item with advanced tooltips enabled
- Fixed the icebox GUI background being darker than normal


------------------------------------------------------------------------------------------------------------------------
2.3-b04a
* (1.20) Added Origins integration as a standalone mod:
      - Allows for users to modify the attribute values that players spawn with for origins via datapacks or config files
      - This could already be done for your own origins via attribute modifiers, but this addon is useful for modpack devs
* Changed the functionality of waterskins slightly:
      - The drink function is now performed by crouching and right-clicking
      - The pour function has returned to being the default right-click action
      - Removed the extra "When Swung" tooltip, as both actions can be considered "consuming" the item
* The body temperature readout is now re-implemented as a feature of the thermometer
      - It is hidden by default, and shows when the player has a thermometer or "Require Thermometer" is disabled
      - The body temperature icon now moves out of the way when the readout is displayed (configurable)
- Added the option for food items to change the player's temperature for a period of time, like soul sprouts
      ! The soul sprout will lose this effect until item-settings.toml is reset
- Increased the duration of the soul sprout's effect to 1 minute
- The soulspring lamp now emits particles while in use to help signify its area of effect
- Updated the high-contrast variants of the body and vague world temperature icons
* The following config settings are now configurable for a range, instead of just on/off:
      - Freezing hearts: Ranges from 0 to 1, with 1 freezing all hearts
      - Chilled mining speed: Ranges from 0 to 1, with 1 preventing the player from mining completely
      - Chilled movement speed: Ranges from 0 to 1, with 1 preventing the player from moving completely
      - Chilled knockback reduction: Ranges from 0 to 1, with 1 nullifying the player's knockback to other entities
      - Heatstroke fog: Ranges from 0 to infinity; Controls the distance of the fog, with infinity disabling it altogether
      * These settings now have entries in the config menu as well
- Made heatstroke camera swaying more aggressive

Fixes:
* Fixed the boiler not heating up waterskins if the temperature rate isn't set to a multiple of 1
- Fixed the tooltip for temperature-affecting foods sometimes being in the wrong place
- Fixed the /temp debug command sometimes misreporting the player's temperature and how it is being affected
- Fixed the /temp debug command giving an error for any trait that doesn't have a corresponding attribute type
- Fixed the config settings for body and world temperature gauge position overlapping their label if the text is too long
- Fixed the ice resistance potion recipe accepting any potion as input instead of just awkward potions
- Fixed uncommon crash when closing the config menu
- Fixed visual bug with frozen hearts if the player's max health is not 20
- Fixed frozen-over hearts still rendering when the config setting was disabled
- (1.16) Fixed the body temperature icon rendering in front of the vague world temperature (frame around the body icon)
- (1.16) Fixed the soulspring lamp not affecting nearby players
- (1.16) Fixed frozen-over hearts not rendering

Technical Changes:
- All methods that add/remove/replace TempModifiers now have more advanced options for handling duplicates:
      - This replaces the old "allowDupes" parameter
      - ALLOW: Allows duplicates of this TempModifier to exist on the entity
      - BY_CLASS: Adding/replacing a TempModifier fails if one of the same class is already present
      - EXACT: Adding/replacing a TempModifier fails if there is an instance of the same class and matching NBT present
      ! The old methods with the "allowDupes" parameter are still present, but are now deprecated and marked for removal in a future version


------------------------------------------------------------------------------------------------------------------------
!! Config settings for blocks will be reset in this version due to restructuring

2.3-b04b
- A complete netherite diving suit (Create) now provides complete resistance to block-related temperature (like lava!)
      - It also gives 100% resistance to overheating, so your temperature will not increase
      - These effects last until the backtank is empty
- Waterskins are now fillable from cauldrons
- Lava cauldrons now emit heat by default
      ! This will not take effect until the config setting for block temperatures is reset

Fixes:
* Fixed the armor insulation tooltip not showing when it should if the item is is also an insulator itself
- Fixed the text for the "Difficulty" button in the config menu not showing correctly after changing a setting
* Fixed crash when exiting the config menu sometimes
* Fixed the charm slot not being available for the thermometer unless it is added by another mod
- Fixed the "Inhospitable" advancement being made immediately upon spawning
* Fixed the player's TempModifiers being reset to default when rejoining the world
- Fixed players being made wet by water and rain while in spectator mode
- Fixed crash caused by goat model mixin
- Fixed data-driven insulator files being added to the TOML configs when saving the game or closing the config menu
* Fixed attribute modifiers on insulation items only working for Cold Sweat attributes
- Fixed attributes added by insulation items being in a random order in the item's tooltip
* Fixed data-driven insulator features like predicates, attribute modifiers, etc. not working for curios
- Fixed item requirements for insulation items being satisfied by an empty slots
- (1.16) Fixed incorrect loot table breaking drops for llamas
- (1.16) Fixed texture inconsistencies between sheared and unsheared llamas
- (1.16) Fixed soul sprouts being consumed when placed into the same slot as any other item

Translation Updates:
* Added Dutch translation (thank Nerbzzz/Nikki!)

Technical Changes:
* Insulation items can now affect non-player entities
      - If an insulation item has special properties, like attribute modifiers, it will now apply to any entity, not just players
* Insulation items can now make entities immune to certain TempModifiers
      - This reduces the efficacy of the specified TempModifiers on the entity
      - The the entity requirement must be met for immunity to be applied
- Replaced TempModifierEvent.Calculate.Pre and Post with more useful events:
      - Override: Fires before the TempModifier is calculated, and allows the incoming temperature to be changed
            - If the event is canceled, the TempModifier's output will be overridden with the event's temperature until it is calculated again
            - Otherwise, the event's temperature is passed into the TempModifier for calculation
      - Modify: Fires after the TempModifier is calculated, and allows the resulting function to be modified
            - The event is not cancelable


------------------------------------------------------------------------------------------------------------------------
2.3-b04c
- Added custom filling and pouring sounds for the waterskin
- Waterskins can now be used to fill a cauldron

Fixes:
- Fixed hearts appearing to be frozen-over when the player is cold and Grace is active
- Fixed mixin conflict with ModernFix
- Fixed performance issue with updating the player's equipped insulation items
- Fixed hacky soulspring lamp rendering in 1st-person
- Fixed temperature sometimes not working when updating existing worlds


------------------------------------------------------------------------------------------------------------------------
2.3-b04d

Fixes:
- Fixed player temperature not updating after joining a world or dying in some cases
- Fixed missing subtitles for hearth-like blocks running out of fuel
- Fixed missing subtitles for filling/emptying a waterskin


------------------------------------------------------------------------------------------------------------------------
2.3-b04e

Fixes:
- Fixed the mod failing to load due to duplicate sound registries
- Fixed redundant attribute modifier queries on the player's armor causing unnecessary performance impact
- Fixed chameleons being added to biomes that should instead spawn goats or llamas

Technical Changes:
- Config settings can now be declared to require a RegistryAccess when saving/loading (see ConfigSetings.java)


------------------------------------------------------------------------------------------------------------------------
2.3-b04f
- Due to many configs requiring access to world registries, the Cold Sweat config button is now disabled in the main menu

Fixes:
- Fixed crash due to missing library
- Fixed crash when saving config settings in-game
- Fixed the Temperature-Affecting Foods config for soulsprouts not specifying a duration


------------------------------------------------------------------------------------------------------------------------
2.3-b04f.1 (1.21)

Fixes:
- Fixed all loot from all sources yielding piglin barter loot
- Fixed recipes not working & made them more compatible with modded items


------------------------------------------------------------------------------------------------------------------------
2.3-b04g
- Reduced the food value of soul sprouts to 3 (from 4), and the saturation to 0.5 (from 1)
- Significantly reduced the drop rate of sticks from soul stalk blocks
- Shift-clicking an armor item from the output slot of the sewing table now applies all available insulation at once

Fixes:
- Fixed adaptive insulation not displaying adaptation state on the client


------------------------------------------------------------------------------------------------------------------------
2.3-b05a
* New (experimental?) ice changes:
      * The hearth & icebox now no longer accept water by default
            - Now, the primary cold fuel source is ice
      * Ice is now much easier to obtain/farm, due to a few key changes:
            - Ice now freezes/thaws according to Cold Sweat's temperature system
            - This new system takes altitude, time, and the season into account
            - Ice freezes at roughly 32 °F (0 °C)
            - Ice can now be obtained with a stone pickaxe without silk touch
                  - An iron pickaxe is required for packed ice and blue ice
                  - If ice is mined with a wooden pickaxe or by hand, it will turn into water as normal
            - Packed and Blue ice can now be un-crafted into their "lower-level" variants (i.e. blue ice yields packed ice) in the crafting table or stonecutter
                  - The crafting table yields 4 ice blocks, while the stonecutter yields 9
* The set bonus for Three-Bolt armor from Aquamirae now provides some freezing protection, as well as water immunity
* Added support for Spoiled:
      - Placing food items in the icebox will stop food spoilage as long as it is fueled
      - This will gradually drain fuel from the icebox
- The hearth's texture has been reverted to its pre-2.3 version (doesn't it look so friendly?)
- The hearth's recipe has been tweaked to require less nether bricks, and soul sand instead of basalt

Fixes:
* Fixed block temperatures multiplying in effectiveness every time the player logs in/out of a world
* Fixed the smithing table clearing insulation when upgrading diamond armor to netherite
* Fixed the recipe for ice resistance potion not appearing in JEI
* Fixed players' settings for hearth particle visibility not being saved when changing dimensions or re-logging
* Fixed the "Temperature Offset" config not allowing negative numbers
- Fixed chameleons being marked as un-breedable after being fed a breeding item, even if they didn't actually create a baby
- Fixed the player being able to attack a chameleon mounted on their head in some cases
- Fixed item IDs not being parsed properly in JSON configs
- Fixed nether portals sometimes making the area colder than it should be in the Nether
- Fixed the insulation tooltip showing before the item's name if the tooltip is only 1 line long and Iceberg is installed
- Fixed occasional desync between server and client when a player puts on or takes off a chameleon

Technical Changes:
* Any field in a JSON config that accepts a registry ID, or list of IDs, such as structures, biomes, blocks, etc. can now accept tags
      - Tags and IDs can essentially be used interchangeably, with tags being prefixed with a '#' symbol


------------------------------------------------------------------------------------------------------------------------
2.3-b05a.1

Fixes:
- Fixed issues with mixin conflicts & mixins not properly loading in some cases


------------------------------------------------------------------------------------------------------------------------
2.3
* Added config option for armor insulation slots to dynamically scale based on protection value:
      - There are 4 modes: Static (no scaling), Linear, Exponential, and Logarithmic
      - A maximum number of slots can be set to prevent excessive scaling
* Added JSON-only config option to customize how world temperature behaves undergorund
      - This system is defined in "regions", in which the temperature can be set to a specific value or follow a gradient
      - By default, the world consists of 3 regions (this replicates how the old system worked):
            - From ground level to 4 block below ground, the temperature is unchanged
            - From 5 blocks 20 blocks, the temperature gradually reaches 75 °F (24 °C)
            - From 20 blocks onward, the temperature is 75 °F (24 °C)
* Hearth-like blocks (including the boiler and icebox) now require redstone power to emit heat/cold
      - While one of these blocks are powered, they will constantly heat/cool the area and consume fuel
      - The thermolith can be used to detect the nearby temperature and power these blocks dynamically
      * A config option has been added to re-enable the "smart" behavior of these blocks
      - If a hearth is powered from the sides, it will cool the nearby area
      - If a hearth is powered from the back, it will heat the nearby area
      - Powering a hearth from both areas will make it heat and cool
      - Powering a boiler or icebox from any side will make it heat or cool, respectively
- Added support for using a Create display link on the thermolith
      - The current world temperature will be displayed
      - A field will be added upon placing the display link that allows the user to define the temperature units
* The icebox now has an animation/sounds when being used, opening like a chest
- The icebox now has a unique texture for when a smokestack is placed on top
- Right-clicking the thermometer now displays the world temperature if Supplementaries in installed
- The thermolith now provides direct power, allowing it to send the signal through blocks
- Updated the hearth's item texture and recipe to be consistent with its block form
- Ice and snow now have slightly lower fuel values in the icebox and hearth

Fixes:
- Fixed attribute modifiers failing to parse in non-English locales, causing world loading to fail
- Fixed steam particles not rendering
- Fixed crash when clicking unformatted text in chat
- Fixed the hearth's AOE still showing after the block is removed by unconventional means

Technical Changes:
* Added an automatic config updater, which will change existing config settings when updating to new versions
     - This prevents outdated config settings causing new features to not work as intended
     - This system will be used very sparingly, and only triggers once


------------------------------------------------------------------------------------------------------------------------
2.3.1
* The hearth now has visible redstone inputs on the sides and back, to make it more clear how it is powered
- Hearth-like blocks can now be powered from the bottom
      - For the Hearth, this is an additional input for heating
- Updated Thirst Was Taken compat to support 1.3.8+
      - TWT versions below 1.3.8 will now have compat disabled
- Ice how has a minimum temperature, reducing the likelihood of extremely cold (negative) temperatures when standing close to it
- The trident's riptide ability can now be used when the player is wet
      - Using this removes the player's "wetness"

Fixes:
* (1.16) Fixed mixins not loading, causing a lot of strange behavior
* Fixed the player's attributes being set to incorrect values when updating form 2.2
* Fixed the insulation value for chameleon molt being removed when updating from 2.2
* Fixed the player's temperature & world temperature sometimes appearing to not change after respawning
- Fixed missing subtitles for the icebox's opening and closing sounds
- Fixed ice melting into water when broken in creative mode or no block was beneath it
- Fixed the chameleon being immune to neutral damage (not directly from an entity) when not riding a player
- (1.16) Fixed UI icons rendering over the chat panel
- (1.16) Fixed the UI for the hearth, icebox, and boiler being offset when the player has potion effects
- Fixed inconsistency in the freezing screen shake effect at different framerates

Technical Changes:
* Added config setting to nullify all negative temperature effects when the game is set to Peaceful mode
      - This setting replaces the "Damage Scaling" setting, as it didn't work well anyway
* Added new JSON config setting allowing items carried in the player's inventory to apply temperature effects
      - A simplified version of this has also been added to item_settings.toml for quick access
* Added config to change the general strength of insulation items
      - This setting applies to all armor and insulators, changing their effectiveness by a given multiplier


------------------------------------------------------------------------------------------------------------------------
2.3.2
!! (1.16) The config setting for llama spawn biomes will be deleted and replaced with goat spawn biomes. Please back up before launching!

- Added config option to hide insulation tooltips unless shift is held
* (1.16) Backported goats from 1.18
      - Replicate the appearance and behavior of Vanilla goats
      - If Caves and Cliffs Backport is installed, all Cold Sweat goats will be replaced with that mod's goats
            - This is to keep things simpler by only having one kind of goat
            - As much data as possible will be preserved when replacing (name, age, health, etc)
      - They are now the intended way of obtaining goat fur
      ! If this introduces bugs, I swear I'm gonna revert this stuff
* (1.16) Llamas no longer yield goat fur
- Renamed all fur-related items to "goat fur"
      - Existing items and configs will be automatically updated to reflect this change
* Added screen effect for when the player is wet
      - Can be disabled via an option in the config menu or in client.toml

Fixes:
* Fixed crash when putting a smokestack on the icebox or boiler
* Fixed crash when saving configs in the config screen
- Fixed crash when placing redstone near a hearth, boiler, or icebox in some cases
- (1.16 - 1.19) Fixed the icebox still not having subtitles for opening and closing
- (1.21) Fixed crash when equipping a non-armor item (like the elytra)
- Fixed hearth-like blocks providing chilling/warming when powered but not fueled
- Fixed the Create netherite diving gear having incorrect heat and cold protection values
- Fixed mixin conflict with MemoryLeakFix

Translation Changes:
- Added Traditional Chinese (zh_tw) translation, courtesy of yichifauzi on GitHub

Technical Changes:
- Any drinkable item can now be put in the boiler if Thirst Was Taken is installed, removing the need for the "boiler_purifiable" tag
- The config for carried item temperatures now has an optional "max_effect" field that limits how much that type of item can affect the player


------------------------------------------------------------------------------------------------------------------------
2.3.3
- Updated the hearth's item texture slightly to match its new block texture

Fixes:
* Fixed crash when the player is wet and GUI scaling is set to "Auto"
- Fixed the hearth still accepting water if the config settings had not been updated from a previous version
- Fixed erratic walking behavior for chameleons, especially when bumping into other mobs
- Fixed the chameleon's walking animation clipping into the ground slightly
- Fixed items thrown to a chameleon having different NBT when picked up, making them unstackable
- Fixed chameleons accepting infinite breeding items in some cases
- Fixed baby chameleons attempting to go into breeding mode when fed breeding items
- Fixed the water dripping effect persisting on-screen after the player has completely dried off


------------------------------------------------------------------------------------------------------------------------
2.3.4
- Create fluid pipes now connect to the top of the hearth
- Entities can now be configured to affect ambient temperature
      - This config is in entity-settings.toml or as JSON under entity/entity_temp/
- Added a tooltip explaining that game-altering settings in the config menu are disabled for non-OP players
- Added a tooltip to insulated armor items that shows which attributes come from insulation
- Added config setting to disable Cold Sweat's custom water freezing behavior

Fixes:
* (1.16) Fixed crash when Caves and Cliffs is not installed
* (1.16 - 1.18) Fixed the player getting wet when it is snowing and serene seasons is installed
* Fixed the soulspring lamp not consuming fuel
- Fixed Thirst Was Taken support not activating when the mod is installed
- Fixed Serene Seasons's seasonal temperatures applying to non-whitelisted dimensions in some cases
- Fixed block, dimension, structure, and biome tags not working properly in JSON configs
- Fixed temperature-affecting blocks behaving strangely when their max temperature is reached
- Fixed the world temperature gauge representing temperate temperatures inaccurately when the player has extreme min or max temperature traits
- Fixed water not accurately using the current season to determine freezing behavior
- Fixed soul fire and soul campfire not respecting the "Cold Soul Fire" config setting
- Fixed hearth-like blocks giving insulating effects to players 1 block outside its area-of-effect
- Fixed hover tooltips for temperature units in /temp debug not working properly

Technical Changes:
* Items, blocks, entities, etc. can now have multiple config setting applied to them
      - This, for example, allows multiple settings with different conditions and effects to be applied
      - If multiple valid settings are found, they will either stack or override each other depending on the object
* Changed the load order of configs & custom registries to be more consistent and sensible:
      - User JSON configs (config/coldsweat/data/*)
      - Java-based configs (BlockTemps only)
      - Datapack JSON configs (data/<namespace>/cold_sweat/*)
      - User TOML configs (config/coldsweat/*.toml)
      - Configs loaded first will take precedence in cases where they do not stack, such as block temps and fuel items
* Added new fields to depth temperature JSON configs:
      - "required_mods": A list of mods that must be installed for the config to be loaded
      - "dimensions": A list of dimensions or tags that the config will apply to
* Added many new dynamic dimension tags (1.18+):
      * These tags are dynamically filled, meaning they should work for all modded dimensions regardless of support
      - #forge:bed_works: If beds are usable in the dimension
      - #forge:has_ceiling: If the dimension has a ceiling (i.e. the Nether)
      - #forge:has_raids: If pillager raids can occur in the dimension
      - #forge:has_sky: Inverse of #forge:has_ceiling. If dimension has an open sky
      - #forge:has_skylight: If the dimension has ambient light
      - #forge:natural: If the dimension is considered "natural"
      - #forge:overworld_like: If the dimension is similar to the Overworld (has_sky, has_skylight, and natural)
      - #forge:piglin_safe: If piglins will not zombify in the dimension
      - #forge:respawn_anchor_works: If respawn anchors are usable in the dimension
      - #forge:ultrawarm: If the dimension is extremely hot (i.e. the Nether)
      - #forge:unnatural: Inverse of #forge:natural
* Added new arguments for TOML-based block temp configs:
      - nbt: Optional. The block entity's NBT data must match this to apply the temperature (fails the check if the block has no block entity)
      - max-temp: Optional. The maximum world temperature at which the block temp will be effective. If the block's temperature is negative, this will be the minimum temperature
- Added max_temp and min_temp fields to block temp JSON configs
- Block temperatures for ice blocks, boiler, icebox, and campfires have been moved to TOML rather than Java
      - They will be automatically re-added to world_settings.toml
- Optimized the hearth's spreading algorithm
- Optimized the performance of non-player temperature-affected entities
- Any block tagged as #minecraft:ice will now cool the nearby area like Vanilla ice blocks
- Any block tagged as #minecraft:campfires will now heat the nearby area like Vanilla campfires (except for the soul campfire)
- TempModifiers are no longer synced to the client if a modifier is replaced with an identical one


------------------------------------------------------------------------------------------------------------------------
2.3.5
!! (1.21 only) Due to a change in how armor insulation is saved/loaded, insulation data will be lost upon upgrading from a previous version.<br>It is recommended that you temporarily remove all insulation on your armor before upgrading!

* Added an indicator to the screens of hearth-like blocks that shows if the block is being powered
- Wind, sandstorms, and tornadoes from Weather 2 will now affect the player's temperature
- Increased the maximum volume of the hearth's effect from 9000 to 12000 blocks
- Increased the maximum volume of the icebox & boiler's effect from 1500 to 2000 blocks
- Added a config option to change the effectiveness of the soulspring lamp at temperatures above the player's burning point

Fixes:
* Fixed crash when attempting to update config settings with invalid formatting
* Fixed crash when a boiler/icebox containing waterskins attempts to tick when the temperature rate is set to 0
* Fixed config-driven features stacking in effectiveness when entering multiple worlds in the same session
* Fixed hearth-like blocks' effects applying inconsistently depending on the player's position
* Fixed temperature not changing properly when the player travels underground
* Fixed config settings loading too late during world load, causing custom entity spawns (including chameleons) to not load
* Fixed adaptive insulation not adapting to the ambient temperature
- Fixed the insulation tooltip not displaying partial, negative, or large
- Fixed Spoiled compatibility causing "containerModifier" blocks defined in the Spoiled configs to not work properly
* Fixed hearth-like blocks forgetting that they are powered upon unloading and reloading the chunk
* Fixed hearth-like blocks causing chunk-loading deadlocks upon loading in some cases
- Fixed hearth-like blocks not affecting areas next to solid blocks properly in some cases
- Fixed the tooltip for food temperature always showing, even if the item has no temperature properties
- Fixed performance issues while rendering the "wetness" screen effect
- Fixed the description of "Knockback Chill" stating received knockback is reduced, rather than dealt knockback
- Fixed JSON configs containing entity requirements not properly checking dimension or biome when specified
- Fixed the wetness screen effect appearing dark when the player has night vision
- (1.20) Fixed the held item name text overlapping the player's body temperature icon when a thermometer is equipped
- (1.21) Fixed invalid formatting for the hearth's recipe causing it to be uncraftable
- (1.21) Fixed dynamic dimension_type tags not populating
- (1.16) Fixed "dimensions" field erroneously being named "dimension" in dimension temp JSON configs
- (1.16 - 1.19) Fixed JSON block temp configs not having min_temp or max_temp fields
- (1.18 - 1.19) Fixed the tooltip lines for attribute modifiers added by armor insulation rendering behind the tooltip

Technical Changes:
* Food temperature configs now stack when applied to the same item, rather than only using the first one loaded
* Renamed some field names for JSON configs to be more consistent:
      - All entity requirement fields are named "entity"
      - All item requirement fields are named "data"
      - Affected configs: food, insulator, mount
* Biome temperatures and offsets now stack, rather than override, when applied to the same biome
      - Dimension temperatures/offsets still override each other, meaning dimension temps still override everything
* Temperature region changes:
      - Moved from /depth_temp/ to /temp_region/
      - Temperature regions now support y-values outside the world limits
      - Temperature regions now support "boundless" temp regions by omitting either the "top" or "bottom" bound
            - These apply infinitely upward or downward (but not both), and have a constant temperature
* Java-based block temperatures are now loaded last to allow user configs to override them
      - A registerFirst() method has been added to BlockTempRegisterEvent for BlockTemps that must break this rule and be registered first


------------------------------------------------------------------------------------------------------------------------
2.3.6
- Particles spawned by Cold Sweat are now dependent on the player's particle setting (All/Decreased/Minimal)
- Cold Sweat's custom ice breaking mechanics can now be disabled with the "Custom Ice Drops" setting in world_settings.toml
- Added config setting to disable Cold Sweat's TempModifiers (or those from other mods)
      - TempModifiers control how temperature affects the player, so this will hopefully provide some more granular control over that
- Removed the "Cave Insulation Strength" config setting, as it is no longer used
- Reduced the underground temperature near y -64 so the player no longer overheats
- Removed the total resistance to block temperature provided by the Create netherite diving suit

Fixes:
* (1.21) Fixed crash when saving insulated armor items
* (1.20) Fixed crash when Serene Seasons 9.1 or newer is installed
      - Serene Seasons support now requires version 9.1 or newer to be enabled
* Fixed crash when "Insulation Strength" is set to 0
* Fixed dynamic dimension_type tags not loading properly on servers
* Fixed feeding a chemeleon dropping the entire item stack from the player's hand
- Fixed insulation from mounts ignoring the "Insulation Strength" setting
- Fixed the world temperature indicator briefly displaying incorrectly when changing preferred units
- Fixed spectators getting wet in water
- Fixed being underwater counting as "underground" when calculating world temperature
- Fixed the "condition" field of JSON BlockTemp config files not supporting checking block states
- Fixed TOML-based block temperatures not checking NBT properly
- Fixed air not being consumed from Create's netherite backtank when in a sweltering environment
- (1.20 - 1.21) Fixed debug message showing when a tooltip containing adaptive insulation is displayed
- (1.16) Fixed the hearth debug visualizer rendering red outlines around solid blocks

Translation Updates:
* Added Japanese translation (Mohuzato on GitHub)

Technical Changes:
* (1.20) Dropped NeoForge support in favor of normal Forge, which is receiving more updates
* The TempModifierEvent.Calculate.Override/Modify events have been renamed to Pre/Post
      - These events are functionally similar, but Pre has some changes:
            - The event now has getFunction() and setFunction() methods for setting the resulting function before it is calculated
            - The event must be cancelled for the function to be overwritten
* Changed the packages of some events for better organization:
     - TempModifierEvent: api.event.common.temperature
     - EnableTemperatureEvent: api.event.core.init
     - GatherDefaultTempModifiersEvent: api.event.core.init
     - BlockTempInitEvent: api.event.core.registry
     - TempModifierRegisterEvent: api.event.core.registry
     - EdiblesRegisterEvent: api.event.core.registry
     - BlockStateChangedEvent: api.event.core.vanilla
     - ChatComponentClickedEvent: api.event.core.vanilla
     - EntityPickEvent: api.event.core.vanilla
     - LivingEntityLoadAdditionalEvent: api.event.core.vanilla
     - ServerConfigsLoadedEvent: api.event.core.vanilla
* Added InsulateItemEvent:
     - Fired when an armor item is being insulated
     - The insulator item can be modified before being applied to the armor
     - The event can also be cancelled to prevent the insulation from being applied
* Added TickInsulationEvent:
     - Fired when the player's equipment insulation is processed
     - Allows for granular control over the insulation being provided by sources like armor, insulators, curios, and protection
     - The event can be cancelled to prevent the insulation from applying to the player


------------------------------------------------------------------------------------------------------------------------
2.3.7
* (1.20 - 1.21) Added compat for "Oh the Biomes We've Gone"
      - Tweaked the temperatures for 39 biomes from the mod
      - Chameleons now spawn in appropriate biomes from the mod
      ! world_settings.toml will need to be reset for these new temperature to apply
* Added (partial) compat for Vaklyrien Skies
      - Temperature emitted from blocks placed on a ship will now properly affect the player
      - More compatibility will be added in future updates
- (1.16) Goats now drop 1-2 mutton when killed

Fixes:
* Fixed crash on servers when rendering particles in some cases
- Fixed crash when updating configs from pre-2.3 versions if "Block Temperatures" is configured in a particular way
- Fixed the icebox's opening animation not synchronizing to all players on a server
- Fixed some particles not spawning for all players on a server when they should
* (1.16) Fixed custom mob spawning not working
- (1.18) Fixed chameleons spawning on invalid blocks
- (1.21) Fixed damage from freezing/overheating dealing knockback

Technical Changes:
* Implemented a new rendering manager (PostProcessShaderManager) to handle Cold Sweat's shaders
      - Circumvents Minecraft's normal post-processing shader system to improve compat and allow for stacking of shader effects
* Removed deprecated methods from the Temperature and GatherDefaultTempModifiersEvent classes
* Java-based BlockTemps' min/max effect, min/max temp, range, and fade are now fields instead of just method return values
      - These fields are now part of the constructor
      - The existing methods will return the values of these fields by default, but can still be overridden with no additional changes necessary
      - The old BlockTemp(Block... blocks) constructor is still present, and will initialize all other fields to a default value
* BlockTemp fading over distance is now handled outside the getTemperature() method, in BlockTempModifier
      - This means you will no longer need to calculate the fade yourself and can simply return the temperature of the block
      ! For BlockTemps that still calculate the fade in the old way, the new fade will still be applied on top of the old one
            - This isn't too bad, but it means the block will weaken exponentially


------------------------------------------------------------------------------------------------------------------------
2.3.8
* Added new textures for when a filled waterskin is hot or cold
- Removed the Far Lands and Modulo custom music tracks
- Added option to expand all collapsible tooltips by default
- Added a "trait" argument to the /temperature set & get sub-commands

Fixes:
* (1.18 - 1.19) Fixed crash when rendering the heatstroke blur effect
- (1.21) Fixed command parameters for temperature trait arguments not working properly

Translation Updates:
- Updated Russian translation (Heimdallr-1 on GitHub)

Technical Changes:
* Several major changes have been made to how block requirements and block_temps work in JSON
      - Much better support for blockstates and a slight change to NBT
      - See the online documentation for the new syntax
* Added new methods to TempModifiers: markDirty(), markClean(), isDirty()
      - A TempModifier being "dirty" indicates that it should be synchronized to the client
      - Dirty TempModifiers will be automatically synchronized via Temperature.updateModifiers(), then marked clean
- All methods for adding TempModifiers in the Temperature class now return a boolean indicating if the operation was successful
- Added addModifierById() method to GatherDefaultTempModifiersEvent
      - Adds a modifier based on its registered ResourceLocation ID (useful for mod compat!)
* Added removeModifiers() method to GatherDefaultTempModifiersEvent
- The hearth, icebox, and boiler now use fluid tags for fueling:
      - cold_sweat:hot
      - cold_sweat:cold


------------------------------------------------------------------------------------------------------------------------
2.3.9
* item_settings/entity_settings/world_settings.toml have been renamed to item/entity/world.toml
      - Existing files will be automatically migrated
* Added new config settings to the in-game menu:
      - Insulation Strength
      - Check Sleep Conditions
      - New settings for the hearth/boiler/icebox
- The rate at which water freezes is now affected by randomTickSpeed if "Custom Freezing Behavior" is enabled
- Insulation attributes with unmet requirements are now shown with a red strikethrough, rather than being omitted from the tooltip
- Added config options for the maximum range and volume of the hearth, boiler, and icebox individually to world.toml

Fixes:
- Fixed the hotbar tooltip for filled waterskins not having a negative symbol for cold temperatures
- Fixed thermal source blocks (hearth/boiler/icebox) not consuming fuel items immediately upon being inserted

Technical Changes:
* Added KubeJS support
      - Added events for adding insulators, block temps, biome temps, etc; as well as TempModifiers
      - Added several Cold-Sweat-related methods that can be accessed from the "coldsweat" binding
      - Added a few other events for specific Cold Sweat actions. This list will grow over time
      - See the mod's documentation page for more details
* Added "remove" config type, which allows for the removal of registered config settings that match a given data structure
      - This includes TOML and JSON configs
      - Removals are handled after all of the config settings are parsed, but before they are committed to memory
      - Removals will not directly change the config files; only whether they are loaded
* Any JSON configs named "default" will now be loaded last
      - This allows for configs to have a default value that can be overridden by other mods/datapacks/configs
* Massive internal registry standardization and boilerplate reduction
      - Internal registries and configs are now much more standardized, with fewer points of failure
      - Codecs are used wherever possible for data serialization, rather than bespoke methods
      - Many of the config holders have been updated to hold custom data types, rather than unorganized tuples (like Pairs and Triplets)
* Cold Sweat configs that rely on dynamic registries now use Holders for their keys
      - This includes biomes, dimensions, structures, etc.
      - For example, ConfigSettings.BIOME_TEMPS is now a DynamicHolder<Map<Holder<Biome>, BiomeTempData>>
      - Any methods that previously accepted an "unwrapped" value now accept a Holder instead
      - These changes will only affect direct interactions via Java; not JSON or KubeJS
- ItemRequirements and EntityRequirements can now take in a Predicate<ItemStack> and Predicate<Entity> respectively
      - These allow for absolute control over the conditions for insulators, entity temperatures, etc.
      - These requirements are now calculated on the server, and the results are sent to the client
- Defining biome temperatures with only one temperature value is no longer supported in TOML configs
- All configs that accept items, blocks, biomes, etc. will now accept comma-separated lists and #tags if they previously didn't


------------------------------------------------------------------------------------------------------------------------
2.3.10
* Ice now thaws according to Cold Sweat's temperature system
* Ice now takes all temperature sources (nearby blocks, season, depth) into account when freezing/thawing
      - The algorithm for ice is less precise than the one for entities, so there may be a minor discrepancy
* Added "drying items" config to item.toml, which allows players to dry off  using certain items
      - Drying items can also be defined in JSON under item/drying_item/* with the following parameters:
            - "data": An item requirement, like in other configs
            - "entity": An entity requirement that the player must pass, like in other configs
            - "result": The item stack that the item will be turned into when used. If undefined, the item will be consumed
            - "sound": The sound to be played when the item is used. Defaults to a squishy sponge sound
      - Also available as a KubeJS hook (see documentation for more info)
* The hearth now properly functions when part of a Valkyrien Skies ship
* Renamed the "Chill" effect to "Frigidness"
- Smokestack blocks now connect when stacked vertically
- Chameleons are now immune to projectiles when they are on a player's head
- Reorganized the "Cold Sweat: Insulators" tab & removed most of the wool colors except for white
      - More specifically, if an insulator contains a tag that has more than 6 items, only the first item in the tag will be displayed
- World temperature now decreases slightly when the weather is overcast (even if it doesn't rain in the biome)
      - This effect can be configured in world.toml
- Players now dry off exponentially faster in higher-temperature environments
- Removed a lot of settings for the boiler/icebox/hearth from the in-game menu, as they took up too much space
      - They are still present in world.toml

Fixes:
* Fixed crash when the temperature of a biome is retrieved in some cases
* Fixed crash due to infinite update loop when a thermal source block's fuel is changed
* Fixed crash when opening the creative menu in some cases
- Fixed crash while processing registry removals in some cases
- Fixed rare crash when calculating block temperature in some cases
* Fixed log spam and/or crashes caused by missing temperature modifier IDs
- Fixed mixin conflict with mods that change ice freezing behavior (like TFC)
* Fixed "NegativeArraySizeException: -1" error when connecting to a server with OP permissions
* Fixed config menu not opening on dedicated server
- Fixed the config menu infinitely re-opening when playing in offline mode
* Fixed some config settings duplicating in the TOML files every time they are saved
- Fixed automatic config updater creating outdated configs in some cases
* Fixed blocks configured via TOML not emitting temperature
- Fixed soul-fire-based blocks not emitting temperature properly
* Fixed server disconnection due to very large packet size in some cases
* Fixed chestplates not being insulatable & other abnormal sewing table behaviors
- Fixed insulating armor tooltip not displaying
* Fixed goats not regrowing their fur after being sheared
* Fixed the hearth not checking for fuel items
- Fixed the Create netherite diving set not giving the right attribute modifiers
- Fixed powered blocks in front of the thermolith not updating when it is destroyed
- Fixed errors caused when KubeJS scripts use invalid/missing IDs
- Fixed KubeJS-based item configs not checking their conditions properly
- Fixed biome temperature having too small of a search radius
- Fixed no sound playing when a waterskin is dispensed from a dispenser
- Fixed elevation temperature being inaccurate in some cases
- Fixed chameleon molt never despawning when shed by a chameleon
- Fixed crash when a block is destroyed due to a non-player action in some cases
- Fixed temperature ceasing to work after death in some cases
- Fixed the freezing point of ice being higher than it should
- Fixed frozen hearts rendering incorrectly in hardcore mode

Technical Changes:
* The temperature decrease due to altitude is now defined in JSON as part of the default temp_region file
      - This functionality was previously hard-coded, but can now be customized
* Added new functionality for inventory item temperatures ("carried items")
      - Now support giving attribute modifiers and temperature modifier resistances
      - Now support being in Curios slots
- Removed the "trait" argument from the "/temperature set" sub-command, as it would be reset next tick anyway
- Temperature units are now supported for seasonal temperatures and block temperatures
      - Existing configs will be automatically updated to match the new format
- Added "cold_sweat:extends_smokestack" block tag, which defines what blocks can be used to increase the height of a smokestack
! The "entity" parameter for getTemperature() in BlockTemp is now nullable
! EnableTemperatureEvent is now fired on the Forge event bus directly after configs are loaded
* Configs defined by JSON (and a few more) are now only synced server -> client and not the other way arounddddd
      - These configs will no longer attempt to be written to TOML files
      - This change also affects singleplayer worlds, as they have an integrated server
      * Structure temperatures are not synced at all anymore, because structures themselves are not synced anyway
* Config data objects are now standard classes instead of records, and all extend the same "ConfigData" class
      - This class contains a config's UUID, type, and required mods
* Config data objects now store their source of creation (TOML, JSON, etc.)
- Added "state()" method to KubeJS block temperature builder for easier checking of block state
- Added "InsulatorTabBuildEvent", which allows for simple modifications to the items in the insulator tab
- Added getInsulationFromNearbySources() to WorldHelper, which calculates the warmth/frigidness level at the given position from nearby hearth-like blocks
- Added getRoughTemperatureAt(), which provides a less accurate but much more efficient method of getting the temperature at a given location
      - This can be used for block updates or other tasks that are performed often and don't require exact precision
- Improved the logic of addModifier() methods to behave more intuitively
- UndergroundTempModifier ("cold_sweat:underground") has been split into two separate modifiers:
      - DepthBiomeTempModifier ("cold_sweat:depth_biomes"): Handles the temperature of underground biomes
      - ElevationTempModifier ("cold_sweat:elevation"): Handles temperature changes based on altitude & depth underground (provided by temperature regions)
      - These modifiers will be automatically added to existing players/entities

------------------------------------------------------------------------------------------------------------------------
2.3.11
* The Water Effects config setting now has 5 states:
      - OFF: Disables all water effects
      - Particles: Only water drip particles are shown
      - Overlay: Only the on-screen water overlay is shown
      - All: Both particles and overlay are shown
      - Clicking the button in the config menu will now cycle through these options
- Slightly improved the performance of the "blobs" shader that is applied when the player is overheating
- Waterskins can now take from any Forge fluid container that has 250mb of water, if the container supports it

Fixes:
* Fixed crash when shift-clicking an empty slot in the sewing menu
* (1.19) Fixed crash when Valkyrien Skies is not installed
* (1.21) Fixed insulation not being properly removed in the sewing table
* Fixed shears not breaking at 0 durability in the sewing table
* Fixed players not having temperature attributes
* Fixed the number of insulation slots for chestplates and leggings being swapped
- Fixed overlapping thermal sources with two different strengths causing temperature fluctuations
- Fixed attribute modifier tooltips always having an insulation icon, even if they aren't added by insulation
- Fixed water drops appearing on the screen when the player emerges from a swim-able liquid that isn't water

Technical Changes:
- Added FetchSeasonsModsEvent, which allows mod developers to signal that Cold Sweat should load the appropriate seasonal configs
      - Add your mod's ID to the list via FetchSeasonsModsEvent#addSeasonsMod()
      - This event is fired on the Forge event bus when configs are being constructed
- Multiple "drying item" configs can now be configured for a given item
      - The first applicable config will be used in the event that there are more than one

------------------------------------------------------------------------------------------------------------------------
2.3.12
- Added config setting to change the hearth/boiler/icebox's fuel consumption rate when applying warmth/frigidness
- Added config setting to enable/disable the Create backtank losing pressure in hot or cold environments
- Added support for Just Enough Effect Descriptions (courtesy of Cicopath)
- Piglins now accept the thermometer as a bartering item (also courtesy of Cicopath)
- Goats can now be sheared by a dispenser

Fixes:
* (1.21) Fixed crash loading KubeJS integration when Architectury is not installed
* (1.21) Fixed crash when initializing the creative menu in some cases
* Fixed removing insulation in the sewing table duplicating the insulation item
* Fixed crash when the player is wet on a dedicated server
- Fixed NBT arguments in JSON not parsing correctly in some cases, especially with nested compound tags
- Fixed TOML block temp configs being invalid if any string arguments contain only whitespace (" ")
- Fixed the "range" field in entity temperature JSON configs taking its value from the "temperature" field
- Fixed overlapping thermal sources still conflicting in some cases
- Fixed KubeJS registry events firing twice

Technical Changes:
* Added a "temperature" field to entity requirement JSON:
      - Allows for checking the temperature of the target entity
      - Represented as a map of string keys and double or double-range values
      - i.e. {"body": 50.0} or {"world": {"min": 1.0, "max": 2.5}}
- The "cs:contains" NBT operator has been split into "cs:contains_all" and "cs:contains_any"
      - "cs:contains_all" checks if the NBT list contains all of the specified keys
      - "cs:contains_any" checks if the NBT list contains any one of the specified keys
- Added CreateRegistriesEvent.Pre
      - Fires directly after registries are compiled, and before removals are handled
      - Subscribing to the base event is not recommended, as it will cause the subscriber to fire twice


------------------------------------------------------------------------------------------------------------------------
2.4-b01a
* New armor set: Chameleon Scale:
      - Crafted with chameleon molt in typical armor patterns
      - Visually adapts to the ambient temperature
      - Each armor piece provides maximum adaptive insulation
      - Cannot be insulated in the sewing table
      - Can be used as insulation for other items (similar to leather armor)
* The smokestack block can now be placed in all directions
      - This allows for creating "pipes" that transport air from the hearth/boiler/icebox
      - This is a built-in alternative to using Create's pipes, but those still work as well
      - A smokestack connected on more than one axis (like in corners) will become a "junction", which takes up a full block
      - Junctions do not allow air to pass around them- only through them via connected smokestacks
      - A smokestack can be right-clicked with cobblestone to create a junction, which is useful for venting air through walls
      - The smoke & steam emitted from the thermal sources will travel through the smokestack line and emit from the end(s)
* Smokestacks no longer require redstone to craft
* Tweaked how the insulation system works:
      - Each insulation slot now represents an item, rather than 2 insulation points
      - This enables more powerful insulation items to take up only one slot
      - Added custom tooltip graphic for "compound" insulation items
      - Added new parameter to insulator configs: "fill_slots"
            - This will make the insulator take up multiple slots as normal
* Updated compat for Create to 6.0.0
* (1.21) Fully Reimplemented Create and Thirst Was Taken support
- Entities caught on fire will now heat up the nearby area
      - You can also warm yourself up this way!
- Eating temperature-affecting foods now properly replaces the pre-existing effect for that item
      - i.e. eating a soul sprout will now reset the "coldness" timer if its effect is already active, rather than doing nothing
! (1.21) Minimum NeoForge version is now 21.1.60

Fixes:
- (1.19) Fixed the inside of structures having no temperature
- Fixed crash while ticking the icebox when Immersive Portals is installed
- Fixed adaptive insulating armors not adapting to the ambient temperature
- Fixed attribute modifiers added by insulation not being removed when the armor item is taken off

Technical Changes:
- TemperatureChangedEvent now fires every time an entity's temperature changes, instead of only when it is changed manually
* JSON and KubeJS configs with no defined targets (no listed items, entities, etc.) will now apply to everything
      - This is useful if your config should affect all entities that match given requirements/predicates
! The "data" field in item JSON configs has been renamed to "item" for consistency with other configs
- Added optional "affects_self" field to entity temperature JSON configs
      - This will cause the entity to be affected by its own temperature (defaults to "false")
- Added optional fields "count", "location", and "block_below" fields to entity spawn biome configs:
      - "count": The number of entities that can spawn in a group
      - "location": A location requirement that must be met for the entity to spawn
      - "block_below": Another location requirement, centered on the block below the entity
- Added optional "location" field to block temperature JSON
- Added new field to insulator configs: "fill_slots"
      - This will make the insulator take up multiple slots as normal (reverts the new "one item per slot" system)
      - This is "false" by default
- Added entity temperature, spawn biome, and insulating mount configs support to KubeJS
- (1.20-) Added new type-specific entity requirements (ported from 1.21):
      - (1.18+) "variant": Checks the entity's variant (cat color, axolotl color, etc.)
      - "fishing_hook": Checks if the fishing bobber entity is in open water (this is a Vanilla thing, IDK)
      - (1.18+) "lightning_bolt": Checks blocks set on fire and entities struck by the lightning
      - "piglin_neutral_armor": Checks if the entity is wearing armor that pacifies piglins
      - "player": Checks player-specific data (game mode, stats, advancements, etc.)
      - "raider": Checks pillager-specific data (part of an active raid, is the raid captain)
      - "slime": Checks the size of the slime
      - (1.18+) "snow_boots": Checks if the player is wearing boots that prevent falling through powder snow


------------------------------------------------------------------------------------------------------------------------
2.4-b02a
* Config settings from pre-2.4 versions will now be automatically updated to reflect new changes/formatting
      - Added option to disable auto-updating in main.toml
* Encased smokestacks now have openings on both ends like normal smokestacks
* Decreased the default temperature of lava by 40%
- Added new chameleon scale armor equip sound
* The hearth's redstone inputs have been changed:
      * Heat is now emitted if the left or back side is powered
      * Cold is not emitted if the right or bottom side is powered
      - Tweaked the design of the redstone inputs to be more obvious
      - The redstone inputs are now hidden if "Automatic Hearth" is enabled in the configs
- Smokestacks can now be waterlogged
- Hearths can now be placed underwater
- Made thermal source air particle distribution more random instead of emanating from the center
- Added option to change the speed at which players naturally dry off
* Added support for some Tough as Nails items:
      - Wool armor: provides the same insulation as wool
      - Leaf armor: provides the same insulation as leather, but with no cold protection
      - Thermoregulator: now gives warmth & frigidness as a hearth would
* Adjusted default world temperature for the Twilight Forest and Aether dimensions

Fixes:
* (1.18) Fixed crash when loading KubeJS events
* Fixed crash when a hearth is running and Valkyrien Skies is not installed
* Fixed crash when using a hearth in a Valkyrien Skies ship
* Fixed memory leak due to capability caches not clearing expired entries
* Fixed memory leak due to destroyed/unloaded hearths continuing to listen for nearby block updates
* Fixed memory leak due to cached world temperature values not being cleared upon leaving the world
* Fixed food temperature being applied every tick if its duration is unset
- Fixed JSON configs with required_mods still attempting to parse when the mods are not present
- Fixed extraneous required field "factor" for adaptive insulation JSON
* Fixed KubeJS configs for biomes, dimensions, and structures not working
* Fixed thermal sources giving insulating effects in invalid locations if the player is standing on the same block as an output smokestack
* Fixed thermal sources emitting fuel particles from all nearby pipes and smokestacks, even if they are not connected
* Fixed input items being deleted when shift-clicking the output slot of the sewing table
- Fixed the chameleon's eye height being too high
- Fixed the chameleon's tongue not extending all the way when eating
- Fixed chameleon scale leggings not covering the bottom of the player's body
- Fixed water drip effects appearing when respawning after dying in water
- Fixed temperature visually carrying over briefly after respawning
- Fixed block temperature not being at full strength when standing right next to the block-
- Fixed incorrect/outdated effect recipes for JEED
- Fixed the chameleon's walk animation not playing when moving very slowly (like through soul sand)
- Fixed chameleons not properly remembering their temperature when loading back into a world
- Fixed ice not being mineable by tools with pickaxe-like abilities (multi-tools, Tetra tools, etc.)
- Fixed particles emitted by encased smokestacks getting stuck inside the block

Technical Changes:
* Insulation item configs now accept a list of insulation
      - This allows for adding multiple types (or slots) of insulation to a single item
      - Example: "insulation": [{"cold": 1, "hot": 0}, {"cold": 1, "hot": 0} (occupies 2 slots with lesser cold insulation)
      - Defining a single insulation is still allowed as to not break existing JSON
- Updated documentation for insulation-related TOML config settings
- Armor and curio insulation settings no longer support the "fill_slots" field
* Added new "world temp" requirement for JSON
      - Accepts decimal values
      - Also accepts some preset string values:
            - "freezing", "cold", "cool", "temperate", "warm", "hot", "burning"
            - Ordered from coldest to hottest. Based on the min/max temperature config settings
      * Now used in the min/max_temp fields in block temperature JSON
      * Added as "world temp bounds" to location requirement JSON:
            - Has min/max values, each of which is a world temp requirement
* Added "temperature" field to location requirement
* Some arguments for JSON configs now support a new type "Negatable List":
      - Defines a list of "requirements" and "exclusions" which must be met
      - Example: "entity":{"require":[{"entities":[#minecraft:skeletons]}],"exclude":[{"entities":[minecraft:wither_skeleton]}]}
            - Applies to all skeleton types except wither skeletons
      - Any block, entity, item, or location requirement can be negated in this way (except fields defined within other requirements)
      - The "old" format of these arguments will continue to be supported (i.e. "entity":{"entities":[#minecraft:skeletons]})
- The min/max temperature fields in block temperature JSON are now world temp requirements


------------------------------------------------------------------------------------------------------------------------
2.4-b02b
- Added "modifier" subcommand for /temperature
      - Enables adding/removing temperature modifiers on entities
- The "modify" subcommand for /temperature has been renamed to "attribute"
- Added new configs for the waterskin:
      - "Waterskin Hotbar Strength": The strength of the gradual cooling/heating of waterskins in the hotbar
      - "Waterskin Neutralize Speed": The speed at which waterskins' temperature will drain when in the hotbar
- Tweaked sewing table block and GUI textures
- Changed the sewing table recipe to be consistent with other workstations (like the smithing table)
- Moved the hearth's fluid intakes to coincide with its fuel inputs
- If the player is on fire and wet, they will now be extinguished and dried off
- Lava temperature is now TOML-based so it can be more easily changed

Fixes:
- (1.21) Fixed the hearth & other thermal sources not accepting fluid input
* (1.21) Fixed Thirst Was Taken compat module not loading if mod is present
- (1.21) Fixed incorrect attribute modifiers for the Create netherite diving set bonus
* (1.21) Fixed network lag when synchronizing insulated armor items
* (1.21) Fixed network error when fetching the tooltip for insulator items in some cases
* Fixed crash when checking the formatting for insulating armor items
- Fixed crash when using Iceberg 1.3.0+
* Fixed crash when cleaning up cached capabilities in some cases
* Fixed insulation items not working properly when applied to armor
* Fixed only being able to insulate half of the slots on armor
- Fixed incorrect logic when applying insulators that only take up one slot
- Fixed KubeJS insulator configs not compiling properly
* Fixed distortion effects triggering when the player has the Grace effect
- Fixed adaptive insulation tooltips displaying incorrectly
- Fixed tooltip metadata being modified incorrectly for armor items
- Fixed the shoulders on the chameleon scale chestplate being slightly too low

Technical Changes:
- All JSON configs that start with the word "default" will be loaded last, rather than just the ones named "default"
- Registry removal configs now accept a negatable list of NBT
- Insulating mount JSON now has an "immune_temp_modifiers" field, similar to insulator items
- The "cold_insulation" and "heat_insulation" fields in insulating mount JSON are now optional (defaulting to 0)


------------------------------------------------------------------------------------------------------------------------
2.4-b02c
* Added a new "acclimation" mechanic:
      - By spending time in hotter or colder climates, player can now adapt to more comfortably live in them
      - This causes their livable temperature range to be shifted upward or downward
      - The player can acclimate to live in climates up to 20°F/10°C hotter or colder than normal (configurable)
      - Complete acclimation takes about 15 minutes (also configurable)
* The rate at which the player is damaged by freezing/overheating is now dependent on how fast they are freezing/overheating
      - For example, if the player is in a 100°F/37°C area, they will take damage at the normal rate
      - If the player is in a 400°F/200°C area, they will take damage much faster
      - Wearing insulation slows down the rate of damage
* Lava now increases the player's temperature logarithmically (A.K.A. diminishing returns), as the amount of lava increases
      - This means one block of lava is more effective than before, but a whole pool of lava is slightly less effective
      - This should make it more fair as both a tool for warming up and a hazard to avoid
* Added new "Temperature Effects" sub-page to the config menu, which allows for individually tweaking the negative effects of freezing/overheating
      - This includes new settings for changing the blur and camera sway effects from overheating
- Water droplets caused by being wet now only show on the sides of the screen to reduce obstruction
- The body temperature readout (with a thermometer) now shows a gradient rising from the bottom as the player's temperature exceeds 100/-100

Fixes:
* Fixed crash when saving configs and Tough as Nails isn't loaded
- Fixed crash when saving the player's NBT data in some cases
* Fixed ConcurrentModificationException crash when managing cached capability data
* (1.21) Fixed armor items stacking to 64
- Fixed mount configs only working for living entities
- Fixed the thermal source spread blacklist not being used for determining if the hearth is under a roof
- Fixed how smokestacks and Create fluid pipes connect to thermal sources and each other
- Fixed the chameleon's head and tail disappearing after a long time of being loaded
- Fixed bug that caused attributes to sometimes throw errors when queried
- Fixed the player's wetness not being removed after using a trident
- Fixed rounding error on the body temperature readout

Technical Changes:
- Added "logarithmic" (boolean) field to block temp JSON and KubeJS configs
      - Makes a block deliver "diminishing returns" as more of them are present around the player


------------------------------------------------------------------------------------------------------------------------
2.4-b02d
* The heart of the sea inside the soulspring lamp is now animated
- Added new advancement "Getting Cozy" for successfully creating a setup with the icebox/boiler and a smokestack
- The "Desperate Measures" advancement now requires the player to be standing in fire or lava to prevent accidental triggering
- Renamed the "Dressed to Go" advancement to "Dressed for a Quest"
- Using 4 or more insulation items that are part of the #minecraft:freeze_immune_wearables will now prevent the player from freezing in powder snow
      - Added leather and goat fur to the tag by default

Fixes:
* Fixed crash when in a dimension with no floor (like the End or Aether)
- Fixed the "Home Sweet Home" advancement not being obtainable


------------------------------------------------------------------------------------------------------------------------
2.4-b03a
* Entities can now be configured to be affected by temperature
      ! This mechanic is experimental and disabled by default. It can be enabled in entity.toml
      - Configured animals will heat up and cool down, and can die from overheating/freezing
      - Default entities are pigs, cows, sheep, chickens, goats, horses, donkeys, mules, and llamas
      - Each of these entities are also best suited for different climates
      - Entities in an uninhabitable climate will emit hot or cold "angry" particles
      - Entity temperature uses a heavily simplified version of the player temperature system
            - This should be fine in most scenarios, but the option is present to enable more robust measurements
            - This is disabled by default, as it is less performant
      - Configurable via TOML, JSON, and KubeJS
* Soul stalks now have an initial "bud" stage when placed
      - This is a small, 1-block-tall stage that will grow into a full stalk
* Glowstone can now be used to "bonemeal" soul stalks (#cold_sweat:grows_soul_stalk)
      - It can also be applied by a dispenser
- The boiler now only lights up when it is performing a fuel-draining task:
      - Heating waterskins
      - Purifying drinkable items (with Thirst Was Taken)
      - Warming a room with a smokestack
- Soul stalks now grow twice as fast, and bear soul sprouts 60% more often
- Added setting to toggle the new animated model for the soulspring lamp
- Added support for Soul Fire'd:
      - When an entity is burning from soul fire, it will now emit cold
      - This is an entity_temp defined via JSON
- Soul fire now deals contact damage (like normal fire)
- Naturally-generated igloos are no longer warmer inside
- Updated the effect icon for ice resistance

Fixes:
- (1.18, 1.19) Fixed Thirst Was Taken support not being enabled when the mod is installed
- Fixed the boiler not draining fuel when warming waterskins or purifying drinkable items
- Fixed chunkloading deadlock when scanning for temperature-affecting structures in some cases
- Fixed Just Enough Effect Descriptions recipes not showing the icebox and boiler as sources of frigidness and warmth
- Fixed some of the settings in the Temperature Effects tab not being marked as clientside when they should be

Technical Changes:
- The list of "required_mods" in JSON configs is now a negatable list
* Changed how the GatherDefaultTempModifiers event works:
      - Name changed to DefaultTempModifiersEvent
      - Now fired for all temperature traits simultaneously instead of a separate event for each trait
      - Now uses a Map<Trait, List<TempModifier>> for collecting modifiers
      - Methods for adding/removing modifiers must now specify the trait to apply to
      - The old version of the event still functions, but is deprecated and will be deleted in a future release
* A single modifier instance can now be added to multiple traits on an entity
      - This single instance will be preserved when saving & loading the entity
      - getLastInput() and getLastOutput() are now stored per-trait, and now take in a Trait argument
      - Added getFunction() method to TempModifier, which also takes in a Trait argument
* Added tick() method to TempModifier
      - Naturally, this method is called every tick
      - This can be used to handle central calculations that aren't tied to any specific trait
- The player's body temperature equalization rate is no longer halved when temperature modifiers are applied to it
      - For some custom temperature modifiers applied to the CORE trait, this means their rate might need to be increased
- Removed Temperature#getTemperatureAt(), since it was moved to WorldHelper in 2.3.10
- WorldHelper#getRoughTemperatureAt() now uses a less accurate but more performant method of getting the temperature
      - Now accepts flags as a 3rd argument. 1 = use more accurate temperature, 2 = force update (forces a new calculation)
      - The "more accurate" system is the old system, which is generally still less precise and more performant than getTemperatureAt()
- Block requirements now accept a list of enum properties when checking block state (i.e. "type": ["top", "bottom"])
- Added convert() method to KubeJS (mirror of the method from the Temperature class)


------------------------------------------------------------------------------------------------------------------------
2.4-b03b
- The icon of the input slot in the sewing table now switches between leather and shears to indicate that shears can be used
- Added custom temperatures to biomes from Regions Unexplored
      ! This only applies to freshly-generated configs, so world.toml might need to be deleted
* Insulating armor items that don't grant any insulation will now accept insulation
      - i.e. the Create netherite diving set, which only gives attribute modifiers
- Soul stalk now generates more commonly in the soul sand valley biome
- The attribute modifiers for the Create netherite diving set have been removed from the helmet, leggings, and boots
      - The backtank now gives the full effect (+100% heat dampening, +50% cold dampening)
- The primary (right-click) and secondary (sneak-right-click) actions for the waterskin are now configurable:
      - Both can now be set to either drink or pour, so they can be swapped around or disabled
      - These settings are in client.toml and are player-specific

Fixes:
- (1.21) Fixed the effect ID for frigidness still being "cold_sweat:chill"
* Fixed crash when calculating player/entity temperature attributes in some cases
- Fixed potential crash when managing entity temperature caches internally
- Fixed log spam when loading new entities into the world
- Fixed soul stalks generating with an incorrect bottom block
- Fixed all soul block segments turning into buds when upgrading an older world
- Fixed water drip effects appearing when emerging from water in spectator mode
- Fixed HUD elements rendering above other UI elements that they shouldn't
- Fixed "matches" field in registry removals not accepting a list of values
- Fixed "fuel" argument in KubeJS fuel configs being mistakenly named "temperature"
- Fixed the thermometer showing Fahrenheit units when right-clicked, even if units are set to Celsius
- Fixed TemperatureChangedEvent firing at incorrect times
- Fixed mixin conflict with mods that modify smithing recipes (like Sortilege)

Technical Changes:
* Temperature effects are now a modular system
      - Added a new TempEffect Forge (Java-based) registry
      - Each individual temperature effect (freezing health, screen blur, etc.) is now registered as a TempEffect
      - TempEffects are assigned to entities via JSON, and apply to certain temperature ranges
            - i.e. health freezes over if the player's temperature is between -50 and -100
      - This system will be expanded upon and more thoroughly documented in the future
- Registry removals now support removing JSON registries by ID (i.e. "cold_sweat:entity/entity_temp/on_fire") via the "entries" field
      - This does not work for TOML or KubeJS configs, as they do not have registry IDs
- KubeJS configs are now passed through the normal config pipeline
      - They are now present in CreateRegistriesEvent
      - They can now be targeted by registry removals
- The "matches" field in registry removals now uses NBT requirements instead of normal NBT
      - This means that Cold Sweat's special NBT functions (cs:any_of, etc.) can now be used
- Registry removals can now choose which config types to target via the "config_type" field
      - Accepts a list of strings ("toml", "json", or "kubejs")
- Added dedicated addRegistry() and addRegistries() methods to CreateRegistriesEvent
- Create backtank pressure now drains if the player has any insulator equipped that is part of the #drains_backtank tag and passes its requirements


------------------------------------------------------------------------------------------------------------------------
2.4-b03c
* Soul sprouts can now be planted with dispensers
* Soul stalks that became glitched after updating to b03a will now correct themselves upon receiving a block update
- Slightly decreased the effectiveness of growing items on soul stalk (now takes 2-3 items instead of always 2)
* Removed sticks from the loot table for soul stalk
* Mod compat for specific mods can now be disabled by using the "disabled_mods" file in the CS config folder
      - These mods will still work, but special integration features will not be applied
- The "Require Thermometer" and "Fire/Ice Resistance Immunity" settings have been moved to item.toml
- Improved Primal Winter support:
      - Now respects disabled biomes/dimensions in Primal Winter's config
      - Only decreases the temperature for configured biomes, since Primal Winter already changes default biome temperatures

Fixes:
- (1.21) Fixed crash during server startup
- Fixed crash when rendering frozen health
- Fixed crash due to Cold Sweat registries not being synced to the client
- Fixed un-enchantable armor items inheriting enchantments from insulators


------------------------------------------------------------------------------------------------------------------------
2.4-b03d
* Big improvements to config files:
      - Improved the formatting and wording of comments, making them more readable and clear
      - Improved the spacing between config settings and comments, making it easier to locate specific settings
      - List-based configs are now formatted vertically with one element per line, rather than all elements on one line
            - This behavior is indicated by the "//v" tag at the top of the config's comment. Removing the tag reverts this behavior
            - Formatting changes take effect upon restarting the game
      ! Existing configs should be updated automatically, but backing up is recommended
      - TOML configs that take in IDs, like blocks, items, entities, biomes, etc. now support negation (i.e. "!minecraft:stone")
            - Most useful when used in lists. Excludes the given ID from having the setting applied to it
            - Also supports negating tags ("!#minecraft:leaves")
            - i.e. "#forge:dyes,!minecraft:black_dye" applies to all dyes EXCEPT black dye
      ! Some config settings have been moved:
            - "Require Thermometer": main.toml -> item.toml
            - "Fire/Ice Resistance Immunity" main.toml -> item.toml
- Armor items that provide built-in insulation can now accept insulation themselves
      - Built-in armor insulation can also be configured to either take up the item's available insulation slots, or not
- Insulation tooltips can now be configured to show under specific circumstances:
      - "always": Always show the tooltip (even for armor items with no insulation)
      - "if_present": The default behavior. Shows the tooltip only if the item gives or has insulation
      - "on_shift": Show the insulation tooltip if SHIFT is held (even for armor items with no insulation)
      - "shift_and_present": Show the tooltip if SHIFT is held AND the item gives or has insulation
      - "never": Never show the insulation tooltip for any items
* Leather, hoglin hide, goat fur, and chameleon scale armor can no longer be sewn into other armor by default
* Increased the amount of insulation provided by leather, hoglin hide, goat fur, and chameleon scale armor when worn
* Increased ice resistance potion durations:
      - Normal length: 90 seconds -> 3 minutes
      - Extended length: 3 minutes -> 6 minutes
- (1.16) Added Valkyrien Skies support

Fixes:
* Fixed crashing and/or disconnection when loading Cold Sweat datapacks that include dimensions, structures, or biomes
* Fixed crash when using a hearth, boiler, or icebox in a Valkyrien Skies ship
* (1.21) Fixed strange temperature behavior when an entity with temperature is killed or leaves the world
* Fixed temperature effects being removed when the player's body temperature is above 100 or below -100
- Fixed the player's spawn point not being set at a bed if it is sweltering or freezing
- Fixed water droplets sometimes spawning in lopsided patterns on the screen
- Fixed shears consuming double durability when used to shear goats

Technical Changes:
- Chameleons will now target and eat any entities in the #cold_sweat:chameleon_eats tag


------------------------------------------------------------------------------------------------------------------------
2.4-b04a

Fixes:
* Fixed gradually decreasing server performance due to registry leaks
* Fixed long freeze when exiting a world or server
* Fixed crash when loading TOML configs in some cases
- Fixed boolean block state values in JSON not being read properly

Technical Changes:
* (1.16) The file structure of JSON registries has changed to match that of other versions:
      - Registries are now located in data/<yourmod>/cold_sweat/* (instead of data/cold_sweat/config/*)
      - This means that JSON registries registered by other mods will have that mod's namespace in their IDs
      - Datapacks still do not work. This is only for mod developers
- Block temperature JSON configs can now be added to "effect groups"
      - Block temperatures in an effect group will count towards each other's max effect limits
      - i.e. if redstone lamps and copper bulbs are part of the same group, redstone lamps will count towards the max number of copper bulbs and vice-versa
      - Implemented via the "effect_group" field in block temperature JSON configs
            - This field takes in a tag ID containing block temps (i.e. "yourpack:yourtag" [no #hashtag])
            - Add your block temp tag to data/<yourpack>/tags/cold_sweat/block/block_temp/<yourtag>.json
            - Include the IDs of the block temps in the tag (i.e. "yourpack:your_block_temp")
- registerByClassName() in TempModifierRegisterEvent now accepts constructor arguments as its last parameter (varargs)
      - These arguments will be passed to the constructor of the modifier class upon creation


------------------------------------------------------------------------------------------------------------------------
2.4-b04b
* Added support for Ad Astra
      - This is an updated and fixed port of Mars Popsicle by igalaxy
* Added UI element displaying food temperature effects
      - Shows a timer for the effect, and its strength
      - Has settings for repositioning and toggling like other UI elements
* When the player has multiple food effects, now only the strongest one will apply
      - Example: if the player eats chicken (+5 heat), then steak (+10 heat), the steak will override the chicken until it expires
      - Hot and cold effects are handled independently,
- Added setting to hide non-essential information in tooltips, such as "Hold [Shift]" prompts

Fixes:
* (1.21) Fixed armor insulation not working
* (1.21) Fixed Cold Sweat armor sets not having durability
- (1.21) Fixed error during startup due to access transformer file name discrepancy
* Fixed performance degradation due to hearths, boilers, and iceboxes not being properly unloaded
- Fixed the insulation tooltip not showing for naturally-insulating armor items
- Fixed waterskin tooltip erroneously saying "Hold [crouch] to drink" when secondary action is set to pour

Technical Changes:
- Added new methods to TempModifier that fire when they are are added/removed on an entity:
      - onAdded/onRemoved: Fires on the TempModifier immediately when it is added/removed
      - onSiblingAdded/onSiblingRemoved: Fires on all other TempModifiers applied to a trait when a new modifier is added/removed
- Added #forge:soul_campfires tag (#c:soul_campfires in NeoForge), which is now used by the block temperature of soul campfires
- CreateRegistriesEvent has been broken up into two events:
      - AddRegistriesEvent: Fires right before Cold Sweat registers its registries to Minecraft's datapack system.
            - Use this event to make new registries. They will now be properly registered as Minecraft registries
      - LoadRegistriesEvent: Drop-in replacement for CreateRegistriesEvent. Has Pre/Post sub-classes that fire at the same stages of registry loading


------------------------------------------------------------------------------------------------------------------------
2.4-b04c
!! There are breaking changes to some configs in this update. See Technical Changes for details
* Armor now drops its insulation upon breaking
- Added option to give filled waterskins more than one use when drinking
* Adjusted how the tooltip for filled waterskins is displayed:
      - No longer shows water temperature in real-world units. This looks arbitrary when the player's body temperature ranges from -100 to 100
      - Instead, shows a "When Used" tooltip showing the actual effect it has on your temperature (between -50 and 50 by default)
- Increased the responsiveness of body temperature UI elements
- The thermometer can now be equipped as a curio by right-clicking

Fixes:
* Fixed crash when creating or loading into a world in some cases
* Fixed crash when placing some blocks near a hearth
* (1.21) Fixed Cold Sweat brewing recipes not working
- (1.21) Fixed visibility toggle options for UI elements appearing inverted
- (1.21) Fixed KubeJS registry system not working
- (1.21) Fixed on-screen water droplets not being lit correctly
* Fixed drying items turning into air instead of the proper result item after first use
- Fixed frozen hearts still regenerating
- Fixed Create backtank draining all the time
- Fixed potential inconsistencies in config synchronization between servers and clients
- Fixed "maxEffect" parameter not working for cold block temperatures in TOML configs

Technical Changes:
! Renamed all instances of "carried item temperature" to "item temperature". This includes:
      - Java: ItemCarryTempData -> ItemTempData
      - JSON: item/carried_temp -> item/item_temp
      - KubeJS: addCarriedItemTemperature() -> addItemTemperature()
      - TOML: "Carried Item Temperatures" -> "Item Temperatures"
      * TOML configs will be RESET. Please back up TOML configs before updating
      * JSON configs will not work until they are put in the new directory. No formatting changes are required
! Formatting changes to numerical ranges in NBT
      - Now separated by a colon (:) instead of a hyphen (-)
            - This is to enable the use of negative numbers, which was previously not possible
            - Example: {"Damage": "5-10"} -> {"Damage": "5:10"}
      - Now support boundless ranges
            - Example: {"Damage": "5:"} means 5 or more, {"Damage": ":10"} means 10 or less
- Added "forge:has_hot_water" biome tag ("c:has_hot_water" in NeoForge)
      - Water in these biomes will heat up the player, rather than cooling them down
      - (1.21) the Hot Springs biome from Biomes O' Plenty is now part of this tag by default


------------------------------------------------------------------------------------------------------------------------
2.4-b04d
- Made water droplets more evenly distributed when the player emerges from water
- Water droplets are now tinted to the biome's water color
- Waterskins now make the player wet when poured

Fixes:
* Fixed potential crash due to duplicate registries
* Fixed crash when carrying temperature-affecting items


------------------------------------------------------------------------------------------------------------------------
2.4-b05a
* Redesigned some parts of the hearth, boiler, and icebox GUIs
      - New fuel gauge textures that are more in line with Vanilla
      - Less prominent particle visibility toggle button
      - Tweaked the position & design of redstone current indicators
- Tweaked textures for several other things:
      * Items:
          - Chameleon Molt
          - Chameleon Scale Armor
          - Goat Fur Parka
          - Hoglin Hide Armor
          - Hearth
          - Insulated Minecart (very slightly)
          - These changes are a mix of general design improvements and more closely aligning them with the Vanilla style
      * Blocks:
          - Boiler, Icebox
      * UI:
          - World temperature gauge (both with and without thermometer)
! Changed armor item IDs to follow the normal helmet/chestplate/leggings/boots convention
      - i.e. cold_sweat:goat_fur_parka is now cold_sweat:goat_fur_chestplate
      - The word "scale" is now omitted from chameleon armor IDs; i.e. cold_sweat:chameleon_scale_helmet -> cold_sweat:chameleon_helmet
      - Old configs targeting these IDs will continue to work, but should be updated when possible
      - Existing items in worlds will be automatically converted to the new IDs
- The fuel slot of iceboxes/boilers can no longer be taken from by automation (i.e. hoppers)
      - This makes automation easier and more consistent with Vanilla blocks like furnaces
- Changed wording of "it is freezing/sweltering outside" messages to "it is freezing/sweltering here" for more clarity
- Dried kelp blocks can now be used as fuel in hearths and boilers

Fixes:
* (1.21) Fixed crash when registries are loaded in a certain order; triggered by some mod combinations
* (1.21) Fixed potential crash when KubeJS tries to scan Cold Sweat registries
- (1.21) Fixed recipes that are dependent on other mods trying to load when the mod isn't present
* (1.16) Fixed the top half of a hearth not breaking when the bottom half is broken
* Fixed crash when common-side KubeJS events are fired
* Fixed world temperature increasing/decreasing indefinitely after pouring a waterskin
* Fixed Cold Sweat not compiling from source due to outdated build.gradle dependencies
- Fixed soul stalk not generating more commonly in soul sand valley biomes
- Fixed bed-like blocks setting the player's spawn point when they shouldn't
- Fixed the resulting temperature of TemperatureChangedEvent not being used
- Fixed insulation attribute modifiers not being arranged correctly on the tooltip if some of them have unmet requirements
- Fixed empty "matches" parameter on registry removals returning true for all registries
- Fixed the hearth not accepting items via automation (i.e. hoppers)
- Fixed the icebox not using the proper top texture when placed beneath a smokestack

Technical Changes:
- Added SimpleTempModifier (cold_sweat:simple), a basic TempModifier controlled by NBT
      - Good for use in commands or simple KubeJS implementations
      - Parameters:
            - "Temperature": The value to apply to the entity's temperature
            - "Operation": Any of: add, subtract, multiply, divide, power, root, set, max, min
                  - Augment what the modifier does to the entity's temperature
                  - "set" overrides the entity's temperature with the modifier's value
                  - "max" ensures the entity's temperature is >= the modifier's value
                  - "min" ensures the entity's temperature is <= the modifier's value
      - Changes to the modifier's NBT will be reflected immediately
      - When modifying the NBT in Java or KubeJS, make sure to call markDirty() so the changes are sent to clients
- JSON configs now require a wildcard "*" to apply to all objects in a registry
      - i.e. "items": ["*"] applies to all items
      - Previously, an empty list applied to all objects, which caused issues when some IDs in a list failed to parse
- During config loading, the IDs of registered configs will now be logged instead of their contents
      - "Registered" configs are those which are part of JSON datapacks or added by mods
      - Other configs will log their full contents as before


------------------------------------------------------------------------------------------------------------------------
2.4-b05b
* Chameleons now require player interaction to shed
            - This is to inhibit very easy farming by putting a chameleon on top of a hopper
            - When a chameleon is ready to shed, it will start emitting particles and send a vibration with signal strength 4
            - When the player right-clicks the chameleon, it will shed chameleon molt as normal
                - This can also be done with shears in a dispenser
            - This change can be reverted by enabling "Chameleons Shed Automatically" in entity.toml
- Insulators that require certain criteria can now display a hint in their tooltip
      - i.e. the Create netherite backtank now has the requirement "Wearing full netherite diving suit" in its tooltip
      - JSON: Added a "hint" field that takes two optional arguments:
            * "text": Display static text
            * "key": Use a translation key
            - Usage: "hint": {"text": "Wearing full iron armor", "key": "tooltip.cold_sweat.example"}
            - Only one of these fields is required
            - If both fields are defined, "key" will be tried first and "text" will be used as a fallback
      - KubeJS: Added "hintText" and "hintKey" methods to insulator builders
- Temperature changes from shade and overcast mechanics are now handled by a single dedicated temperature modifier
      - This change "upgrades" the shade mechanic from being a side-effect of the depth system to a real feature
      - In turn, the depth system now does not count leaf blocks as solid ground
      - The temperature effect of shade/overcast can be configured with the "Shade Temperature Offset" setting, which replaces "Overcast Temperature Offset"
- Added "/temp add" subcommand, which changes the target's body temperature by the specified amount
- Adaptive insulation now adapts at a consistent rate instead of slowing down as it reaches its target
- (1.16) Improved the reliability of tooltip image insertions, especially when other mods are installed
- Switching to spectator mode now sets your body temperature to 0
- Decreased the temperatures of some cold biomes that generate ice, so the ice doesn't immediately melt
- When hovering over an insulation item, holding SHIFT now shows its exact numerical insulation value
    
Fixes:
* Fixed crash when loading user JSON configs (from the configs folder) if they contain modded dynamic registries (modded dimensions, biomes, etc.)
* Fixed several potential crashes when configs contain invalid IDs
* Fixed some client-side config settings not persisting when changed in the in-game config menu
* Fixed components requirements not working for items that have registry data in their components (i.e. enchantments)
* Fixed jerking/bouncing motions when camera is swaying due to overheating
* Fixed ice creating water when broken in the Nether
* Fixed the wildcard type ("*") in JSON configs always returning false
- Fixed Create backtank not draining pressure when providing heat resistance
- Fixed temperature decrease due to altitude being calculated incorrectly due to formatting issues
- Fixed heat fog not moving smoothly as the player's temperature changes
- Fixed slowness due to freezing also affecting motion from external sources (explosions, knockback, etc.)
- Fixed client-side temperature effects being applied twice in singleplayer
- Fixed water droplet trails scaling incorrectly at certain GUI scale settings
- Fixed filled waterskin having the incorrect item texture when its temperature is below -50

Technical Changes:
* The "items" field in JSON item requirements, and "entities" field in entity requirements, are now required
      - This is because configs now do nothing if these fields are empty
- Enum-type config fields in JSON are now case-insensitive (previously required lower-case)
      - Examples of field types affected:
            - Temperature Units (i.e. "f", "C", "Mc")
            - Temperature Type (i.e. "world", "CORE", "fReEzInG_pOiNt")
            - Config Type (i.e. "toml", "JSON", "KubeJS")
            - Slot Type (i.e. "head", "CHEST", "Inventory")
- The "class" parameter is no longer required when creating custom registries
! Custom Cold Sweat registries are now officially unsupported in 1.18
      - This is because 1.18's registry loading system disallows initializing registries outside the standard time during mod loading
      - Because not all mods have been loaded yet at this stage, there is no guarantee that all registries will load successfully
- Custom registries are now loaded during startup immediately after mods are loaded, instead of upon joining a world/server
- Blocks which are affected by the "Cold Soul Fire" setting are now controlled by the "forge:soul_fire" tag ("c:soul_fire" in NeoForge)
      - Any blocks in this tag will have their temperatures inverted if the setting is enabled


------------------------------------------------------------------------------------------------------------------------
2.4-b05c

Fixes:
* Fixed crash due to failed/incomplete mod initialization in other mods when Cold Sweat is present

Technical Changes:
- Registry access in RegistryHelper is now captured before biome modifiers are applied


------------------------------------------------------------------------------------------------------------------------
2.4-b05d
* Added new block textures to the hearth for when it is burning hot fuel or has cold fuel
- Increased the time it takes to fully acclimate from 15 minutes to 1 hour
- Minecart insulation can now be crafted with fur instead of wool
- Changed the keybind to show the numerical insulation value of an item from SHIFT to CTRL

Fixes:
* (1.21) Fixed crash on servers due to client-only class being loaded
* Fixed smart/automatic behavior for the hearth, boiler, and icebox not working properly in many cases
* Fixed attributes in curio insulators not being applied
- Fixed chameleon shed state sometimes breaking when the entity is saved

Technical Changes:
- Improved the reliability of "required_mods" in JSON configs
! Rearranged/simplified some methods in ItemInsulationManager
     - Some methods have been removed or renamed. See the code for details
- Armor crafting and repair materials are now handled by tags:
     - Hoglin: #forge:leathers/hoglin
     - Goat Fur: #forge:furs/goat
     - Chameleon: #forge:scales/chameleon


------------------------------------------------------------------------------------------------------------------------
2.4-b05e
* Water temperature is now biome-dependent
      - Each biome has its own "water_temp" field in JSON
      - Can also be set in toml by adding a parameter after the "units" parameter
      - Setting this is optional. If unset, a default water temperature will be used
- Default water temperature and soak speed are now configurable in world.toml
      - "Soak speed" controls how fast the player becomes wet
      - Rain soak speed and water soak speed are individually configurable
- Removed "un-crafting" recipes for packed ice and blue ice
      - These recipes were arbitrary and could lead to duplication with some mods

- Fixes:
* Fixed crash when hearth-like blocks try to spawn particles and the size of their area of effect is zero
* Fixed hearth-like blocks only expanding to about 1/6 of their maximum volume
* Fixed recipes that require leather not being craftable
* (1.16) Fixed missing texture for the overlay when the player is freezing
- Fixed the "biome", "dimension", and "structure" fields in location requirement JSON requiring lists instead of a single element

Technical Changes:
* Added "/coldsweat dumpconfigs" command, which dumps all loaded config data into the "config/coldsweat/dump" directory
      - Useful for debugging or when making datapacks
* Expanded the registry removal system into a new system called "registry modifiers"
      - Registry modifiers can edit the data of existing configs, or disable them like before
      - A registry modifier contains a list of operations, which support the following:
            - "disable": Disables the config (same as before)
            - "replace": Replaces a field with the given data
            - "merge": Merges the given data with the existing data, with the new data overwriting the existing data
                  - If the data contains a list, the new list will be appended to the existing list
            - "append": Merges the given data without overwriting any existing data
                  - Does not affect lists
            - "remove": Removes the specified keys from the config. Also supports removing list elements
      ! Because this new system introduces formatting changes, existing registry removal configs will need to be updated
      * See the documentation for formatting guides and examples


------------------------------------------------------------------------------------------------------------------------
2.4-b06a
* Added command: "/coldsweat reload"
      - Reloads all configs (TOML, JSON, KubeJS) live, without having to rejoin the world or restart the server
- Tweaked water droplet trails to not be so long in colder temperatures
- Removed the cooldown when filling waterskins
- Added option to change the opacity of water droplets on-screen
      - Slightly reduced opacity by default
- Rearranged some config settings in the in-game menu to be less cramped and more organized

Fixes:
* Fixed crash when using registry modifiers in some cases
- Fixed the hearth, boiler, and icebox not emitting anything if redstone power was applied before fueling the block
- (1.21) Fixed waterskins only being stackable to 1 after being emptied in some cases
- Fixed desync between client and server when heating/cooling items in the boiler or icebox

Technical Changes:
- Added minTemp and maxTemp fields to item temperature and entity temperature configs
      - These changes apply to TOML, JSON, and KubeJS


------------------------------------------------------------------------------------------------------------------------
2.4-b06b

Fixes:
* Fixed crash when inserting fuel into a hearth, icebox, or boiler in some cases
* Fixed the "units" field in block temperature TOML configs not being respected
      - Also fixes blocks being many times hotter or colder than they should be
- Fixed the top half of the hearth appearing after a slight delay when placing


------------------------------------------------------------------------------------------------------------------------
2.4-b06c
* Added integration with JEI
      - Insulation items have "sewing" recipes, showing how they can be applied to armor
      - Fuel items for the hearth, boiler, and icebox have recipes showing how long they last
* Added temperature properties to some components from Create:
      - Pipes and fluid tanks now emit temperature if they contain fluids that emit temperature
      - Boilers now emit temperature based on the temperature of the water inside them
      - Blaze burners now emit heat when fueled
- The netherite jetpack from Create: Stuff n' Additions now grants 90% heat dampening when the full set is worn
- Create's netherite backtank no longer provides cold protection by default
* (1.21) Added compatibility with Weather, Storms, & Tornadoes mod
      - This functionality is ported from 1.20 now that the mod is available for 1.21
- (1.21) Updated KubeJS support to version 2101.7.2-build.348
- Adjusted the fuel values of some items:
      - Coal: 37 -> 55
      - Logs: 37 -> 40
      - Dried Kelp Block: 92 -> 40
      - Coal Block: 333 -> 500
      - Snow Block: 100 -> 40
      * These changes will be applied automatically upon updating
- Being wet now extinguishes fire, and being on fire now dries the player
- Added setting to change how often the player takes damage when overheating/freezing
      - This is the base value, which will still be increased when the player is in very extreme temperatures
- Changed the name of "Temperature Damage" to "Temp. Damage" so it fits better in the config menu
- Adjusted the temperature of plains biomes to be warmer at night
- Adjusted the temperature of river biomes to match plains biomes

Fixes:
* Fixed hunger draining due to trying to regenerate frozen health
* Fixed temperature effects affecting players in creative or spectator mode
- Fixed item temperatures not working in curio slots
- Fixed temp region configs sometimes not taking precedence over the default configuration
* Fixed half-frozen hearts rendering incorrectly in some cases
- Fixed item temperatures not working when configured to be in the "hand" slot
- Fixed TOML item temperature configs being reset if the "tempLimit" argument is defined
- Fixed insulation tooltip sometimes extending past the tooltip background
- Fixed the "Nullify in Peaceful" setting being incorrect named "Damage Scaling" in the TOML config
- (1.21) Fixed the hearth accepting non-fuel items
- (1.20+) Fixed shields and other equipable non-armor items being accepted in the sewing table
- (1.16) Fixed the shiver effect behaving differently at different framerates

Technical Changes:
- The "fillSlots" setting for insulator KubeJS configs now defaults to "true" for consistency with other config formats
- Food temperatures now have the ability to stack
      - If multiple of the same item are consumed, their temperature effects will stack
      - The maximum number of stacks can be controlled, and defaults to 1 (no stacking)
- TOML configs are now re-parsed when using the "/coldsweat reload" command
      - Before, Cold Sweat relied on Forge's built-in config tracker, which didn't always detect updates to files


------------------------------------------------------------------------------------------------------------------------
2.4-b06d
- Added compatibility with Boatload:
      - Furnace boats now emit temperature if fueled
- Furnace minecarts now emit temperature if fueled

Fixes:
* Fixed items not increasing the fuel gauge of hearths, boiler, and iceboxes
* Fixed negatable lists in JSON requiring all entries to pass by default (instead of only one)
- Fixed soul fire blocks having no temperature effect limit
- Fixed dimensions with fixed time still having day/night temperatures
- Fixed the hearth appearing black when updating from a version prior to 2.4-b05d
- Fixed the "Default Water Temperature" setting saving incorrectly when configs are saved
- Fixed entities not emitting heat when on fire


------------------------------------------------------------------------------------------------------------------------
2.4-b06e
- The temperature underground is now 60 °F instead of 75 °F

Fixes:
* (1.21) Fixed error when loading compat for Create: Stuff n' Additions

Technical Changes:
* Some (breaking) changes to how TempModifiers are added to players:
      - The new formatting is outlined in a post on the Momo Softworks Discord server. Documentation will be updated early next year
      - These changes are done to simplify the way TempModifiers are added and make it more flexible/extensible
      - Duplicate modifier handling is now part of the Placement, rather than being dedicated parameters in the addModifier() method
      - The "Duplicates" enum has been renamed to "Matcher"
      - Compressed all 5 addModifier() overloads down to just one method:
            - addModifier(entity, modifier, trait, placement)
            - There is also a helper method for replaceOrAddModifier
- The hearth/boiler/icebox now store fuel as a simple integer instead of fluid stacks
      - Keeps the system simple and allows for multiple fuel types to be used interchangeably
      - Saved fuel data will be loaded and converted automatically upon updating


------------------------------------------------------------------------------------------------------------------------
2.4-b06f
- Packed ice can now be instantly mined with an efficiency V diamond pickaxe or faster
- Water droplets no longer display if the player is fully immune to water

Fixes:
* (1.16) Fixed crash when starting a dedicated server
* (1.21) Fixed disconnection when hovering over an enchanted item in some cases
* Fixed "ConcurrentModificationException" crash when caching entity temperature data in some cases
- (1.21) Fixed sewing table GUI having darker overlay than other GUIs
- (1.21) Fixed ice creating water when mined with an incorrect tool that has silk touch (i.e. wooden pickaxe)
- Fixed block temperature configs not applying correctly when multiple are defined for the same block


------------------------------------------------------------------------------------------------------------------------
2.4-b06g
- The Frostward and Fireward rings from Iron's Spellbooks now give buffs that allow the player to survive in colder/hotter climates
- Renamed some attribute modifiers for better clarity:
      - "Cold/Heat Tolerance" -> "Freezing/Overheating Threshold"
      - "Cold/Heat Dampening" -> "Cold/Heat Tolerance"
      - "Freezing/Heatstroke Resistance" -> "Freeze/Overheat Damage Resistance"

Fixes:
* Fixed duplication glitch in the sewing table by swapping the input armor item before taking the result
* Fixed sudden loss of player temperature data in some cases
* Fixed screen stretching in some cases when the heat blur effect is applied
* Fixed visual temperature effects not being nullified by fire and ice resistance in some cases
- Fixed mod armor items not having the proper item tags
* Fixed error when executing "/coldsweat dumpconfigs" on a dedicated server
- Fixed attribute modifiers that lower the player's freezing point being shown as "harmful"
- Fixed water potentially freezing and thawing at incorrect temperatures
- Fixed the "/temp debug" command showing temperature units for temperature traits that don't use units
- Fixed the Space Helmet from Ad Astra giving doubled effects, and the Space Pants giving none


------------------------------------------------------------------------------------------------------------------------
2.4.1
* Added compatibility with Sable (Create: Aeronautics)
      - Block temperature and air-conditioning blocks now work like normal when part of contraptions
* Made some changes to chameleons:
      * Chameleons will now shed naturally after 5 minutes of no player interaction
            - No items will be dropped if they shed naturally
      * Added new ambient, hurt, and shedding sounds
- Rivers no longer impact biome temperature
* Item temperatures how have tooltips explaining their effects, as well as which inventory slots they apply to
* The temperature effects of waterskins are now fully controlled by TOML configs
      - Its temperature when held in the player's hotbar is controlled by an Item Temperature config
      - Its temperature when used/consumed is controlled by a Food Temperature config
- Adjusted the temperatures of most blocks to be more extreme
- Food temperature JSON and KubeJS configs can now add temperature modifiers to the player
      - Refer to the updated documentation for examples

Fixes:
* (1.21) Fixed soulspring lamps obtained by crafting or upgrading from a pre-2.4 world not draining fuel
* (1.21) Fixed partially-unimplemented compatibility for Weather, Storms, & Tornadoes mod]
* (1.21) Fixed crash when inserting a potion into the hearth
- (1.16-1.19) Fixed the "overflow" insulation tooltip not showing text
* Fixed crash when an air-conditioning block's smokestack is blocked
* Fixed memory leak in which entities that had left the world were not released from memory
- Fixed clientside lag caused by calculating temperature for other players on servers
- Fixed "midpoint" in temperature regions not returning the right temperature
- Fixed the player receiving the effects of being in shade when their feet are inside a block
- Fixed tempLimit not working for TOML block configs in some cases if the temperature is a negative number
- Fixed chameleons sometimes being attacted to players who are not holding tempting items
- Fixed chameleons sometimes going invisible when they shouldn't

Technical Changes:
! TempModifier.calculate() is no longer called for other players/entities in the world on the clientside
      - This dramatically reduces unnecessary clientside load in many cases, as clientside temperature calculations aren't used for anything
* Added new system for configs, temporarily called "value getters"
      - In place of most static values, a function that retrieves data from the entity/item can be defined instead
      - For example, a food item's temperature can be based on NBT data on the item, rather than being a static number
      - Some examples of this system can be seen in the new waterskin configs
- TempModifiers are now serialized/deserialized via a codec rather than NBTHelper methods
      - Old player data will be automatically converted to the new format upon loading


------------------------------------------------------------------------------------------------------------------------
2.4.2
- Updated Spanish translation (thanks Jeshua on GitHub)
- Added support for using Immersive Engineering's external heater with boilers and hearths (thanks manhtuan on GitHub)
- Updated Thirst Was Taken support to target Thirst Was Reclaimed instead

Fixes:
* (1.16-1.20) Fixed temperature data persisting and/or becoming frozen after dying or changing dimensions
- (1.19-1.20) Fixed error logs about Cold Sweat packets
- (1.16) Fixed structure-related configs not working
* Fixed temperature not emitting from blocks that are part of Sable (Create: Aeronautics) objects
* Fixed KubeJS insulator configs not working properly in some cases
- Fixed some cases in which tooltips would flicker when hovering over items