2.3.9
* item_settings/entity_settings/world_settings.toml have been renamed to item/entity/world.toml
- Existing files will be automatically migrated
* Added new config settings to the in-game menu:
- Insulation Strength
- Check Sleep Conditions
- New settings for the hearth/boiler/icebox
- The rate at which water freezes is now affected by randomTickSpeed if "Custom Freezing Behavior" is enabled
- Insulation attributes with unmet requirements are now shown with a red strikethrough, rather than being omitted from the tooltip
- Added config options for the maximum range and volume of the hearth, boiler, and icebox individually to world.toml
Fixes:
- Fixed the hotbar tooltip for filled waterskins not having a negative symbol for cold temperatures
- Fixed thermal source blocks (hearth/boiler/icebox) not consuming fuel items immediately upon being inserted
Technical Changes:
* Added KubeJS support
- Added events for adding insulators, block temps, biome temps, etc; as well as TempModifiers
- Added several Cold-Sweat-related methods that can be accessed from the "coldsweat" binding
- Added a few other events for specific Cold Sweat actions. This list will grow over time
- See the mod's documentation page for more details
* Added "remove" config type, which allows for the removal of registered config settings that match a given data structure
- This includes TOML and JSON configs
- Removals are handled after all of the config settings are parsed, but before they are committed to memory
- Removals will not directly change the config files; only whether they are loaded
* Any JSON configs named "default" will now be loaded last
- This allows for configs to have a default value that can be overridden by other mods/datapacks/configs
* Massive internal registry standardization and boilerplate reduction
- Internal registries and configs are now much more standardized, with fewer points of failure
- Codecs are used wherever possible for data serialization, rather than bespoke methods
- Many of the config holders have been updated to hold custom data types, rather than unorganized tuples (like Pairs and Triplets)
* Cold Sweat configs that rely on dynamic registries now use Holders for their keys
- This includes biomes, dimensions, structures, etc.
- For example, ConfigSettings.BIOME_TEMPS is now a DynamicHolder<Map<Holder<Biome>, BiomeTempData>>
- Any methods that previously accepted an "unwrapped" value now accept a Holder instead
- These changes will only affect direct interactions via Java; not JSON or KubeJS
- ItemRequirements and EntityRequirements can now take in a Predicate<ItemStack> and Predicate<Entity> respectively
- These allow for absolute control over the conditions for insulators, entity temperatures, etc.
- These requirements are now calculated on the server, and the results are sent to the client
- Defining biome temperatures with only one temperature value is no longer supported in TOML configs
- All configs that accept items, blocks, biomes, etc. will now accept comma-separated lists and #tags if they previously didn't
2.3.8
* Added new textures for when a filled waterskin is hot or cold
- Removed the Far Lands and Modulo custom music tracks
- Added option to expand all collapsible tooltips by default
- Added a "trait" argument to the /temperature set & get sub-commands
Fixes:
* (1.18 - 1.19) Fixed crash when rendering the heatstroke blur effect
- (1.21) Fixed command parameters for temperature trait arguments not working properly
Translation Updates:
- Updated Russian translation (Heimdallr-1 on GitHub)
Technical Changes:
* Several major changes have been made to how block requirements and block_temps work in JSON
- Much better support for blockstates and a slight change to NBT
- See the online documentation for the new syntax
* Added new methods to TempModifiers: markDirty(), markClean(), isDirty()
- A TempModifier being "dirty" indicates that it should be synchronized to the client
- Dirty TempModifiers will be automatically synchronized via Temperature.updateModifiers(), then marked clean
- All methods for adding TempModifiers in the Temperature class now return a boolean indicating if the operation was successful
- Added addModifierById() method to GatherDefaultTempModifiersEvent
- Adds a modifier based on its registered ResourceLocation ID (useful for mod compat!)
* Added removeModifiers() method to GatherDefaultTempModifiersEvent
- The hearth, icebox, and boiler now use fluid tags for fueling:
- cold_sweat:hot
- cold_sweat:cold
2.3.7
* (1.20 - 1.21) Added compat for "Oh the Biomes We've Gone"
- Tweaked the temperatures for 39 biomes from the mod
- Chameleons now spawn in appropriate biomes from the mod
! world_settings.toml will need to be reset for these new temperature to apply
* Added (partial) compat for Vaklyrien Skies
- Temperature emitted from blocks placed on a ship will now properly affect the player
- More compatibility will be added in future updates
- (1.16) Goats now drop 1-2 mutton when killed
Fixes:
* Fixed crash on servers when rendering particles in some cases
- Fixed crash when updating configs from pre-2.3 versions if "Block Temperatures" is configured in a particular way
- Fixed the icebox's opening animation not synchronizing to all players on a server
- Fixed some particles not spawning for all players on a server when they should
* (1.16) Fixed custom mob spawning not working
- (1.18) Fixed chameleons spawning on invalid blocks
- (1.21) Fixed damage from freezing/overheating dealing knockback
Technical Changes:
* Implemented a new rendering manager (PostProcessShaderManager) to handle Cold Sweat's shaders
- Circumvents Minecraft's normal post-processing shader system to improve compat and allow for stacking of shader effects
* Removed deprecated methods from the Temperature and GatherDefaultTempModifiersEvent classes
* Java-based BlockTemps' min/max effect, min/max temp, range, and fade are now fields instead of just method return values
- These fields are now part of the constructor
- The existing methods will return the values of these fields by default, but can still be overridden with no additional changes necessary
- The old BlockTemp(Block... blocks) constructor is still present, and will initialize all other fields to a default value
* BlockTemp fading over distance is now handled outside the getTemperature() method, in BlockTempModifier
- This means you will no longer need to calculate the fade yourself and can simply return the temperature of the block
! For BlockTemps that still calculate the fade in the old way, the new fade will still be applied on top of the old one
- This isn't too bad, but it means the block will weaken exponentially
2.3.6
- Particles spawned by Cold Sweat are now dependent on the player's particle setting (All/Decreased/Minimal)
- Cold Sweat's custom ice breaking mechanics can now be disabled with the "Custom Ice Drops" setting in world_settings.toml
- Added config setting to disable Cold Sweat's TempModifiers (or those from other mods)
- TempModifiers control how temperature affects the player, so this will hopefully provide some more granular control over that
- Removed the "Cave Insulation Strength" config setting, as it is no longer used
- Reduced the underground temperature near y -64 so the player no longer overheats
- Removed the total resistance to block temperature provided by the Create netherite diving suit
Fixes:
* (1.21) Fixed crash when saving insulated armor items
* (1.20) Fixed crash when Serene Seasons 9.1 or newer is installed
- Serene Seasons support now requires version 9.1 or newer to be enabled
* Fixed crash when "Insulation Strength" is set to 0
* Fixed dynamic dimension_type tags not loading properly on servers
* Fixed feeding a chemeleon dropping the entire item stack from the player's hand
- Fixed insulation from mounts ignoring the "Insulation Strength" setting
- Fixed the world temperature indicator briefly displaying incorrectly when changing preferred units
- Fixed spectators getting wet in water
- Fixed being underwater counting as "underground" when calculating world temperature
- Fixed the "condition" field of JSON BlockTemp config files not supporting checking block states
- Fixed TOML-based block temperatures not checking NBT properly
- Fixed air not being consumed from Create's netherite backtank when in a sweltering environment
- (1.20 - 1.21) Fixed debug message showing when a tooltip containing adaptive insulation is displayed
- (1.16) Fixed the hearth debug visualizer rendering red outlines around solid blocks
Translation Updates:
* Added Japanese translation (Mohuzato on GitHub)
Technical Changes:
* (1.20) Dropped NeoForge support in favor of normal Forge, which is receiving more updates
* The TempModifierEvent.Calculate.Override/Modify events have been renamed to Pre/Post
- These events are functionally similar, but Pre has some changes:
- The event now has getFunction() and setFunction() methods for setting the resulting function before it is calculated
- The event must be cancelled for the function to be overwritten
* Changed the packages of some events for better organization:
- TempModifierEvent: api.event.common.temperature
- EnableTemperatureEvent: api.event.core.init
- GatherDefaultTempModifiersEvent: api.event.core.init
- BlockTempInitEvent: api.event.core.registry
- TempModifierRegisterEvent: api.event.core.registry
- EdiblesRegisterEvent: api.event.core.registry
- BlockStateChangedEvent: api.event.core.vanilla
- ChatComponentClickedEvent: api.event.core.vanilla
- EntityPickEvent: api.event.core.vanilla
- LivingEntityLoadAdditionalEvent: api.event.core.vanilla
- ServerConfigsLoadedEvent: api.event.core.vanilla
* Added InsulateItemEvent:
- Fired when an armor item is being insulated
- The insulator item can be modified before being applied to the armor
- The event can also be cancelled to prevent the insulation from being applied
* Added TickInsulationEvent:
- Fired when the player's equipment insulation is processed
- Allows for granular control over the insulation being provided by sources like armor, insulators, curios, and protection
- The event can be cancelled to prevent the insulation from applying to the player