Cold Sweat

Cold Sweat

Mod

Adds a fitting and difficult temperature system to Minecraft, plus more!

Client and server AdventureEquipmentGame Mechanics

141.2k downloads
267 followers
Follow Save
90% of ad revenue goes to creators. Go ad-free while supporting creators with Modrinth Plus. Subscribe today!
Filter loader...
Filter versions...
Filter channels...
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
  • ! Minecraft 1.21.1 is now the minimum supported version for 1.21. The "base" version is no longer compatible
    • NeoForge minimum 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.3.12

  • !! 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

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:
  • (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

  • 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:
  • 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:
  • 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


Project members

Mikul

Owner

Details

Licensed GPL-3.0-or-later
Published a year ago
Updated 4 days ago