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

Cold Sweat

Mod

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

Client and server AdventureEquipmentGame Mechanics

880.1k downloads
548 followers

Cold Sweat 2.4

Changelog

2.4

Mod Compatibility Changes:
  • 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
  • Expanded/Tweaked integration with 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
    • 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)
  • Added integration with Iron's Spells & Spellbooks:
    • The Frostward and Fireward rings now give buffs that allow the player to survive in colder/hotter climates
  • Added integration with Boatload:
    • Furnace boats now emit temperature if fueled
    • For parity, furnace minecarts now also emit temperature if fueled
  • Added integration with Ad Astra:
    • This is an updated and fixed port of Mars Popsicle by igalaxy
  • Added integration with Regions Unexplored:
    • Added custom temperatures to many biomes
  • Added integration with Soul Fire'd:
    • When an entity is burning from soul fire, it will now emit cold
    • This is an entity_temp defined via JSON
  • Added integration with 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
  • 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
New armor set: Chameleon Scale:
  • Crafted with chameleon molt in typical armor patterns
  • Visually adapts to the ambient temperature
  • Each armor piece provides 20% more than maximum adaptive insulation
  • Cannot be insulated in the sewing table
Smokestack Changes:
  • 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)
  • Changed the smokestack recipe:
    • No longer require redstone to craft
    • Now gives 4 smokestacks
      • This is more efficient with resources and will hopefully clue players into the fact that multiple can be connected together
Insulation Changes:
  • 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
  • Armor now drops its insulation upon breaking
  • 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
  • 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
  • Insulation-granting armors (leather, hoglin hide, goat fur, chameleon scale) 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 by 20%
    • This incentivizes players to
  • Adaptive insulation now adapts at a consistent rate instead of slowing down as it reaches its target
  • Minecart insulation can now be crafted with fur instead of wool
Hearth, Boiler & Icebox Changes:
  • The hearth/boiler now emit warm air particles from their smokestacks, rather than smoke
  • 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
  • Moved the hearth's fluid intakes to coincide with its fuel inputs
  • 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
  • Dried kelp blocks can now be used as fuel in hearths and boilers
  • 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
  • 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 Sprout/Stalk Changes:
  • 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
  • Soul stalks now grow twice as fast, and bear soul sprouts 60% more often
  • Soul sprouts can now be planted with dispensers
  • Removed sticks from the loot table for soul stalk
  • Glowstone can now be used to "bonemeal" soul stalks (#cold_sweat:grows_soul_stalk)
    • It can also be applied by a dispenser
  • Soul stalk now generates more commonly in the soul sand valley biome
Texture Changes:
  • Added new block textures to the hearth for when it is burning hot fuel or has cold fuel
  • 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 sewing table block and GUI textures
  • 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)
      • Ice Resistance icon
Water-Related Changes:
  • Water droplets are now tinted to the biome's water color
  • Water droplets caused by being wet now only show on the sides of the screen to reduce obstruction
  • Made water droplets more evenly distributed when the player emerges from water
  • Water droplets no longer display if the player is fully immune to water
  • Tweaked water droplet trails to not be so long in colder temperatures
  • Added option to change the opacity of water droplets on-screen
    • Slightly reduced opacity by default
  • Being wet now extinguishes fire, and being on fire now dries the player
  • Waterskins now make the player wet when poured
  • Removed the cooldown when filling waterskins
World Temperature Changes:
  • The temperature underground is now 60 °F instead of 75 °F
  • Adjusted the temperature of plains biomes to be warmer at night
  • Adjusted the temperature of river biomes to match plains biomes
  • Decreased the temperatures of some cold biomes that generate ice, so the ice doesn't immediately melt
  • 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
  • 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"
  • 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
Player Temperature Changes:
  • 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
  • Switching to spectator mode now sets your body temperature to 0
Misc. Changes:
  • The heart of the sea inside the soulspring lamp is now animated
  • Changed wording of "it is freezing/sweltering outside" messages to "it is freezing/sweltering here" for more clarity
  • Packed ice can now be instantly mined with an efficiency V diamond pickaxe or faster
  • Removed "un-crafting" recipes for packed ice and blue ice
    • These recipes were arbitrary and could lead to duplication with some mods
  • The thermometer can now be equipped as a curio by right-clicking
  • Increased ice resistance potion durations:
    • Normal length: 90 seconds -> 3 minutes
    • Extended length: 3 minutes -> 6 minutes
  • Soul fire now deals contact damage (like normal fire)
  • Naturally-generated igloos are no longer warmer inside
  • Changed the sewing table recipe to be consistent with other workstations (like the smithing table)
  • If the player is on fire and wet, they will now be extinguished and dried off
  • Eating temperature-affecting foods now properly replaces the preexisting 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
Advancement Changes:
  • 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"
UI Changes:
  • 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
  • Increased the responsiveness of body temperature UI elements
  • The icon of the input slot in the sewing table now switches between leather and shears to indicate that shears can be used
  • The body temperature readout (with a thermometer) now shows a gradient rising from the bottom as the player's temperature exceeds 100/-100
  • ID Changes:-
  • ! 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
    • 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
Config Changes:
  • 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
  • ! Renamed all instances of "carried item temperature" to "item temperature":
    • TOML: "Carried Item Temperatures" -> "Item Temperatures"
    • TOML configs will be RESET. Please back up TOML configs before updating
  • 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
  • Insulation tooltips can now be configured to show under specific circumstances (client.toml):
    • "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
  • The primary (right-click) and secondary (sneak-right-click) actions for the waterskin are now configurable (client.toml):
    • 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
  • Added setting to change how often the player takes damage when overheating/freezing (main.toml)
    • This is the base value, which will still be increased when the player is in very extreme temperatures
  • The "Require Thermometer" and "Fire/Ice Resistance Immunity" settings have been moved to item.toml
  • 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
  • Changed the name of "Temperature Damage" to "Temp. Damage" so it fits better in the config menu
  • Rearranged some config settings in the in-game menu to be less cramped and more organized
  • Default water temperature and soak speed are now configurable (world.toml)
    • "Soak speed" controls how fast the player becomes wet
    • Rain soak speed and water soak speed are individually configurable
  • 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
  • Added option to give filled waterskins more than one use when drinking
  • Lava temperature is now TOML-based so it can be more easily changed
Command Changes:
  • Added command: "/coldsweat reload"
    • Reloads all configs (TOML, JSON, KubeJS) live, without having to rejoin the world or restart the server
  • Added command: "/coldsweat dumpconfigs"
    • Dumps all loaded config data into the "config/coldsweat/dump" directory
    • Useful for debugging or when making datapacks
  • The "modify" subcommand for /temperature has been renamed to "attribute"
  • Added "add" subcommand for /temperature
    • Increases/Decreases the target's body temperature by the specified amount
  • Added "modifier" subcommand for /temperature
    • Enables adding/removing temperature modifiers on entities
Tooltip Changes:
  • Some insulators that require certain criteria 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
    • Implementation of this system is explained in the "Technical Changes" section
  • When hovering over an insulation item, holding CTRL now shows its exact numerical insulation value
  • 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)
  • (1.16) Improved the reliability of tooltip image insertions, especially when other mods are installed
Entity Changes:
  • 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
  • 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
  • Entities caught on fire will now heat up the nearby area
    • You can also warm yourself up this way!

Technical Changes:

General:
  • 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
Tags:
  • Chameleons will now target and eat any entities in the #cold_sweat:chameleon_eats tag
  • Create backtank pressure now drains if the player has any insulator equipped that is in the #drains_backtank tag and passes its requirements
  • Added #forge:soul_campfires tag (#c:soul_campfires in NeoForge), which is now used by the block temperature of soul campfires
  • 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
  • Armor crafting and repair materials are now handled by tags:
    • Hoglin: #forge:leathers/hoglin
    • Goat Fur: #forge:furs/goat
    • Chameleon: #forge:scales/chameleon
    • These tags are in the "c" domain in 1.21 (i.e. "c:furs/goat")
JSON:
  • ! The "data" field in item JSON configs has been renamed to "item" for consistency with other configs
  • ! (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
  • ! Renamed all instances of "carried item temperature" to "item temperature" (item/carried_temp -> item/item_temp)
    • JSON configs will not work until they are put in the new directory. No formatting changes are required
  • 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 requirements themselves)
    • The "old" format of these arguments will continue to be supported (i.e. "entity":{"entities":[#minecraft:skeletons]})
  • 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
  • The "matches" field in registry modifiers 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 modifiers can now choose which config types to target via the "config_type" field
    • Accepts a list of strings ("toml", "json", or "kubejs")
  • Registry modifiers now support targeting 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
  • JSON configs can now use a wildcard "*" to apply to all objects in a registry
    • i.e. {"items": ["*"]} applies to all items
  • 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")
  • 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
  • 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
  • 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")
  • The min/max temperature fields in block temperature JSON are now world temp requirements
  • Added "temperature" field to location requirement
  • Insulators can now have a "hint" that is displayed if their requirements are not met.
    • 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
  • 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" and "location" to entity spawn biome configs:
    • "count": The number of entities that can spawn in a group
    • "location": A negatable list of location requirements that must be met for the entity to spawn
  • 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 if its total insulation is more than 2 (reverts the new "one item per slot" system)
    • This is "true" by default
  • (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
  • All JSON configs that start with the word "default" will be loaded last, rather than just the ones named "default"
  • 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)
  • Added "logarithmic" (boolean) field to block temp configs
    • Makes a block deliver "diminishing returns" as more of them are present around the player
  • Block requirements now accept a list of enum properties when checking block state (i.e. "type": ["top", "bottom"])
  • ! 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
KubeJS:
  • ! Renamed all instances of "carried item temperature" to "item temperature"
    • In ModRegistriesEvent: addCarriedItemTemperature() -> addItemTemperature()
  • Added entity temperature, spawn biome, and insulating mount configs support to KubeJS
  • Insulators can now have a "hint" that is displayed if their requirements are not met.
    • Added "hintText" and "hintKey" methods to insulator builders:
      • hintText: Text to be displayed
      • hintKey: A translation key for the text to be displayed
      • Only one of these fields is required
      • If both fields are defined, "hintKey" will be tried first and "hintText" will be used as a fallback
  • Added "logarithmic" (boolean) field to block temp configs
    • Makes a block deliver "diminishing returns" as more of them are present around the player
  • Added convert() method to KubeJS (mirror of the method from the Temperature class)
  • KubeJS configs are now passed through the normal config pipeline
    • They are now present in CreateRegistriesEvent
    • They can now be targeted by registry modifiers
Java:
  • ! 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
  • ! Rearranged/simplified some methods in ItemInsulationManager
    • Some methods have been removed or renamed. See the code for details
  • ! Removed Temperature#getTemperatureAt(), since it was moved to WorldHelper in 2.3.10
  • 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
  • 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
  • TemperatureChangedEvent now fires every time an entity's temperature changes, instead of only when it is changed manually
  • 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
  • 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 but more performant than getTemperatureAt()
  • 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
  • Custom registries are now initialized during startup immediately after mods are loaded, instead of upon joining a world/server
  • 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
  • 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

Files

ColdSweat-2.4.jar(2.47 MiB) Primary Download
ColdSweat-2.4-sources.jar(1.55 MiB) Download

External resources


Project members

Mikul

Owner


Technical information

License
GPL-3.0-or-later
Client side
required
Server side
required
Project ID