Перейти к содержимому
Mineforgian

InsaneLib

A set of common classes and utilities used by Insane's mods

1.2M загрузок27 подписчиковLicenseRef-All-Rights-Reservedforgeneoforge

Обновлён 5 июля 2026 г. · опубликован 15 ноября 2022 г.

InsaneLib is a library mod that contains common classes for Insane's mods as well as some utilities classes.

 

Current features:

  • Module and Feature classes.
  • Replaces the boring area effect clouds with a 3d spherical version of them
  • A fix feature containing a removal for "zombies bonus health" attribute modifier, a fix for MC-145656 and a fix for players begin able to jump even when unable to move (e.g. with high level slowness)
  • A tag feature, currently featuring only a tag for creepers that makes them create fire on explosion
  • Utility classes
    • Logger
    • RandomHelper
    • Utils (that currently has only searchEnum) 

Версии

ВерсияКаналИграЗагрузчикиДатаСкачать
2.4.20.1Релиз1.21.1neoforge5 июля 2026 г..jar (1.1 МБ)
2.4.20.0Релиз1.21.1neoforge4 июля 2026 г..jar (1.1 МБ)
2.4.19.0Релиз1.21.1neoforge3 июля 2026 г..jar (1.1 МБ)
2.4.18.3Релиз1.21.1neoforge25 июня 2026 г..jar (1.1 МБ)
1.23.4.6Релиз1.20.1forge23 июня 2026 г..jar (361 КБ)
2.4.18.2Релиз1.21.1neoforge23 июня 2026 г..jar (505 КБ)
1.23.4.5Релиз1.20.1forge22 июня 2026 г..jar (361 КБ)
2.4.18.1Релиз1.21.1neoforge22 июня 2026 г..jar (505 КБ)
2.4.18.0Релиз1.21.1neoforge13 июня 2026 г..jar (505 КБ)
2.4.17.2Релиз1.21.1neoforge12 июня 2026 г..jar (504 КБ)
2.4.17.1Релиз1.21.1neoforge12 июня 2026 г..jar (504 КБ)
2.4.17.0Релиз1.21.1neoforge12 июня 2026 г..jar (501 КБ)
2.4.16.0Релиз1.21.1neoforge24 мая 2026 г..jar (499 КБ)
2.4.15.1Релиз1.21.1neoforge23 мая 2026 г..jar (497 КБ)
2.4.15.0Релиз1.21.1neoforge3 мая 2026 г..jar (497 КБ)

Показаны последние 15 из 105 версий. Все версии — на Modrinth.

Ченджлог

2.4.20.1Релиз1.21.1 · 5 июля 2026 г.

2.4.20.1

  • Fixed item components not being applied to connected clients

2.4.20.0

2.4.19.0

2.4.18.3

  • Fixed some items modified via Item Components not stacking

2.4.18.2

  • Crash fix

2.4.18.1

Technical

  • Optimized ModNBTData

2.4.18.0

Technical

  • Added ObjTag#getAllObjects

2.4.17.2

  • Startup crash fix

2.4.17.1

  • Allow picking up items from anvil with 0 cost and don't render cost label when 0

2.4.17.0

Technical

  • Added CreativeTabsUtils with methods to add items to a creative tab before or after another item, or remove an item from a creative tab

2.4.16.0

  • Added ILRangedAttribute
    • Same as a RangedAttribute, but the descriptionId is calculated from the attribute id and can define a baseId.

2.4.15.1

  • Fixed Item components' programmatic providers overwriting each-other

2.4.15.0

  • Fixed a NeoForge bug that caused global_loot_modifiers.json to not respect the order of the loot modifiers

2.4.14.1

  • Added copper equipment item tags and fixed wooden and golden being wood and gold

2.4.14.0

  • Added GetMaxDamageEvent to modify item's max damage
  • Added Item Tags for equipment by material

2.4.13.1

  • Fixed Integrated resource packs not being enabled by default

2.4.13.0-beta

  • Added block_broken advancement trigger
  • insanelib:enchant_with_treasure
    • Renamed allow_curses and allow_treasure to ignore_curses and ignore_treasures

2.4.12.2-beta

  • Crash fix

2.4.12.1-beta

  • Crash fix

2.4.12.0-beta

Technical

  • Added SerializableMobEffectInstance

2.4.11.0-beta

  • Added insanelib:enchantability item component

2.4.10.0-beta

  • Added merge_components array for item_components
    • Arrays are concatenated, objects are recursively merged, and primitives are overridden.
      This is useful for adding entries to a list component (e.g. appending attribute modifiers) without discarding the item's existing values

2.4.9.3-beta

  • Optimized ModNBTData path parsing to avoid regex overhead on every NBT access

2.4.9.2-beta

Technical

  • Allow ObjTag to use dynamic registries

2.4.9.1-beta

Technical

  • Added JsonFeature#loadAndReadJson overloads for specifying the registry

2.4.9.0-beta

Technical

  • Added back json utilities (ILGsonHelper and validators)

2.4.8.0-beta

Technical

  • Added loot modifiers:
    • insanelib:replace_loot — replaces items in a loot table with another item, optionally copying components (durability, enchantments) and scaling the count
      {
        "type": "insanelib:replace_loot",
        "conditions": [...],
        "original_item": "minecraft:iron_sword",
        "replacement_item": "minecraft:diamond_sword",
        "copy_components": true,
        "count_multiplier": 1.0
      }
      
    • insanelib:inject_loot_table — injects the contents of another loot table into the current one
      {
        "type": "insanelib:inject_loot_table",
        "conditions": [...],
        "loot_table": "minecraft:chests/simple_dungeon"
      }
      
    • insanelib:drop_multiplier — multiplies the count of matching items in loot
      {
        "type": "insanelib:drop_multiplier",
        "conditions": [...],
        "item": "minecraft:wheat",
        "multiplier": 2.0
      }
      
    • insanelib:loot_purger — removes or damages items based on distance from world spawn; useful for progressive loot difficulty
      {
        "type": "insanelib:loot_purger",
        "conditions": [...],
        "end_range": 5000,
        "start_range": 0,
        "multiplier_at_start": 0.0,
        "apply_to_damageable": false,
        "blacklisted_items_tag": "insanelib:loot_purger_blacklist",
        "blacklisted_entity_type_tag": "insanelib:loot_purger_entity_blacklist"
      }
      
      Items are progressively purged the closer to spawn the loot generates. At start_range the survival chance is multiplier_at_start, at end_range it is 1. apply_to_damageable damages items proportionally instead of removing them.
    • insanelib:disenchant — removes enchantments from all items; enchanted books become plain books
      {
        "type": "insanelib:disenchant",
        "conditions": [...],
        "blacklisted_items_tag": "insanelib:disenchant_blacklist"
      }
      
  • Added loot functions:
    • insanelib:enchant_randomly_weightless — enchants an item with a given number of random enchantments, each chosen with equal probability (no weight). Supports books.
      {
        "function": "insanelib:enchant_randomly_weightless",
        "conditions": [...],
        "count": 2,
        "max_lvl": false,
        "treasure": false
      }
      
      count: number of enchantments to apply (supports number providers). max_lvl: always apply the maximum level. treasure: allow treasure enchantments (tag minecraft:treasure).
    • insanelib:enchant_with_treasure — applies a single random treasure enchantment to the item. Supports books.
      {
        "function": "insanelib:enchant_with_treasure",
        "conditions": [...],
        "ignore_curses": false,
        "ignore_treasures": false
      }
      
      ignore_curses: exclude curse enchantments (tag minecraft:curse). ignore_treasures: exclude non-curse treasure enchantments.
  • Added loot conditions:
    • insanelib:block_tag_match — passes if the broken block is in the given tag (returns true if no block state is in context)
      { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" }
      
    • insanelib:killer_has_advancement — passes if the killing player has completed the given advancement
      { "condition": "insanelib:killer_has_advancement", "advancement": "minecraft:story/mine_diamond" }
      
    • insanelib:non_player_arised_drop — passes if the drop was not caused by a player, explosion, or tool (i.e. natural mob death without a player killer)
      { "condition": "insanelib:non_player_arised_drop" }
      

2.4.7.1-beta

Technical

  • Fixed self() methods not being @Unique

2.4.7.0-beta

Technical

  • Added ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS to change stacks programmatically

2.4.6.2-beta

Technical

  • Attached sources in the .jar

2.4.6.1-beta

Technical

  • Changed MCUtils.computeFoodFormula variables
    • Removed effectiveness
    • Renamed hunger to nutrition

2.4.6.0-beta

Technical

  • Added back InsaneLib.ONE_DECIMAL_FORMATTER

2.4.5.0-beta

Technical

  • Added MCUtils.computeFoodFormula using EvalEx
  • Added back all the events

2.4.4.0-beta

Technical

  • Added back feature_enabled neoforge condition and loot condition

2.4.3.0-beta

Technical

  • Added back PlayerUseItemMovSpeedEvent and PlayerSprintEvent

2.4.2.0-beta

  • Moved Attack Speed Based Invincibility feature to ISO

2.4.1.1-beta

Technical

  • Fixed concurrent modification exception

2.4.1.0-beta

Technical

  • Ported back ClientUtils

2.4.0.1-beta

  • Attack invincibility frames are now reduced by 10%
  • Fixed invincibility frames not shown on entities if damage was not from an entity or from non-weapon

2.4.0.0-beta

  • Added insanelib:knockback_multiplier data component
    • 0~1 that can reduce the knockback of an item

2.3.1.1-beta

  • Fixed invincibility feature erroring when installed server side only

2.3.1.0-beta

  • Added config option to limit invincibility frames to only faster attack speeds

2.3.0.0-beta

  • Added Attack Speed Based Invincibility feature
    • Makes attack change invincibility frames based off attack speed, so faster attacks will give less invincibility frames and vice versa
    • If installed on the client, they will actually see the red invincibility frames correctly based off attack speed

2.2.2.0-beta

  • Added back /insanelib command, but, more importantly, added a new subcommand get_data_components
    • With /insanelib get_data_components <item> you can get a list of all the data components that are currently applied to the item

2.2.1.0-beta

  • Renamed Item Definitions to Item components (the data pack folder has also changed to item_components)
    • Added remove_components, a list of components to remove from the item
    • Added priority, integer value. When multiple json target the same item, components are merged — higher priority wins per component type.
  • A higher-priority remove overrides a lower-priority set, and vice versa.

2.2.0.0-beta

  • Added Item Definitions feature
    • Use data packs to change items' data components
      E.g. in data/<namespace>/item_definitions/strong_diamond_sword.json will make diamond swords have 50 Attack Damage and 2000 durability
    {
        "item": "minecraft:diamond_sword",
        "components": {
            "minecraft:max_damage": 2000,
            "minecraft:attribute_modifiers": {
                "modifiers": [
                    {
                        "type": "minecraft:generic.attack_damage",
                        "id": "minecraft:attack_damage",
                        "amount": 50.0,
                        "operation": "add_value",
                        "slot": "mainhand"
                    }
                ]
            }
        }
    }
    

2.1.3.0-beta

  • Ported Push Resistance attribute from Enhanced AI

2.1.2.5-beta

  • Crash fix when saving a parsed effect instance

2.1.2.4-beta

  • Fix Network messages again

2.1.2.3-beta

  • Fix Network messages being sent to clients with no mod installed

2.1.2.2-beta

  • Fix ObjTag resolving unknown registry entries as fallback objects

2.1.2.1-beta

  • Fixed missing ObjTagValue.LIST_TYPE

2.1.2.0-beta

  • Added back IdTagValue as ObjTagValue
  • Added ObjTag#asHolder

2.1.1.0-beta

  • Added MCUtils.createPotionStackFromEffectInstances

2.1.0.1-beta

  • Fixed startup crash

2.1.0.0-beta

  • Modules now require Resource Location as identifier
  • You can now use ILModConfig to prevent having to create a config class each mod
    • In the mod class
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(MOD_ID, ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
    • You can also create a single module mod via ILModConfig constructor
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(location("main"), "Main", ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
      Features in single module mods can now omit the module parameter in @LoadFeature
  • Ported more MCUtils functions

2.0.4.0-beta

  • Ported Better Falling Blocks

2.0.3.0-alpha

  • Added Fix Swimmers Swimming Attribute, making Drowned and Fishes use the neoforge swimming speed attribute instead of the vanilla movement speed

2.0.2.1-alpha

  • Player attributes are now empty by default

2.0.2.0-alpha

  • Added Player Attributes feature
    • Directly from Insane's Survival Overhaul, change players attributes with a json in the config folder.
    • By default, it will slightly reduce movement speed and block reach
  • Added back JsonFeature (needed for Player Attributes)

2.0.1.0-alpha

  • Added back MessageCreeperDataSync
    • Creeper data is now automatically synced client-side (if the mod is installed on the client).

2.0.0.5-alpha

  • Fixed "Fix Air Speed.Sprinting Jump Slowdown" being ignored

2.0.0.4-alpha

Port to 1.21.1

This version contains most of the player features (missing Better Falling Blocks) + everything needed to make MPR work.

  • Removed spawn_type tag, neoforge already does that with neoforge:spawn_type NBT Tag
  • Follow range fix now applies to any entity that uses vanilla NearestAttackableTargetGoal and will update everytime the mob tries to find a new target instead of only on spawn
  • Enhanced Fix Air Speed (aka Fix Jump Movement Factor)
2.4.20.0Релиз1.21.1 · 4 июля 2026 г.

2.4.20.0

2.4.19.0

2.4.18.3

  • Fixed some items modified via Item Components not stacking

2.4.18.2

  • Crash fix

2.4.18.1

Technical

  • Optimized ModNBTData

2.4.18.0

Technical

  • Added ObjTag#getAllObjects

2.4.17.2

  • Startup crash fix

2.4.17.1

  • Allow picking up items from anvil with 0 cost and don't render cost label when 0

2.4.17.0

Technical

  • Added CreativeTabsUtils with methods to add items to a creative tab before or after another item, or remove an item from a creative tab

2.4.16.0

  • Added ILRangedAttribute
    • Same as a RangedAttribute, but the descriptionId is calculated from the attribute id and can define a baseId.

2.4.15.1

  • Fixed Item components' programmatic providers overwriting each-other

2.4.15.0

  • Fixed a NeoForge bug that caused global_loot_modifiers.json to not respect the order of the loot modifiers

2.4.14.1

  • Added copper equipment item tags and fixed wooden and golden being wood and gold

2.4.14.0

  • Added GetMaxDamageEvent to modify item's max damage
  • Added Item Tags for equipment by material

2.4.13.1

  • Fixed Integrated resource packs not being enabled by default

2.4.13.0-beta

  • Added block_broken advancement trigger
  • insanelib:enchant_with_treasure
    • Renamed allow_curses and allow_treasure to ignore_curses and ignore_treasures

2.4.12.2-beta

  • Crash fix

2.4.12.1-beta

  • Crash fix

2.4.12.0-beta

Technical

  • Added SerializableMobEffectInstance

2.4.11.0-beta

  • Added insanelib:enchantability item component

2.4.10.0-beta

  • Added merge_components array for item_components
    • Arrays are concatenated, objects are recursively merged, and primitives are overridden.
      This is useful for adding entries to a list component (e.g. appending attribute modifiers) without discarding the item's existing values

2.4.9.3-beta

  • Optimized ModNBTData path parsing to avoid regex overhead on every NBT access

2.4.9.2-beta

Technical

  • Allow ObjTag to use dynamic registries

2.4.9.1-beta

Technical

  • Added JsonFeature#loadAndReadJson overloads for specifying the registry

2.4.9.0-beta

Technical

  • Added back json utilities (ILGsonHelper and validators)

2.4.8.0-beta

Technical

  • Added loot modifiers:
    • insanelib:replace_loot — replaces items in a loot table with another item, optionally copying components (durability, enchantments) and scaling the count
      {
        "type": "insanelib:replace_loot",
        "conditions": [...],
        "original_item": "minecraft:iron_sword",
        "replacement_item": "minecraft:diamond_sword",
        "copy_components": true,
        "count_multiplier": 1.0
      }
      
    • insanelib:inject_loot_table — injects the contents of another loot table into the current one
      {
        "type": "insanelib:inject_loot_table",
        "conditions": [...],
        "loot_table": "minecraft:chests/simple_dungeon"
      }
      
    • insanelib:drop_multiplier — multiplies the count of matching items in loot
      {
        "type": "insanelib:drop_multiplier",
        "conditions": [...],
        "item": "minecraft:wheat",
        "multiplier": 2.0
      }
      
    • insanelib:loot_purger — removes or damages items based on distance from world spawn; useful for progressive loot difficulty
      {
        "type": "insanelib:loot_purger",
        "conditions": [...],
        "end_range": 5000,
        "start_range": 0,
        "multiplier_at_start": 0.0,
        "apply_to_damageable": false,
        "blacklisted_items_tag": "insanelib:loot_purger_blacklist",
        "blacklisted_entity_type_tag": "insanelib:loot_purger_entity_blacklist"
      }
      
      Items are progressively purged the closer to spawn the loot generates. At start_range the survival chance is multiplier_at_start, at end_range it is 1. apply_to_damageable damages items proportionally instead of removing them.
    • insanelib:disenchant — removes enchantments from all items; enchanted books become plain books
      {
        "type": "insanelib:disenchant",
        "conditions": [...],
        "blacklisted_items_tag": "insanelib:disenchant_blacklist"
      }
      
  • Added loot functions:
    • insanelib:enchant_randomly_weightless — enchants an item with a given number of random enchantments, each chosen with equal probability (no weight). Supports books.
      {
        "function": "insanelib:enchant_randomly_weightless",
        "conditions": [...],
        "count": 2,
        "max_lvl": false,
        "treasure": false
      }
      
      count: number of enchantments to apply (supports number providers). max_lvl: always apply the maximum level. treasure: allow treasure enchantments (tag minecraft:treasure).
    • insanelib:enchant_with_treasure — applies a single random treasure enchantment to the item. Supports books.
      {
        "function": "insanelib:enchant_with_treasure",
        "conditions": [...],
        "ignore_curses": false,
        "ignore_treasures": false
      }
      
      ignore_curses: exclude curse enchantments (tag minecraft:curse). ignore_treasures: exclude non-curse treasure enchantments.
  • Added loot conditions:
    • insanelib:block_tag_match — passes if the broken block is in the given tag (returns true if no block state is in context)
      { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" }
      
    • insanelib:killer_has_advancement — passes if the killing player has completed the given advancement
      { "condition": "insanelib:killer_has_advancement", "advancement": "minecraft:story/mine_diamond" }
      
    • insanelib:non_player_arised_drop — passes if the drop was not caused by a player, explosion, or tool (i.e. natural mob death without a player killer)
      { "condition": "insanelib:non_player_arised_drop" }
      

2.4.7.1-beta

Technical

  • Fixed self() methods not being @Unique

2.4.7.0-beta

Technical

  • Added ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS to change stacks programmatically

2.4.6.2-beta

Technical

  • Attached sources in the .jar

2.4.6.1-beta

Technical

  • Changed MCUtils.computeFoodFormula variables
    • Removed effectiveness
    • Renamed hunger to nutrition

2.4.6.0-beta

Technical

  • Added back InsaneLib.ONE_DECIMAL_FORMATTER

2.4.5.0-beta

Technical

  • Added MCUtils.computeFoodFormula using EvalEx
  • Added back all the events

2.4.4.0-beta

Technical

  • Added back feature_enabled neoforge condition and loot condition

2.4.3.0-beta

Technical

  • Added back PlayerUseItemMovSpeedEvent and PlayerSprintEvent

2.4.2.0-beta

  • Moved Attack Speed Based Invincibility feature to ISO

2.4.1.1-beta

Technical

  • Fixed concurrent modification exception

2.4.1.0-beta

Technical

  • Ported back ClientUtils

2.4.0.1-beta

  • Attack invincibility frames are now reduced by 10%
  • Fixed invincibility frames not shown on entities if damage was not from an entity or from non-weapon

2.4.0.0-beta

  • Added insanelib:knockback_multiplier data component
    • 0~1 that can reduce the knockback of an item

2.3.1.1-beta

  • Fixed invincibility feature erroring when installed server side only

2.3.1.0-beta

  • Added config option to limit invincibility frames to only faster attack speeds

2.3.0.0-beta

  • Added Attack Speed Based Invincibility feature
    • Makes attack change invincibility frames based off attack speed, so faster attacks will give less invincibility frames and vice versa
    • If installed on the client, they will actually see the red invincibility frames correctly based off attack speed

2.2.2.0-beta

  • Added back /insanelib command, but, more importantly, added a new subcommand get_data_components
    • With /insanelib get_data_components <item> you can get a list of all the data components that are currently applied to the item

2.2.1.0-beta

  • Renamed Item Definitions to Item components (the data pack folder has also changed to item_components)
    • Added remove_components, a list of components to remove from the item
    • Added priority, integer value. When multiple json target the same item, components are merged — higher priority wins per component type.
  • A higher-priority remove overrides a lower-priority set, and vice versa.

2.2.0.0-beta

  • Added Item Definitions feature
    • Use data packs to change items' data components
      E.g. in data/<namespace>/item_definitions/strong_diamond_sword.json will make diamond swords have 50 Attack Damage and 2000 durability
    {
        "item": "minecraft:diamond_sword",
        "components": {
            "minecraft:max_damage": 2000,
            "minecraft:attribute_modifiers": {
                "modifiers": [
                    {
                        "type": "minecraft:generic.attack_damage",
                        "id": "minecraft:attack_damage",
                        "amount": 50.0,
                        "operation": "add_value",
                        "slot": "mainhand"
                    }
                ]
            }
        }
    }
    

2.1.3.0-beta

  • Ported Push Resistance attribute from Enhanced AI

2.1.2.5-beta

  • Crash fix when saving a parsed effect instance

2.1.2.4-beta

  • Fix Network messages again

2.1.2.3-beta

  • Fix Network messages being sent to clients with no mod installed

2.1.2.2-beta

  • Fix ObjTag resolving unknown registry entries as fallback objects

2.1.2.1-beta

  • Fixed missing ObjTagValue.LIST_TYPE

2.1.2.0-beta

  • Added back IdTagValue as ObjTagValue
  • Added ObjTag#asHolder

2.1.1.0-beta

  • Added MCUtils.createPotionStackFromEffectInstances

2.1.0.1-beta

  • Fixed startup crash

2.1.0.0-beta

  • Modules now require Resource Location as identifier
  • You can now use ILModConfig to prevent having to create a config class each mod
    • In the mod class
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(MOD_ID, ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
    • You can also create a single module mod via ILModConfig constructor
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(location("main"), "Main", ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
      Features in single module mods can now omit the module parameter in @LoadFeature
  • Ported more MCUtils functions

2.0.4.0-beta

  • Ported Better Falling Blocks

2.0.3.0-alpha

  • Added Fix Swimmers Swimming Attribute, making Drowned and Fishes use the neoforge swimming speed attribute instead of the vanilla movement speed

2.0.2.1-alpha

  • Player attributes are now empty by default

2.0.2.0-alpha

  • Added Player Attributes feature
    • Directly from Insane's Survival Overhaul, change players attributes with a json in the config folder.
    • By default, it will slightly reduce movement speed and block reach
  • Added back JsonFeature (needed for Player Attributes)

2.0.1.0-alpha

  • Added back MessageCreeperDataSync
    • Creeper data is now automatically synced client-side (if the mod is installed on the client).

2.0.0.5-alpha

  • Fixed "Fix Air Speed.Sprinting Jump Slowdown" being ignored

2.0.0.4-alpha

Port to 1.21.1

This version contains most of the player features (missing Better Falling Blocks) + everything needed to make MPR work.

  • Removed spawn_type tag, neoforge already does that with neoforge:spawn_type NBT Tag
  • Follow range fix now applies to any entity that uses vanilla NearestAttackableTargetGoal and will update everytime the mob tries to find a new target instead of only on spawn
  • Enhanced Fix Air Speed (aka Fix Jump Movement Factor)
2.4.19.0Релиз1.21.1 · 3 июля 2026 г.

2.4.19.0

2.4.18.3

  • Fixed some items modified via Item Components not stacking

2.4.18.2

  • Crash fix

2.4.18.1

Technical

  • Optimized ModNBTData

2.4.18.0

Technical

  • Added ObjTag#getAllObjects

2.4.17.2

  • Startup crash fix

2.4.17.1

  • Allow picking up items from anvil with 0 cost and don't render cost label when 0

2.4.17.0

Technical

  • Added CreativeTabsUtils with methods to add items to a creative tab before or after another item, or remove an item from a creative tab

2.4.16.0

  • Added ILRangedAttribute
    • Same as a RangedAttribute, but the descriptionId is calculated from the attribute id and can define a baseId.

2.4.15.1

  • Fixed Item components' programmatic providers overwriting each-other

2.4.15.0

  • Fixed a NeoForge bug that caused global_loot_modifiers.json to not respect the order of the loot modifiers

2.4.14.1

  • Added copper equipment item tags and fixed wooden and golden being wood and gold

2.4.14.0

  • Added GetMaxDamageEvent to modify item's max damage
  • Added Item Tags for equipment by material

2.4.13.1

  • Fixed Integrated resource packs not being enabled by default

2.4.13.0-beta

  • Added block_broken advancement trigger
  • insanelib:enchant_with_treasure
    • Renamed allow_curses and allow_treasure to ignore_curses and ignore_treasures

2.4.12.2-beta

  • Crash fix

2.4.12.1-beta

  • Crash fix

2.4.12.0-beta

Technical

  • Added SerializableMobEffectInstance

2.4.11.0-beta

  • Added insanelib:enchantability item component

2.4.10.0-beta

  • Added merge_components array for item_components
    • Arrays are concatenated, objects are recursively merged, and primitives are overridden.
      This is useful for adding entries to a list component (e.g. appending attribute modifiers) without discarding the item's existing values

2.4.9.3-beta

  • Optimized ModNBTData path parsing to avoid regex overhead on every NBT access

2.4.9.2-beta

Technical

  • Allow ObjTag to use dynamic registries

2.4.9.1-beta

Technical

  • Added JsonFeature#loadAndReadJson overloads for specifying the registry

2.4.9.0-beta

Technical

  • Added back json utilities (ILGsonHelper and validators)

2.4.8.0-beta

Technical

  • Added loot modifiers:
    • insanelib:replace_loot — replaces items in a loot table with another item, optionally copying components (durability, enchantments) and scaling the count
      {
        "type": "insanelib:replace_loot",
        "conditions": [...],
        "original_item": "minecraft:iron_sword",
        "replacement_item": "minecraft:diamond_sword",
        "copy_components": true,
        "count_multiplier": 1.0
      }
      
    • insanelib:inject_loot_table — injects the contents of another loot table into the current one
      {
        "type": "insanelib:inject_loot_table",
        "conditions": [...],
        "loot_table": "minecraft:chests/simple_dungeon"
      }
      
    • insanelib:drop_multiplier — multiplies the count of matching items in loot
      {
        "type": "insanelib:drop_multiplier",
        "conditions": [...],
        "item": "minecraft:wheat",
        "multiplier": 2.0
      }
      
    • insanelib:loot_purger — removes or damages items based on distance from world spawn; useful for progressive loot difficulty
      {
        "type": "insanelib:loot_purger",
        "conditions": [...],
        "end_range": 5000,
        "start_range": 0,
        "multiplier_at_start": 0.0,
        "apply_to_damageable": false,
        "blacklisted_items_tag": "insanelib:loot_purger_blacklist",
        "blacklisted_entity_type_tag": "insanelib:loot_purger_entity_blacklist"
      }
      
      Items are progressively purged the closer to spawn the loot generates. At start_range the survival chance is multiplier_at_start, at end_range it is 1. apply_to_damageable damages items proportionally instead of removing them.
    • insanelib:disenchant — removes enchantments from all items; enchanted books become plain books
      {
        "type": "insanelib:disenchant",
        "conditions": [...],
        "blacklisted_items_tag": "insanelib:disenchant_blacklist"
      }
      
  • Added loot functions:
    • insanelib:enchant_randomly_weightless — enchants an item with a given number of random enchantments, each chosen with equal probability (no weight). Supports books.
      {
        "function": "insanelib:enchant_randomly_weightless",
        "conditions": [...],
        "count": 2,
        "max_lvl": false,
        "treasure": false
      }
      
      count: number of enchantments to apply (supports number providers). max_lvl: always apply the maximum level. treasure: allow treasure enchantments (tag minecraft:treasure).
    • insanelib:enchant_with_treasure — applies a single random treasure enchantment to the item. Supports books.
      {
        "function": "insanelib:enchant_with_treasure",
        "conditions": [...],
        "ignore_curses": false,
        "ignore_treasures": false
      }
      
      ignore_curses: exclude curse enchantments (tag minecraft:curse). ignore_treasures: exclude non-curse treasure enchantments.
  • Added loot conditions:
    • insanelib:block_tag_match — passes if the broken block is in the given tag (returns true if no block state is in context)
      { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" }
      
    • insanelib:killer_has_advancement — passes if the killing player has completed the given advancement
      { "condition": "insanelib:killer_has_advancement", "advancement": "minecraft:story/mine_diamond" }
      
    • insanelib:non_player_arised_drop — passes if the drop was not caused by a player, explosion, or tool (i.e. natural mob death without a player killer)
      { "condition": "insanelib:non_player_arised_drop" }
      

2.4.7.1-beta

Technical

  • Fixed self() methods not being @Unique

2.4.7.0-beta

Technical

  • Added ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS to change stacks programmatically

2.4.6.2-beta

Technical

  • Attached sources in the .jar

2.4.6.1-beta

Technical

  • Changed MCUtils.computeFoodFormula variables
    • Removed effectiveness
    • Renamed hunger to nutrition

2.4.6.0-beta

Technical

  • Added back InsaneLib.ONE_DECIMAL_FORMATTER

2.4.5.0-beta

Technical

  • Added MCUtils.computeFoodFormula using EvalEx
  • Added back all the events

2.4.4.0-beta

Technical

  • Added back feature_enabled neoforge condition and loot condition

2.4.3.0-beta

Technical

  • Added back PlayerUseItemMovSpeedEvent and PlayerSprintEvent

2.4.2.0-beta

  • Moved Attack Speed Based Invincibility feature to ISO

2.4.1.1-beta

Technical

  • Fixed concurrent modification exception

2.4.1.0-beta

Technical

  • Ported back ClientUtils

2.4.0.1-beta

  • Attack invincibility frames are now reduced by 10%
  • Fixed invincibility frames not shown on entities if damage was not from an entity or from non-weapon

2.4.0.0-beta

  • Added insanelib:knockback_multiplier data component
    • 0~1 that can reduce the knockback of an item

2.3.1.1-beta

  • Fixed invincibility feature erroring when installed server side only

2.3.1.0-beta

  • Added config option to limit invincibility frames to only faster attack speeds

2.3.0.0-beta

  • Added Attack Speed Based Invincibility feature
    • Makes attack change invincibility frames based off attack speed, so faster attacks will give less invincibility frames and vice versa
    • If installed on the client, they will actually see the red invincibility frames correctly based off attack speed

2.2.2.0-beta

  • Added back /insanelib command, but, more importantly, added a new subcommand get_data_components
    • With /insanelib get_data_components <item> you can get a list of all the data components that are currently applied to the item

2.2.1.0-beta

  • Renamed Item Definitions to Item components (the data pack folder has also changed to item_components)
    • Added remove_components, a list of components to remove from the item
    • Added priority, integer value. When multiple json target the same item, components are merged — higher priority wins per component type.
  • A higher-priority remove overrides a lower-priority set, and vice versa.

2.2.0.0-beta

  • Added Item Definitions feature
    • Use data packs to change items' data components
      E.g. in data/<namespace>/item_definitions/strong_diamond_sword.json will make diamond swords have 50 Attack Damage and 2000 durability
    {
        "item": "minecraft:diamond_sword",
        "components": {
            "minecraft:max_damage": 2000,
            "minecraft:attribute_modifiers": {
                "modifiers": [
                    {
                        "type": "minecraft:generic.attack_damage",
                        "id": "minecraft:attack_damage",
                        "amount": 50.0,
                        "operation": "add_value",
                        "slot": "mainhand"
                    }
                ]
            }
        }
    }
    

2.1.3.0-beta

  • Ported Push Resistance attribute from Enhanced AI

2.1.2.5-beta

  • Crash fix when saving a parsed effect instance

2.1.2.4-beta

  • Fix Network messages again

2.1.2.3-beta

  • Fix Network messages being sent to clients with no mod installed

2.1.2.2-beta

  • Fix ObjTag resolving unknown registry entries as fallback objects

2.1.2.1-beta

  • Fixed missing ObjTagValue.LIST_TYPE

2.1.2.0-beta

  • Added back IdTagValue as ObjTagValue
  • Added ObjTag#asHolder

2.1.1.0-beta

  • Added MCUtils.createPotionStackFromEffectInstances

2.1.0.1-beta

  • Fixed startup crash

2.1.0.0-beta

  • Modules now require Resource Location as identifier
  • You can now use ILModConfig to prevent having to create a config class each mod
    • In the mod class
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(MOD_ID, ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
    • You can also create a single module mod via ILModConfig constructor
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(location("main"), "Main", ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
      Features in single module mods can now omit the module parameter in @LoadFeature
  • Ported more MCUtils functions

2.0.4.0-beta

  • Ported Better Falling Blocks

2.0.3.0-alpha

  • Added Fix Swimmers Swimming Attribute, making Drowned and Fishes use the neoforge swimming speed attribute instead of the vanilla movement speed

2.0.2.1-alpha

  • Player attributes are now empty by default

2.0.2.0-alpha

  • Added Player Attributes feature
    • Directly from Insane's Survival Overhaul, change players attributes with a json in the config folder.
    • By default, it will slightly reduce movement speed and block reach
  • Added back JsonFeature (needed for Player Attributes)

2.0.1.0-alpha

  • Added back MessageCreeperDataSync
    • Creeper data is now automatically synced client-side (if the mod is installed on the client).

2.0.0.5-alpha

  • Fixed "Fix Air Speed.Sprinting Jump Slowdown" being ignored

2.0.0.4-alpha

Port to 1.21.1

This version contains most of the player features (missing Better Falling Blocks) + everything needed to make MPR work.

  • Removed spawn_type tag, neoforge already does that with neoforge:spawn_type NBT Tag
  • Follow range fix now applies to any entity that uses vanilla NearestAttackableTargetGoal and will update everytime the mob tries to find a new target instead of only on spawn
  • Enhanced Fix Air Speed (aka Fix Jump Movement Factor)
2.4.18.3Релиз1.21.1 · 25 июня 2026 г.

2.4.18.3

  • Fixed some items modified via Item Components not stacking

2.4.18.2

  • Crash fix

2.4.18.1

Technical

  • Optimized ModNBTData

2.4.18.0

Technical

  • Added ObjTag#getAllObjects

2.4.17.2

  • Startup crash fix

2.4.17.1

  • Allow picking up items from anvil with 0 cost and don't render cost label when 0

2.4.17.0

Technical

  • Added CreativeTabsUtils with methods to add items to a creative tab before or after another item, or remove an item from a creative tab

2.4.16.0

  • Added ILRangedAttribute
    • Same as a RangedAttribute, but the descriptionId is calculated from the attribute id and can define a baseId.

2.4.15.1

  • Fixed Item components' programmatic providers overwriting each-other

2.4.15.0

  • Fixed a NeoForge bug that caused global_loot_modifiers.json to not respect the order of the loot modifiers

2.4.14.1

  • Added copper equipment item tags and fixed wooden and golden being wood and gold

2.4.14.0

  • Added GetMaxDamageEvent to modify item's max damage
  • Added Item Tags for equipment by material

2.4.13.1

  • Fixed Integrated resource packs not being enabled by default

2.4.13.0-beta

  • Added block_broken advancement trigger
  • insanelib:enchant_with_treasure
    • Renamed allow_curses and allow_treasure to ignore_curses and ignore_treasures

2.4.12.2-beta

  • Crash fix

2.4.12.1-beta

  • Crash fix

2.4.12.0-beta

Technical

  • Added SerializableMobEffectInstance

2.4.11.0-beta

  • Added insanelib:enchantability item component

2.4.10.0-beta

  • Added merge_components array for item_components
    • Arrays are concatenated, objects are recursively merged, and primitives are overridden.
      This is useful for adding entries to a list component (e.g. appending attribute modifiers) without discarding the item's existing values

2.4.9.3-beta

  • Optimized ModNBTData path parsing to avoid regex overhead on every NBT access

2.4.9.2-beta

Technical

  • Allow ObjTag to use dynamic registries

2.4.9.1-beta

Technical

  • Added JsonFeature#loadAndReadJson overloads for specifying the registry

2.4.9.0-beta

Technical

  • Added back json utilities (ILGsonHelper and validators)

2.4.8.0-beta

Technical

  • Added loot modifiers:
    • insanelib:replace_loot — replaces items in a loot table with another item, optionally copying components (durability, enchantments) and scaling the count
      {
        "type": "insanelib:replace_loot",
        "conditions": [...],
        "original_item": "minecraft:iron_sword",
        "replacement_item": "minecraft:diamond_sword",
        "copy_components": true,
        "count_multiplier": 1.0
      }
      
    • insanelib:inject_loot_table — injects the contents of another loot table into the current one
      {
        "type": "insanelib:inject_loot_table",
        "conditions": [...],
        "loot_table": "minecraft:chests/simple_dungeon"
      }
      
    • insanelib:drop_multiplier — multiplies the count of matching items in loot
      {
        "type": "insanelib:drop_multiplier",
        "conditions": [...],
        "item": "minecraft:wheat",
        "multiplier": 2.0
      }
      
    • insanelib:loot_purger — removes or damages items based on distance from world spawn; useful for progressive loot difficulty
      {
        "type": "insanelib:loot_purger",
        "conditions": [...],
        "end_range": 5000,
        "start_range": 0,
        "multiplier_at_start": 0.0,
        "apply_to_damageable": false,
        "blacklisted_items_tag": "insanelib:loot_purger_blacklist",
        "blacklisted_entity_type_tag": "insanelib:loot_purger_entity_blacklist"
      }
      
      Items are progressively purged the closer to spawn the loot generates. At start_range the survival chance is multiplier_at_start, at end_range it is 1. apply_to_damageable damages items proportionally instead of removing them.
    • insanelib:disenchant — removes enchantments from all items; enchanted books become plain books
      {
        "type": "insanelib:disenchant",
        "conditions": [...],
        "blacklisted_items_tag": "insanelib:disenchant_blacklist"
      }
      
  • Added loot functions:
    • insanelib:enchant_randomly_weightless — enchants an item with a given number of random enchantments, each chosen with equal probability (no weight). Supports books.
      {
        "function": "insanelib:enchant_randomly_weightless",
        "conditions": [...],
        "count": 2,
        "max_lvl": false,
        "treasure": false
      }
      
      count: number of enchantments to apply (supports number providers). max_lvl: always apply the maximum level. treasure: allow treasure enchantments (tag minecraft:treasure).
    • insanelib:enchant_with_treasure — applies a single random treasure enchantment to the item. Supports books.
      {
        "function": "insanelib:enchant_with_treasure",
        "conditions": [...],
        "ignore_curses": false,
        "ignore_treasures": false
      }
      
      ignore_curses: exclude curse enchantments (tag minecraft:curse). ignore_treasures: exclude non-curse treasure enchantments.
  • Added loot conditions:
    • insanelib:block_tag_match — passes if the broken block is in the given tag (returns true if no block state is in context)
      { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" }
      
    • insanelib:killer_has_advancement — passes if the killing player has completed the given advancement
      { "condition": "insanelib:killer_has_advancement", "advancement": "minecraft:story/mine_diamond" }
      
    • insanelib:non_player_arised_drop — passes if the drop was not caused by a player, explosion, or tool (i.e. natural mob death without a player killer)
      { "condition": "insanelib:non_player_arised_drop" }
      

2.4.7.1-beta

Technical

  • Fixed self() methods not being @Unique

2.4.7.0-beta

Technical

  • Added ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS to change stacks programmatically

2.4.6.2-beta

Technical

  • Attached sources in the .jar

2.4.6.1-beta

Technical

  • Changed MCUtils.computeFoodFormula variables
    • Removed effectiveness
    • Renamed hunger to nutrition

2.4.6.0-beta

Technical

  • Added back InsaneLib.ONE_DECIMAL_FORMATTER

2.4.5.0-beta

Technical

  • Added MCUtils.computeFoodFormula using EvalEx
  • Added back all the events

2.4.4.0-beta

Technical

  • Added back feature_enabled neoforge condition and loot condition

2.4.3.0-beta

Technical

  • Added back PlayerUseItemMovSpeedEvent and PlayerSprintEvent

2.4.2.0-beta

  • Moved Attack Speed Based Invincibility feature to ISO

2.4.1.1-beta

Technical

  • Fixed concurrent modification exception

2.4.1.0-beta

Technical

  • Ported back ClientUtils

2.4.0.1-beta

  • Attack invincibility frames are now reduced by 10%
  • Fixed invincibility frames not shown on entities if damage was not from an entity or from non-weapon

2.4.0.0-beta

  • Added insanelib:knockback_multiplier data component
    • 0~1 that can reduce the knockback of an item

2.3.1.1-beta

  • Fixed invincibility feature erroring when installed server side only

2.3.1.0-beta

  • Added config option to limit invincibility frames to only faster attack speeds

2.3.0.0-beta

  • Added Attack Speed Based Invincibility feature
    • Makes attack change invincibility frames based off attack speed, so faster attacks will give less invincibility frames and vice versa
    • If installed on the client, they will actually see the red invincibility frames correctly based off attack speed

2.2.2.0-beta

  • Added back /insanelib command, but, more importantly, added a new subcommand get_data_components
    • With /insanelib get_data_components <item> you can get a list of all the data components that are currently applied to the item

2.2.1.0-beta

  • Renamed Item Definitions to Item components (the data pack folder has also changed to item_components)
    • Added remove_components, a list of components to remove from the item
    • Added priority, integer value. When multiple json target the same item, components are merged — higher priority wins per component type.
  • A higher-priority remove overrides a lower-priority set, and vice versa.

2.2.0.0-beta

  • Added Item Definitions feature
    • Use data packs to change items' data components
      E.g. in data/<namespace>/item_definitions/strong_diamond_sword.json will make diamond swords have 50 Attack Damage and 2000 durability
    {
        "item": "minecraft:diamond_sword",
        "components": {
            "minecraft:max_damage": 2000,
            "minecraft:attribute_modifiers": {
                "modifiers": [
                    {
                        "type": "minecraft:generic.attack_damage",
                        "id": "minecraft:attack_damage",
                        "amount": 50.0,
                        "operation": "add_value",
                        "slot": "mainhand"
                    }
                ]
            }
        }
    }
    

2.1.3.0-beta

  • Ported Push Resistance attribute from Enhanced AI

2.1.2.5-beta

  • Crash fix when saving a parsed effect instance

2.1.2.4-beta

  • Fix Network messages again

2.1.2.3-beta

  • Fix Network messages being sent to clients with no mod installed

2.1.2.2-beta

  • Fix ObjTag resolving unknown registry entries as fallback objects

2.1.2.1-beta

  • Fixed missing ObjTagValue.LIST_TYPE

2.1.2.0-beta

  • Added back IdTagValue as ObjTagValue
  • Added ObjTag#asHolder

2.1.1.0-beta

  • Added MCUtils.createPotionStackFromEffectInstances

2.1.0.1-beta

  • Fixed startup crash

2.1.0.0-beta

  • Modules now require Resource Location as identifier
  • You can now use ILModConfig to prevent having to create a config class each mod
    • In the mod class
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(MOD_ID, ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
    • You can also create a single module mod via ILModConfig constructor
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(location("main"), "Main", ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
      Features in single module mods can now omit the module parameter in @LoadFeature
  • Ported more MCUtils functions

2.0.4.0-beta

  • Ported Better Falling Blocks

2.0.3.0-alpha

  • Added Fix Swimmers Swimming Attribute, making Drowned and Fishes use the neoforge swimming speed attribute instead of the vanilla movement speed

2.0.2.1-alpha

  • Player attributes are now empty by default

2.0.2.0-alpha

  • Added Player Attributes feature
    • Directly from Insane's Survival Overhaul, change players attributes with a json in the config folder.
    • By default, it will slightly reduce movement speed and block reach
  • Added back JsonFeature (needed for Player Attributes)

2.0.1.0-alpha

  • Added back MessageCreeperDataSync
    • Creeper data is now automatically synced client-side (if the mod is installed on the client).

2.0.0.5-alpha

  • Fixed "Fix Air Speed.Sprinting Jump Slowdown" being ignored

2.0.0.4-alpha

Port to 1.21.1

This version contains most of the player features (missing Better Falling Blocks) + everything needed to make MPR work.

  • Removed spawn_type tag, neoforge already does that with neoforge:spawn_type NBT Tag
  • Follow range fix now applies to any entity that uses vanilla NearestAttackableTargetGoal and will update everytime the mob tries to find a new target instead of only on spawn
  • Enhanced Fix Air Speed (aka Fix Jump Movement Factor)
1.23.4.6Релиз1.20.1 · 23 июня 2026 г.
2.4.18.2Релиз1.21.1 · 23 июня 2026 г.

2.4.18.2

  • Crash fix

2.4.18.1

Technical

  • Optimized ModNBTData

2.4.18.0

Technical

  • Added ObjTag#getAllObjects

2.4.17.2

  • Startup crash fix

2.4.17.1

  • Allow picking up items from anvil with 0 cost and don't render cost label when 0

2.4.17.0

Technical

  • Added CreativeTabsUtils with methods to add items to a creative tab before or after another item, or remove an item from a creative tab

2.4.16.0

  • Added ILRangedAttribute
    • Same as a RangedAttribute, but the descriptionId is calculated from the attribute id and can define a baseId.

2.4.15.1

  • Fixed Item components' programmatic providers overwriting each-other

2.4.15.0

  • Fixed a NeoForge bug that caused global_loot_modifiers.json to not respect the order of the loot modifiers

2.4.14.1

  • Added copper equipment item tags and fixed wooden and golden being wood and gold

2.4.14.0

  • Added GetMaxDamageEvent to modify item's max damage
  • Added Item Tags for equipment by material

2.4.13.1

  • Fixed Integrated resource packs not being enabled by default

2.4.13.0-beta

  • Added block_broken advancement trigger
  • insanelib:enchant_with_treasure
    • Renamed allow_curses and allow_treasure to ignore_curses and ignore_treasures

2.4.12.2-beta

  • Crash fix

2.4.12.1-beta

  • Crash fix

2.4.12.0-beta

Technical

  • Added SerializableMobEffectInstance

2.4.11.0-beta

  • Added insanelib:enchantability item component

2.4.10.0-beta

  • Added merge_components array for item_components
    • Arrays are concatenated, objects are recursively merged, and primitives are overridden.
      This is useful for adding entries to a list component (e.g. appending attribute modifiers) without discarding the item's existing values

2.4.9.3-beta

  • Optimized ModNBTData path parsing to avoid regex overhead on every NBT access

2.4.9.2-beta

Technical

  • Allow ObjTag to use dynamic registries

2.4.9.1-beta

Technical

  • Added JsonFeature#loadAndReadJson overloads for specifying the registry

2.4.9.0-beta

Technical

  • Added back json utilities (ILGsonHelper and validators)

2.4.8.0-beta

Technical

  • Added loot modifiers:
    • insanelib:replace_loot — replaces items in a loot table with another item, optionally copying components (durability, enchantments) and scaling the count
      {
        "type": "insanelib:replace_loot",
        "conditions": [...],
        "original_item": "minecraft:iron_sword",
        "replacement_item": "minecraft:diamond_sword",
        "copy_components": true,
        "count_multiplier": 1.0
      }
      
    • insanelib:inject_loot_table — injects the contents of another loot table into the current one
      {
        "type": "insanelib:inject_loot_table",
        "conditions": [...],
        "loot_table": "minecraft:chests/simple_dungeon"
      }
      
    • insanelib:drop_multiplier — multiplies the count of matching items in loot
      {
        "type": "insanelib:drop_multiplier",
        "conditions": [...],
        "item": "minecraft:wheat",
        "multiplier": 2.0
      }
      
    • insanelib:loot_purger — removes or damages items based on distance from world spawn; useful for progressive loot difficulty
      {
        "type": "insanelib:loot_purger",
        "conditions": [...],
        "end_range": 5000,
        "start_range": 0,
        "multiplier_at_start": 0.0,
        "apply_to_damageable": false,
        "blacklisted_items_tag": "insanelib:loot_purger_blacklist",
        "blacklisted_entity_type_tag": "insanelib:loot_purger_entity_blacklist"
      }
      
      Items are progressively purged the closer to spawn the loot generates. At start_range the survival chance is multiplier_at_start, at end_range it is 1. apply_to_damageable damages items proportionally instead of removing them.
    • insanelib:disenchant — removes enchantments from all items; enchanted books become plain books
      {
        "type": "insanelib:disenchant",
        "conditions": [...],
        "blacklisted_items_tag": "insanelib:disenchant_blacklist"
      }
      
  • Added loot functions:
    • insanelib:enchant_randomly_weightless — enchants an item with a given number of random enchantments, each chosen with equal probability (no weight). Supports books.
      {
        "function": "insanelib:enchant_randomly_weightless",
        "conditions": [...],
        "count": 2,
        "max_lvl": false,
        "treasure": false
      }
      
      count: number of enchantments to apply (supports number providers). max_lvl: always apply the maximum level. treasure: allow treasure enchantments (tag minecraft:treasure).
    • insanelib:enchant_with_treasure — applies a single random treasure enchantment to the item. Supports books.
      {
        "function": "insanelib:enchant_with_treasure",
        "conditions": [...],
        "ignore_curses": false,
        "ignore_treasures": false
      }
      
      ignore_curses: exclude curse enchantments (tag minecraft:curse). ignore_treasures: exclude non-curse treasure enchantments.
  • Added loot conditions:
    • insanelib:block_tag_match — passes if the broken block is in the given tag (returns true if no block state is in context)
      { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" }
      
    • insanelib:killer_has_advancement — passes if the killing player has completed the given advancement
      { "condition": "insanelib:killer_has_advancement", "advancement": "minecraft:story/mine_diamond" }
      
    • insanelib:non_player_arised_drop — passes if the drop was not caused by a player, explosion, or tool (i.e. natural mob death without a player killer)
      { "condition": "insanelib:non_player_arised_drop" }
      

2.4.7.1-beta

Technical

  • Fixed self() methods not being @Unique

2.4.7.0-beta

Technical

  • Added ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS to change stacks programmatically

2.4.6.2-beta

Technical

  • Attached sources in the .jar

2.4.6.1-beta

Technical

  • Changed MCUtils.computeFoodFormula variables
    • Removed effectiveness
    • Renamed hunger to nutrition

2.4.6.0-beta

Technical

  • Added back InsaneLib.ONE_DECIMAL_FORMATTER

2.4.5.0-beta

Technical

  • Added MCUtils.computeFoodFormula using EvalEx
  • Added back all the events

2.4.4.0-beta

Technical

  • Added back feature_enabled neoforge condition and loot condition

2.4.3.0-beta

Technical

  • Added back PlayerUseItemMovSpeedEvent and PlayerSprintEvent

2.4.2.0-beta

  • Moved Attack Speed Based Invincibility feature to ISO

2.4.1.1-beta

Technical

  • Fixed concurrent modification exception

2.4.1.0-beta

Technical

  • Ported back ClientUtils

2.4.0.1-beta

  • Attack invincibility frames are now reduced by 10%
  • Fixed invincibility frames not shown on entities if damage was not from an entity or from non-weapon

2.4.0.0-beta

  • Added insanelib:knockback_multiplier data component
    • 0~1 that can reduce the knockback of an item

2.3.1.1-beta

  • Fixed invincibility feature erroring when installed server side only

2.3.1.0-beta

  • Added config option to limit invincibility frames to only faster attack speeds

2.3.0.0-beta

  • Added Attack Speed Based Invincibility feature
    • Makes attack change invincibility frames based off attack speed, so faster attacks will give less invincibility frames and vice versa
    • If installed on the client, they will actually see the red invincibility frames correctly based off attack speed

2.2.2.0-beta

  • Added back /insanelib command, but, more importantly, added a new subcommand get_data_components
    • With /insanelib get_data_components <item> you can get a list of all the data components that are currently applied to the item

2.2.1.0-beta

  • Renamed Item Definitions to Item components (the data pack folder has also changed to item_components)
    • Added remove_components, a list of components to remove from the item
    • Added priority, integer value. When multiple json target the same item, components are merged — higher priority wins per component type.
  • A higher-priority remove overrides a lower-priority set, and vice versa.

2.2.0.0-beta

  • Added Item Definitions feature
    • Use data packs to change items' data components
      E.g. in data/<namespace>/item_definitions/strong_diamond_sword.json will make diamond swords have 50 Attack Damage and 2000 durability
    {
        "item": "minecraft:diamond_sword",
        "components": {
            "minecraft:max_damage": 2000,
            "minecraft:attribute_modifiers": {
                "modifiers": [
                    {
                        "type": "minecraft:generic.attack_damage",
                        "id": "minecraft:attack_damage",
                        "amount": 50.0,
                        "operation": "add_value",
                        "slot": "mainhand"
                    }
                ]
            }
        }
    }
    

2.1.3.0-beta

  • Ported Push Resistance attribute from Enhanced AI

2.1.2.5-beta

  • Crash fix when saving a parsed effect instance

2.1.2.4-beta

  • Fix Network messages again

2.1.2.3-beta

  • Fix Network messages being sent to clients with no mod installed

2.1.2.2-beta

  • Fix ObjTag resolving unknown registry entries as fallback objects

2.1.2.1-beta

  • Fixed missing ObjTagValue.LIST_TYPE

2.1.2.0-beta

  • Added back IdTagValue as ObjTagValue
  • Added ObjTag#asHolder

2.1.1.0-beta

  • Added MCUtils.createPotionStackFromEffectInstances

2.1.0.1-beta

  • Fixed startup crash

2.1.0.0-beta

  • Modules now require Resource Location as identifier
  • You can now use ILModConfig to prevent having to create a config class each mod
    • In the mod class
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(MOD_ID, ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
    • You can also create a single module mod via ILModConfig constructor
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(location("main"), "Main", ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
      Features in single module mods can now omit the module parameter in @LoadFeature
  • Ported more MCUtils functions

2.0.4.0-beta

  • Ported Better Falling Blocks

2.0.3.0-alpha

  • Added Fix Swimmers Swimming Attribute, making Drowned and Fishes use the neoforge swimming speed attribute instead of the vanilla movement speed

2.0.2.1-alpha

  • Player attributes are now empty by default

2.0.2.0-alpha

  • Added Player Attributes feature
    • Directly from Insane's Survival Overhaul, change players attributes with a json in the config folder.
    • By default, it will slightly reduce movement speed and block reach
  • Added back JsonFeature (needed for Player Attributes)

2.0.1.0-alpha

  • Added back MessageCreeperDataSync
    • Creeper data is now automatically synced client-side (if the mod is installed on the client).

2.0.0.5-alpha

  • Fixed "Fix Air Speed.Sprinting Jump Slowdown" being ignored

2.0.0.4-alpha

Port to 1.21.1

This version contains most of the player features (missing Better Falling Blocks) + everything needed to make MPR work.

  • Removed spawn_type tag, neoforge already does that with neoforge:spawn_type NBT Tag
  • Follow range fix now applies to any entity that uses vanilla NearestAttackableTargetGoal and will update everytime the mob tries to find a new target instead of only on spawn
  • Enhanced Fix Air Speed (aka Fix Jump Movement Factor)
1.23.4.5Релиз1.20.1 · 22 июня 2026 г.
2.4.18.1Релиз1.21.1 · 22 июня 2026 г.

2.4.18.1

Technical

  • Optimized ModNBTData

2.4.18.0

Technical

  • Added ObjTag#getAllObjects

2.4.17.2

  • Startup crash fix

2.4.17.1

  • Allow picking up items from anvil with 0 cost and don't render cost label when 0

2.4.17.0

Technical

  • Added CreativeTabsUtils with methods to add items to a creative tab before or after another item, or remove an item from a creative tab

2.4.16.0

  • Added ILRangedAttribute
    • Same as a RangedAttribute, but the descriptionId is calculated from the attribute id and can define a baseId.

2.4.15.1

  • Fixed Item components' programmatic providers overwriting each-other

2.4.15.0

  • Fixed a NeoForge bug that caused global_loot_modifiers.json to not respect the order of the loot modifiers

2.4.14.1

  • Added copper equipment item tags and fixed wooden and golden being wood and gold

2.4.14.0

  • Added GetMaxDamageEvent to modify item's max damage
  • Added Item Tags for equipment by material

2.4.13.1

  • Fixed Integrated resource packs not being enabled by default

2.4.13.0-beta

  • Added block_broken advancement trigger
  • insanelib:enchant_with_treasure
    • Renamed allow_curses and allow_treasure to ignore_curses and ignore_treasures

2.4.12.2-beta

  • Crash fix

2.4.12.1-beta

  • Crash fix

2.4.12.0-beta

Technical

  • Added SerializableMobEffectInstance

2.4.11.0-beta

  • Added insanelib:enchantability item component

2.4.10.0-beta

  • Added merge_components array for item_components
    • Arrays are concatenated, objects are recursively merged, and primitives are overridden.
      This is useful for adding entries to a list component (e.g. appending attribute modifiers) without discarding the item's existing values

2.4.9.3-beta

  • Optimized ModNBTData path parsing to avoid regex overhead on every NBT access

2.4.9.2-beta

Technical

  • Allow ObjTag to use dynamic registries

2.4.9.1-beta

Technical

  • Added JsonFeature#loadAndReadJson overloads for specifying the registry

2.4.9.0-beta

Technical

  • Added back json utilities (ILGsonHelper and validators)

2.4.8.0-beta

Technical

  • Added loot modifiers:
    • insanelib:replace_loot — replaces items in a loot table with another item, optionally copying components (durability, enchantments) and scaling the count
      {
        "type": "insanelib:replace_loot",
        "conditions": [...],
        "original_item": "minecraft:iron_sword",
        "replacement_item": "minecraft:diamond_sword",
        "copy_components": true,
        "count_multiplier": 1.0
      }
      
    • insanelib:inject_loot_table — injects the contents of another loot table into the current one
      {
        "type": "insanelib:inject_loot_table",
        "conditions": [...],
        "loot_table": "minecraft:chests/simple_dungeon"
      }
      
    • insanelib:drop_multiplier — multiplies the count of matching items in loot
      {
        "type": "insanelib:drop_multiplier",
        "conditions": [...],
        "item": "minecraft:wheat",
        "multiplier": 2.0
      }
      
    • insanelib:loot_purger — removes or damages items based on distance from world spawn; useful for progressive loot difficulty
      {
        "type": "insanelib:loot_purger",
        "conditions": [...],
        "end_range": 5000,
        "start_range": 0,
        "multiplier_at_start": 0.0,
        "apply_to_damageable": false,
        "blacklisted_items_tag": "insanelib:loot_purger_blacklist",
        "blacklisted_entity_type_tag": "insanelib:loot_purger_entity_blacklist"
      }
      
      Items are progressively purged the closer to spawn the loot generates. At start_range the survival chance is multiplier_at_start, at end_range it is 1. apply_to_damageable damages items proportionally instead of removing them.
    • insanelib:disenchant — removes enchantments from all items; enchanted books become plain books
      {
        "type": "insanelib:disenchant",
        "conditions": [...],
        "blacklisted_items_tag": "insanelib:disenchant_blacklist"
      }
      
  • Added loot functions:
    • insanelib:enchant_randomly_weightless — enchants an item with a given number of random enchantments, each chosen with equal probability (no weight). Supports books.
      {
        "function": "insanelib:enchant_randomly_weightless",
        "conditions": [...],
        "count": 2,
        "max_lvl": false,
        "treasure": false
      }
      
      count: number of enchantments to apply (supports number providers). max_lvl: always apply the maximum level. treasure: allow treasure enchantments (tag minecraft:treasure).
    • insanelib:enchant_with_treasure — applies a single random treasure enchantment to the item. Supports books.
      {
        "function": "insanelib:enchant_with_treasure",
        "conditions": [...],
        "ignore_curses": false,
        "ignore_treasures": false
      }
      
      ignore_curses: exclude curse enchantments (tag minecraft:curse). ignore_treasures: exclude non-curse treasure enchantments.
  • Added loot conditions:
    • insanelib:block_tag_match — passes if the broken block is in the given tag (returns true if no block state is in context)
      { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" }
      
    • insanelib:killer_has_advancement — passes if the killing player has completed the given advancement
      { "condition": "insanelib:killer_has_advancement", "advancement": "minecraft:story/mine_diamond" }
      
    • insanelib:non_player_arised_drop — passes if the drop was not caused by a player, explosion, or tool (i.e. natural mob death without a player killer)
      { "condition": "insanelib:non_player_arised_drop" }
      

2.4.7.1-beta

Technical

  • Fixed self() methods not being @Unique

2.4.7.0-beta

Technical

  • Added ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS to change stacks programmatically

2.4.6.2-beta

Technical

  • Attached sources in the .jar

2.4.6.1-beta

Technical

  • Changed MCUtils.computeFoodFormula variables
    • Removed effectiveness
    • Renamed hunger to nutrition

2.4.6.0-beta

Technical

  • Added back InsaneLib.ONE_DECIMAL_FORMATTER

2.4.5.0-beta

Technical

  • Added MCUtils.computeFoodFormula using EvalEx
  • Added back all the events

2.4.4.0-beta

Technical

  • Added back feature_enabled neoforge condition and loot condition

2.4.3.0-beta

Technical

  • Added back PlayerUseItemMovSpeedEvent and PlayerSprintEvent

2.4.2.0-beta

  • Moved Attack Speed Based Invincibility feature to ISO

2.4.1.1-beta

Technical

  • Fixed concurrent modification exception

2.4.1.0-beta

Technical

  • Ported back ClientUtils

2.4.0.1-beta

  • Attack invincibility frames are now reduced by 10%
  • Fixed invincibility frames not shown on entities if damage was not from an entity or from non-weapon

2.4.0.0-beta

  • Added insanelib:knockback_multiplier data component
    • 0~1 that can reduce the knockback of an item

2.3.1.1-beta

  • Fixed invincibility feature erroring when installed server side only

2.3.1.0-beta

  • Added config option to limit invincibility frames to only faster attack speeds

2.3.0.0-beta

  • Added Attack Speed Based Invincibility feature
    • Makes attack change invincibility frames based off attack speed, so faster attacks will give less invincibility frames and vice versa
    • If installed on the client, they will actually see the red invincibility frames correctly based off attack speed

2.2.2.0-beta

  • Added back /insanelib command, but, more importantly, added a new subcommand get_data_components
    • With /insanelib get_data_components <item> you can get a list of all the data components that are currently applied to the item

2.2.1.0-beta

  • Renamed Item Definitions to Item components (the data pack folder has also changed to item_components)
    • Added remove_components, a list of components to remove from the item
    • Added priority, integer value. When multiple json target the same item, components are merged — higher priority wins per component type.
  • A higher-priority remove overrides a lower-priority set, and vice versa.

2.2.0.0-beta

  • Added Item Definitions feature
    • Use data packs to change items' data components
      E.g. in data/<namespace>/item_definitions/strong_diamond_sword.json will make diamond swords have 50 Attack Damage and 2000 durability
    {
        "item": "minecraft:diamond_sword",
        "components": {
            "minecraft:max_damage": 2000,
            "minecraft:attribute_modifiers": {
                "modifiers": [
                    {
                        "type": "minecraft:generic.attack_damage",
                        "id": "minecraft:attack_damage",
                        "amount": 50.0,
                        "operation": "add_value",
                        "slot": "mainhand"
                    }
                ]
            }
        }
    }
    

2.1.3.0-beta

  • Ported Push Resistance attribute from Enhanced AI

2.1.2.5-beta

  • Crash fix when saving a parsed effect instance

2.1.2.4-beta

  • Fix Network messages again

2.1.2.3-beta

  • Fix Network messages being sent to clients with no mod installed

2.1.2.2-beta

  • Fix ObjTag resolving unknown registry entries as fallback objects

2.1.2.1-beta

  • Fixed missing ObjTagValue.LIST_TYPE

2.1.2.0-beta

  • Added back IdTagValue as ObjTagValue
  • Added ObjTag#asHolder

2.1.1.0-beta

  • Added MCUtils.createPotionStackFromEffectInstances

2.1.0.1-beta

  • Fixed startup crash

2.1.0.0-beta

  • Modules now require Resource Location as identifier
  • You can now use ILModConfig to prevent having to create a config class each mod
    • In the mod class
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(MOD_ID, ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
    • You can also create a single module mod via ILModConfig constructor
        public static ILModConfig CONFIG;
      
        public YourMod(IEventBus modEventBus, ModContainer modContainer) {
          CONFIG = new ILModConfig(location("main"), "Main", ModConfig.Type.COMMON, modEventBus,
                  Modules::init, InsaneLib.class.getClassLoader());
          modContainer.registerConfig(ModConfig.Type.COMMON, CONFIG.spec, MOD_ID + "/common.toml");
        }
      
      Features in single module mods can now omit the module parameter in @LoadFeature
  • Ported more MCUtils functions

2.0.4.0-beta

  • Ported Better Falling Blocks

2.0.3.0-alpha

  • Added Fix Swimmers Swimming Attribute, making Drowned and Fishes use the neoforge swimming speed attribute instead of the vanilla movement speed

2.0.2.1-alpha

  • Player attributes are now empty by default

2.0.2.0-alpha

  • Added Player Attributes feature
    • Directly from Insane's Survival Overhaul, change players attributes with a json in the config folder.
    • By default, it will slightly reduce movement speed and block reach
  • Added back JsonFeature (needed for Player Attributes)

2.0.1.0-alpha

  • Added back MessageCreeperDataSync
    • Creeper data is now automatically synced client-side (if the mod is installed on the client).

2.0.0.5-alpha

  • Fixed "Fix Air Speed.Sprinting Jump Slowdown" being ignored

2.0.0.4-alpha

Port to 1.21.1

This version contains most of the player features (missing Better Falling Blocks) + everything needed to make MPR work.

  • Removed spawn_type tag, neoforge already does that with neoforge:spawn_type NBT Tag
  • Follow range fix now applies to any entity that uses vanilla NearestAttackableTargetGoal and will update everytime the mob tries to find a new target instead of only on spawn
  • Enhanced Fix Air Speed (aka Fix Jump Movement Factor)

Полная история изменений — на Modrinth.

Комментарии

Загружаем…