Changelog
2.4
Mod Compatibility Changes:
Technical Changes:
General:
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
- 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
- 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
- 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
- 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 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
- 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
- Items:
- 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
- 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
- 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
- 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
- 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"
- 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
- 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
- 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
- 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
- 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
- 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")
- ! 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")
- Examples of field types affected:
- 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 a "hint" field that takes two optional arguments:
- 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
- Now separated by a colon (:) instead of a hyphen (-)
- ! 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 "hintText" and "hintKey" methods to insulator builders:
- 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
- ! 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
- AddRegistriesEvent: Fires right before Cold Sweat registers its registries to Minecraft's datapack system.
- 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
External resources
Project members
Mikul
Owner
Technical information
License
GPL-3.0-or-later
Client side
required
Server side
required
Project ID
