2.3.12
Technical Changes:
- !! WARNING: This version of Cold Sweat is not confirmed to be stable. Serious bugs might occur!
- 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
- Ice freezing/thawing changes:
- 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 rate at which water freezes is now affected by randomTickSpeed if "Custom Freezing Behavior" is enabled
- 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
- The Water Effects config setting now has 4 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
- item_settings/entity_settings/world_settings.toml have been renamed to item/entity/world.toml
- Existing files will be automatically migrated
- Added "remove" config type, which allows for the removal of registered config settings
- This includes TOML and JSON configs
- Removals are handled after all of the config settings are parsed, but before they are committed to memory
- Added new config settings:
- Insulation Strength
- Check Sleep Conditions
- New settings for the hearth/boiler/icebox
- Maximum range and volume settings for each thermal source individually
- Fuel consumption rate when applying warmth/frigidness
- Toggle for Create backtank pressure loss in hot/cold environments
- 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
- Insulation attributes with unmet requirements are now shown with red strikethrough, rather than being omitted
- 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
- Piglins now accept the thermometer as a bartering item
- Goats can now be sheared by a dispenser
Technical Changes:
- 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
- Cold Sweat configs that rely on dynamic registries now use Holders for their keys
- This includes biomes, dimensions, structures, etc.
- Any methods that previously accepted an "unwrapped" value now accept a Holder instead
- 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
- Added "cold_sweat:extends_smokestack" block tag, which defines what blocks can be used to increase the height of a smokestack
- Temperature units are now supported for seasonal temperatures and block temperatures
- Existing configs will be automatically updated to match the new format
- Added FetchSeasonsModsEvent, which allows mod developers to signal that Cold Sweat should load the appropriate seasonal configs
- Added InsulatorTabBuildEvent, which allows for simple modifications to the items in the insulator tab
- Added support for Just Enough Effect Descriptions
2.3.12
Technical Changes:
The following is the changelog for updates 2.3.9 - 2.3.12
- Ice freezing/thawing changes:
- 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 rate at which water freezes is now affected by randomTickSpeed if "Custom Freezing Behavior" is enabled
- 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
- The Water Effects config setting now has 4 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
- item_settings/entity_settings/world_settings.toml have been renamed to item/entity/world.toml
- Existing files will be automatically migrated
- Added "remove" config type, which allows for the removal of registered config settings
- This includes TOML and JSON configs
- Removals are handled after all of the config settings are parsed, but before they are committed to memory
- Added new config settings:
- Insulation Strength
- Check Sleep Conditions
- New settings for the hearth/boiler/icebox
- Maximum range and volume settings for each thermal source individually
- Fuel consumption rate when applying warmth/frigidness
- Toggle for Create backtank pressure loss in hot/cold environments
- 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
- Insulation attributes with unmet requirements are now shown with red strikethrough, rather than being omitted
- 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
- Piglins now accept the thermometer as a bartering item
- Goats can now be sheared by a dispenser
Technical Changes:
- 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
- Cold Sweat configs that rely on dynamic registries now use Holders for their keys
- This includes biomes, dimensions, structures, etc.
- Any methods that previously accepted an "unwrapped" value now accept a Holder instead
- 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
- Added "cold_sweat:extends_smokestack" block tag, which defines what blocks can be used to increase the height of a smokestack
- Temperature units are now supported for seasonal temperatures and block temperatures
- Existing configs will be automatically updated to match the new format
- Added FetchSeasonsModsEvent, which allows mod developers to signal that Cold Sweat should load the appropriate seasonal configs
- Added InsulatorTabBuildEvent, which allows for simple modifications to the items in the insulator tab
- Added support for Just Enough Effect Descriptions
2.3.12
Fixes:
Technical Changes:
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.3.11
Fixes:
Technical Changes:
- 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 attribute modifier tooltips always having an insulation icon, even if they aren't added by insulation
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.10
Fixes:
Technical Changes:
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 around
- 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.10
Fixes:
Technical Changes:
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 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 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
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 around
- 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.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