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?)
FrozenLib

FrozenLib

Mod

A library for FrozenBlock's mods.

Client and server Library

1.07M downloads
153 followers
Filter loader...
Filter versions...

2.5-mc26.2

on Jun 17, 2026
Download
  • Removed the permanent field from FireData.
  • Revamped FireTypes to be much more flexible. Their new data structure and functionality is as follows:
    • source_settings:
      • fire_source_blocks: A block's ID, a list of block IDs, or a Block Tag defining which blocks use this Fire Type. (i.e, Fire, Campfire, Torch.)
      • supporting_blocks: A block's ID, a list of block IDs, or a Block Tag defining which blocks support this Fire Type on top of them.
    • damage_settings:
      • damage: The amount of damage to inflict while burning.
      • vulnerable_damage The amount of damage to inflict while an entity who is vulnerable to this Fire Type is burning.
      • vulnerable_entity_types: An entity type ID, a list of entity type IDs, or an Entity Type Tag defining which entity types are vulnerable to this Fire Type.
      • damage_immune_entity_types: An entity type ID, a list of entity type IDs, or an Entity Type Tag defining which entity types are immune to damage from this Fire Type.
    • spread_settings:
      • spreads_from_zombie_attack: Whether this Fire Type can be spread to the victim of a burning Zombie's attack.
      • spreads_from_ignite_enchantments: Whether this Fire Type can be spread to the victim of an attack of a burning entity using an enchantment that ignites entities.
      • replaceable_by_other_fire_types: Whether this Fire Type can be replaced by another Fire Type while burning.
      • always_apply_to_entity_types: An entity type ID, a list of entity type IDs, or an Entity Type Tag defining which entity types will always use this Fire Type while burning.
      • cannot_apply_to_entity_types: An entity type ID, a list of entity type IDs, or an Entity Type Tag defining which entity types cannot use this Fire Type.
    • textures:
      • texture_0: The first texture to use for this Fire Type.
      • texture_1: The second texture to use for this Fire Type, also used for the first-person burning overlay.
    • particle_settings:
      • smoke_particle: The ParticleOptions to use for this Fire Type's smoke.
      • large_smoke_particle: The ParticleOptions to use for this Fire Type's large smoke.
      • smoke_config_predicate: A ConfigPredicate, optionally used to dictate whether smoke_particle and large_smoke_particle can be used.
      • campfire_cosy_smoke_particle: The ParticleOptions to use for this Fire Type's campfire cosy smoke.
      • campfire_signal_smoke_particle: The ParticleOptions to use for this Fire Type's campfire signal smoke.
      • campfire_smoke_config_predicate: A ConfigPredicate, optionally used to dictate whether campfire_cosy_smoke_particle and campfire_signal_smoke_particle can be used.
      • lava_particle: The ParticleOptions to use for this Fire Type's lava particle (Used for campfires.)
      • lava_config_predicate: A ConfigPredicate, optionally used to dictate whether lava_config_predicate can be used.
    • config_predicate: A ConfigPredicate, optionally used to dictate whether this Fire Type can be used.
  • Removed the built-in frozenlib:soul_fire FireType.
  • Added a builder for Fire Types to make their creation much simpler.
  • Added the FireEvents class, containing the following Events:
    • SELECT_FIRE_TYPE
    • Is triggered when an Entity is catching on fire and the FireType is being selected.
    • Is used to modify the FireType to be set.
    • AFTER_FIRE_TYPE_SET
      • Is triggered after the FireType is set on an Entity.
    • ON_ENTITY_BURN_TICK
      • Is triggered each time an Entity is burnt from a fire lingering on them.
    • SELECT_FIRE_BLOCK_STATE
      • Is triggered when a Fire block is selecting which BlockState to place as.
      • Is used to modify the BlockState to be set.
  • Added ClipGroups.
    • Clip Groups define a list of blocks that crosshair clipping can pass through, while inside one of their blocks.
      • For example, while inside Wilder Wild's Mesoglea, Mesoglea blocks are no longer selected and you can attack entities and place/break blocks as normal.
    • Added the frozenlib:clip_group dynamic registry.
      • Each Clip Group simply contains a block's ID, a list of block IDs, or a Block Tag.
  • Added the WaterLikeBlock interface.
    • Is used to create blocks that have water-like properties, such as Wilder Wild's Mesoglea.
    • Can optionally support Bubble Columns.
    • Provides different particles and a fog color to use in place of Water's.
    • Added the frozenlib:water_like_type dynamic registry.
      • Provides a block's ID, a list of block IDs, or a Block Tag that list the blocks within a specific Water-Like Type.
      • Provies swimming, splashing, enter, exit, and ambient loop sounds to use for the Water-Like Type.
  • Added ConfigPredicates!
    • Provides a way to utilize config from a data-driven context.
    • These are modeled after Mojang's BlockPredicates, aiming to be easy to utilize in Data Packs.
    • Multiple predicate types are available, including:
      • any_of: Returns true if any of the contained ConfigPredicates returned true.
      • all_of: Returns true if all the contained ConfigPredicates returned true.
      • all_match: Returns true if all the contained ConfigPredicates returned the same value.
      • not: Returns true if the contained ConfigPredicate returns false.
      • exists: Returns true if the a ConfigEntry with the provided ID exists.
      • true: Always returns true.
      • The primary five predicate types are as follows:
        • equal_to: Returns true if the ConfigEntry's value matches the target value.
        • greater_than: Returns true if the ConfigEntry's value is greater than the target value.
        • greater_than_or_equal_to: Returns true if the ConfigEntry's value is greater than or equal to the target value.
        • less_than: Returns true if the ConfigEntry's value is less than the target value.
        • less_than_or_equal_to: Returns true if the ConfigEntry's value is less than or equal to the target value.
        • These all share the same two fields:
          • entry: The target ConfigEntry's ID.
          • target: The value the target ConfigEntry's value is being compared with.
    • Can be used as a BlockPredicate via the asBlockPredicate method.
    • Can be used as a PlacementFilter via the asPlacementFilter method.
    • Can be used as a LootItemCondition via the asLootCondition method.
    • Can be used as a ConditionSource via the asConditionSource method.
  • Added the ConfigSelector Configured Feature, configured with ConfigSelectorFeatureConfiguration:
    • config_predicate: The ConfigPredicate to use.
    • feature_if_true: The PlacedFeature to be placed if config_predicate returns true.
    • feature_if_false: The PlacedFeature to be placed if config_predicate returns false.
  • Refactored and renamed many worldgen-related classes to be more consistent with Vanilla.
  • ColumnWithDiskFeatureConfiguration now uses two BlockStateProviders instead of a BlockState and Block Tag.
  • Renamed the block_state_provider field to block_state and the stop_when_encountering_unreplaceable_block field to stop_at_unreplaceable_block in ColumnFeatureConfiguration.
  • Removed FrozenLibGrassColorModifiers, as this functionality is redundant thanks to Enum Extensions in Fabric Loader 0.19+.
  • Block Sound Type Overwrites have been removed, and replaced with a newer version that utilizes Dynamic Registries.
    • We understand this may upset some players, but the Resource Pack functionality would cause sound type desyncs between the server and client.
    • The new system will allow players to accomplish the same results, but via Data Pack!
  • Added the SoundTypeOverride, containing the following fields:
    • blocks: A block's ID, a list of block IDs, or a Block Tag that the sound_type applies to.
    • sound_type: The SoundType to be used.
      • volume: The volume to use.
      • pitch: The pitch to use.
      • break_sound: The break sound to use.
      • step_sound: The step sound to use.
      • place_sound: The place sound to use.
      • hit_sound: The hit sound to use.
      • fall_sound: The fall sound to use. Notice a pattern?
    • config_predicate: An optional field, supplying a ConfigPredicate that determines whether the override can be used.
  • Added the frozenlib_sound_type_override Dynamic Registry.
  • The frozenlib_config reload Command now provides completion suggestions and requires Game Master permissions to use.
  • Added the frozenlib_config_client Command, allowing clients to use config commands locally without affecting the server.
  • Renamed FrozenClothConfig to FrozenLibClothConfigGuiHelper.
  • Added multiple new helper methods to FrozenLibClothConfigGuiHelper.
  • Renamed PlayerStructureStatus to StructureStatus.
  • Revamped the way StructureStatuses are handled and sent to the client.
    • These now rely on Fabric's Attachment system, ultimately leading to the removal of custom networking & mixins related to syncing them.
    • Added a debug text entry option to display current statuses.
  • Revamped Structure-based Music.
    • StructureMusic is now serializable and its contents have changed, containing the following fields:
      • structures: A structure's ID or a list of structure IDs that music will play within.
      • background_music: The BackgroundMusic to play.
      • must_be_inside_piece: Whether the Player must be located inside a StructurePiece for music to play.
      • config_predicate: An optional field, supplying a ConfigPredicate that determines whether the music can be played.
    • Added the frozenlib:structure_music Dynamic Registry.
  • Added the frozenlib:controlled_note Particle Type, which takes an Integer as a parameter to use for the particle's color.
  • Added colored variants of Smoke and Campfire Smoke Particles, using ColoredSmokeParticleOptions.
    • These particles will start off with a tint, and fade back into their Vanilla coloration.
  • Removed the frozenlib:biome_tag_condition_source and frozenlib:optimized_biome_tag_condition_source Surface Rule ConditionSources, as they are redundant.
  • Added SulfurCubeUtilAndEvents, containing the following events:
    • ON_INTERACT
    • ON_ARCHETYPE_DATA_REMOVE
    • ON_ARCHETYPE_APPLY
    • ON_POWER_CHANGED
    • ON_PUSH_SOUND_PLAYED
    • ON_PUSH
    • ON_HIT
    • ON_SQUISH
  • Added the AbstractBlockLikeMob, used to create Mobs that render like Blocks and rotate as they move.
    • Based upon 26w14a's implementation.
    • Renders using the model of the provided BlockState it is given.
  • Added the NoOpModel, in cases a LivingEntityRenderer is required but no Model is wanted.
  • Revamped Spotting Icons.
    • Refactored all classes into the entity package.
    • Spotting Icons now render as part of the game's HUD.
    • Removed the frozenlib:spotting_icon_predicate Registry.
    • Removed SpottingIconPredicates.
    • Spotting Icons now use Fabric's Data Attachment system, using the SpottingIcons class.
      • This class contains methods to add, remove, and check a predicate against its Spotting Icons.
    • An Entity can now have multiple Spotting Icons at once.
    • Spotting Icons a much more flexible fading system.
      • A custom start and end value can now be defined.
      • Fades can be used for both the Icon's scale and transparency.
  • Migrated server texture packets to use Fabric's packet splitter.
  • Revamped FrozenLib Cape implementation.
    • Migrated to Fabric's Data Attachment system and Render State Data Keys.
    • Fixed a bug that caused a Player's FrozenLib Cape to not sync to clients when joining a server.
  • Revamped Screen Shake implementation.
    • Migrated to Fabric's Data Attachment system and Fabric's Level Tick Event instead of using separate mixins.
    • Screen Shakes can now have a "minimum distance", which will override the calculated distance to the Screen Shake if it is lower than this.
    • Added a Builder for Screen Shakes.
    • Screen Shakes no longer have separate implementation for Levels and Entities, now being universal and easy to use for both.
    • Updated the frozenlib screenshake command and its feedback.
  • Revamped Wind implementation.
    • Migrated to Fabric's Data Attachment system.
    • ClientWindManager has been removed and WindManager is now used on both the server and client.
    • Removed the ability and config option to use Wind on the client without a server that has Wind.
    • WindManagerExtensions now use a registry instead of a list.
    • WindDisturbances have been completely revamped, using Fabric's Data Attachment system and allowing for the creation of custom WindDisturbanceTypes for more dynamic usage.
  • Revamped Moving Sound Manager implementation.
    • Migrated to Fabric's Data Attachment system.
    • MovingSoundTypes can now be registered to FrozenLib's new frozenlib:moving_sound_type Registry.
    • Each MovingSoundType handles the ticking (and optionally removal) of each sound per-entity, similar to the original sound managers.
    • Thanks to these changes, multiple mixins and duplicate implementations have been removed.
  • Added the frozenlib:moving_sound_manager Dynamic Registry.
  • Removed the Warden Spawn Tracker config option, as the command can now be enabled in Vanilla via launch arguments.
  • Refactored the loot package into the item package.
  • Refactored the recipe package into the item package.
  • Added Fire Types.
    • Fire Types control the amount of damage an entity will take and the textures to use while on fire.
    • A data-driven registry is used to create Fire Types:
      • blocks: An ID, a list of IDs, or a tag of Blocks that correspond to the Fire Type. (e.g., Fire and Campfire)
      • damage: The amount of damage the Fire Type will inflict.
      • spreads_from_zombie: Whether the Fire Type can be spread from Zombie attacks.
      • spreads_from_ignite_enchantments: Whether the Fire Type can be spread from Enchantments that ignite entities.
      • replaceable: Whether this Fire Type can be overriden by another upon contact.
      • texture_0: The first Fire overlay texture.
      • texture_1: The second Fire overlay texture, also used in first-person view.
  • Added the frozenlib:default_fire_blocks Block Tag, containing the Fire and Campfire blocks by default.
  • Added the frozenlib:soul_fire_blocks Block Tag, which is empty by default.
  • Added the itemToPatternMappings method to DecoratedPotPatternRegistryEntrypoint.
    • Removed SherdRegistry.
  • Added the frozenlib:scares_piglin Entity Type tag.
  • Added the frozenlib:blazes Entity Type tag.
  • Added the frozenlib:hoglins Entity Type tag.
  • Added the frozenlib:ghost_like Entity Type tag.
  • Fixed a critical issue that prevented DataFixing from working as intended.
  • Cleaned up the implementation of multiple DataFixer helpers.
  • Fixed a critical issue that prevented DataFixing from working as intended.
  • Cleaned up the implementation of multiple DataFixer helpers.

2.4.3 (26.1)

on Mar 26, 2026
Download
  • Restored modmenu-specific features.

2.4.2 (26.1)

on Mar 24, 2026
Download
  • Fixed the structure_upgrade command.

2.4.1 (26.1)

on Mar 24, 2026
Download

Server Textures

  • ServerTextures now support .jpeg files!
    • Files ending in .mcphoto will also be treated as .jpeg files.
    • All methods pertaining to finding files for ServerTextures will no longer work if a file extension is included in the fileName parameter.
      • Instead, an automatic search has been added which looks for matching file names, ending in the .png, .jpeg, and .mcphoto extensions respectively.
      • When a match is found, it will be read.
  • FileTransferPackets now require a list of file extensions for requests.
    • This lets modders request files that could have a different file extension (e.g., photos ending in .png or .jpeg.)
    • Transfers are untouched, and still require the file extension to be part of the fileName parameter.
      • Please refrain from using the fileExtensions parameter when sending transfers, only use it for requests.
  • Updated the whitelisted file extensions for file requests and transfers.
    • .png, .jpeg, .mcphoto, .json.
  • Fixed a bug that could occur when running a dedicated server from the same directory a client is running from, which is connected to the dedicated server.
    • ServerTextures would continuously request their texture file while the server would continuously send it, resulting in the file being constantly rewritten and never read as a texture.
  • Added BuiltInBlockModelRegistry, helping modders register their own built-in Block models.

Added the brand new Config V2!

The goal of Config V2 is to substantially improve performance, memory usage, and network usage overall, while maintaining FrozenLib's unique config features.

Multiple issues that would result in players being kicked, crashing, or experiencing lag have all been fixed.

Config Entries

  • Contain an id, Entry Type, default value, and properties.
  • The id is used for naming the Entry.
    • Entry names can be anything you'd like, with / being used as a way to "nest" entries.
    • For example, "test/sectionA/1" and "test/sectionA/2" would both be encoded to and parsed from an array in the config file, namely "sectionA".
    • However, an Entry with the id "test/sectionB/1" would be nested in its own array, "sectionB".
    • Nesting can occur recursively.
    • Do note that giving an Entry the same name as a nest array will cause issues, please avoid doing so.
  • The Entry Type is a new class, providing a Codec and Stream Codec for the Entry to use.
    • Config entries are now encoded and decoded with codecs, opposed to writing present data to a file and hoping the encode/decode will return the anticipated result.
    • As a result of this, it is now possible to use much more complex classes in configs without issues.
    • Stream codecs are now used for config syncing, instead of sending the entire config file over the network.
      • This both significantly improves network performance and also cuts down on packet sizes tremendously, eliminating an edge-case that could kick players.
  • The default value is of course, the default value the Entry will use when unchanged.
  • Entry properties contain a few fields to control the behavior of an Entry.
    • The syncable field determines whether the Entry is able to sync between clients and servers.
    • The modifiable field determines whether the config modification system can be used on the Entry.
    • The comment field provides an optional comment that can be saved alongside the Entry.
      • Depending on the file type used, this will be saved either as:
        • An array containing the Entry's value and the comment.
        • A comment, not affecting the file's structure.
    • The visibilityPredicate field is optional, and determines whether the entry will be accessible in the config screen (only implemented for Cloth Config).
    • The textSupplier field is optional, and determines what text should be used for the entry's values in the config screen (only implemented for Cloth Config).
    • The requireRestart field is optional, and determines whether the entry will prompt Cloth Config's restart screen.

Config Data

  • Config Data provides the base id for all config entries, as well as the file path to save the config file to.
  • Config Entries are created using an existing Config Data instance.
    • This is done to ensure Entries can be saved to their respective files, and won't get mixed up or lost.
  • Config Settings are provided, determining what file type to use for the config.
  • ServerTextures now support .jpeg files!
    • Files ending in .mcphoto will also be treated as .jpeg files.
    • All methods pertaining to finding files for ServerTextures will no longer work if a file extension is included in the fileName parameter.
      • Instead, an automatic search has been added which looks for matching file names, ending in the .png, .jpeg, and .mcphoto extensions respectively.
      • When a match is found, it will be read.
  • FileTransferPackets now require a list of file extensions for requests.
    • This lets modders request files that could have a different file extension (e.g., photos ending in .png or .jpeg.)
    • Transfers are untouched, and still require the file extension to be part of the fileName parameter.
      • Please refrain from using the fileExtensions parameter when sending transfers, only use it for requests.
  • Updated the whitelisted file extensions for file requests and transfers.
    • .png, .jpeg, .mcphoto, .json.
  • Fixed a bug that could occur when running a dedicated server from the same directory a client is running from, which is connected to the dedicated server.
    • ServerTextures would continuously request their texture file while the server would continuously send it, resulting in the file being constantly rewritten and never read as a texture.
  • Added BuiltInBlockModelRegistry, helping modders register their own built-in Block models.
  • ServerTextures now support .jpeg files!
    • Files ending in .mcphoto will also be treated as .jpeg files.
    • All methods pertaining to finding files for ServerTextures will no longer work if a file extension is included in the fileName parameter.
      • Instead, an automatic search has been added which looks for matching file names, ending in the .png, .jpeg, and .mcphoto extensions respectively.
      • When a match is found, it will be read.
  • FileTransferPackets now require a list of file extensions for requests.
    • This lets modders request files that could have a different file extension (e.g., photos ending in .png or .jpeg.)
    • Transfers are untouched, and still require the file extension to be part of the fileName parameter.
      • Please refrain from using the fileExtensions parameter when sending transfers, only use it for requests.
  • Updated the whitelisted file extensions for file requests and transfers.
    • .png, .jpeg, .mcphoto, .json.
  • Fixed a bug that could occur when running a dedicated server from the same directory a client is running from, which is connected to the dedicated server.
    • ServerTextures would continuously request their texture file while the server would continuously send it, resulting in the file being constantly rewritten and never read as a texture.

Added the brand new Config V2!

The goal of Config V2 is to substantially improve performance, memory usage, and network usage overall, while maintaining FrozenLib's unique config features.

Multiple issues that would result in players being kicked, crashing, or experiencing lag have all been fixed.

Config Entries

  • Contain an id, Entry Type, default value, and properties.
  • The id is used for naming the Entry.
    • Entry names can be anything you'd like, with / being used as a way to "nest" entries.
    • For example, "test/sectionA/1" and "test/sectionA/2" would both be encoded to and parsed from an array in the config file, namely "sectionA".
    • However, an Entry with the id "test/sectionB/1" would be nested in its own array, "sectionB".
    • Nesting can occur recursively.
    • Do note that giving an Entry the same name as a nest array will cause issues, please avoid doing so.
  • The Entry Type is a new class, providing a Codec and Stream Codec for the Entry to use.
    • Config entries are now encoded and decoded with codecs, opposed to writing present data to a file and hoping the encode/decode will return the anticipated result.
    • As a result of this, it is now possible to use much more complex classes in configs without issues.
    • Stream codecs are now used for config syncing, instead of sending the entire config file over the network.
      • This both significantly improves network performance and also cuts down on packet sizes tremendously, eliminating an edge-case that could kick players.
  • The default value is of course, the default value the Entry will use when unchanged.
  • Entry properties contain a few fields to control the behavior of an Entry.
    • The syncable field determines whether the Entry is able to sync between clients and servers.
    • The modifiable field determines whether the config modification system can be used on the Entry.
    • The comment field provides an optional comment that can be saved alongside the Entry.
      • Depending on the file type used, this will be saved either as:
        • An array containing the Entry's value and the comment.
        • A comment, not affecting the file's structure.
    • The visibilityPredicate field is optional, and determines whether the entry will be accessible in the config screen (only implemented for Cloth Config).
    • The textSupplier field is optional, and determines what text should be used for the entry's values in the config screen (only implemented for Cloth Config).
    • The requireRestart field is optional, and determines whether the entry will prompt Cloth Config's restart screen.

Config Data

  • Config Data provides the base id for all config entries, as well as the file path to save the config file to.
  • Config Entries are created using an existing Config Data instance.
    • This is done to ensure Entries can be saved to their respective files, and won't get mixed up or lost.
  • Config Settings are provided, determining what file type to use for the config.

External resources


Project members

FrozenBlock

FrozenBlock

Organization


Technical information

License
GPL-3.0-only
Client side
required
Server side
required
Project ID