COWMODSКаталог модов
InsaneLib

ВЕРСИИ (134)

release

2.4.37.0

2.4.37.0
25 окт. 2026 г.1,4 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.37.0 * Thrown tridents damage is now calculated from the attack damage modifiers of the item thrown (moved from Insane's Survival Overhaul), instead of a fixed 8. Vanilla tridents still deal 8, but changes to the trident attack damage (data packs, mods) now apply when thrown too * Fixed `MCUtils.hurtIgnoreInvulnerability` leaving the entity's last hurt damage set to the damage just dealt, so during the remaining invulnerability frames hits stronger than that damage (instead of stronger than the previous hit) went through # 2.4.36.1 * Fixed mods with multiple configs (e.g. a SERVER and a CLIENT one) logging "No module found with ID ..." warnings for features of the configs created later, even if everything was loaded correctly * A `module` in `@LoadFeature` that no config registers (e.g. a typo) is now reported once all the mods are loaded, unless the feature's `requiresMods` are missing * A `@LoadFeature` without `module` in a mod with multiple modules is now always reported, also when it was loaded in the only module existing at that time * `Feature.isEnabled(Class)` crashes again (now with a clear message) when the feature failed to load, instead of silently returning false since 2.4.36.0. It still returns false for features not loaded because their `requiresMods` are missing or for CLIENT features on dedicated servers # 2.4.36.0 * Item Components' "Stack Limit" config option has been replaced by "Increase Stack Limit" (true by default), which raises the vanilla limit of 99 to 1,073,741,823. Requires a Minecraft restart * Previously the configured value was ignored by the item and component codecs, which always used 9999 since they are built before the config is loaded * Item counts over 999 now show as 1k, 1m, 1b * The limit is half the max integer value, as vanilla sums the counts of two stacks when merging them (e.g. shift-click), which would overflow and delete the items * Fixed `insanelib:drop_multiplier` loot modifier deleting unstackable items (e.g. tools and armor) matching the item/tag from the loot when `ignore_unstackable` is true (the default). They are now left untouched as intended * Fixed `insanelib:loot_purger` loot modifier * With `start_range` > 0 the start range was subtracted twice, purging all the loot right after `start_range` and reaching 0 only at `start_range + end_range` instead of `end_range` * With `apply_to_damageable`, items generated beyond `end_range` were repaired (even fully). Beyond `end_range` the loot is now left untouched * Fixed a division by zero when `end_range` is equal to `start_range` * Fixed loot generated more than ~46000 blocks from spawn being treated as if it was at spawn * Fixed item stacks keeping the components of an `item_components` definition after a `/reload` (or a server change) removed it, until the stack was reloaded from disk * Fixed clients keeping the `item_components` patches of the previous server when joining a server without InsaneLib * Fixed possible issues in singleplayer caused by the client and the integrated server modifying `item_components` patches at the same time * Fixed Player Attributes modifiers being lost after a `/reload` * Fixed creative tabs being rebuilt from the integrated server thread on `/reload` in singleplayer * Better Falling Blocks * Fixed falling blocks that can't be placed never disappearing when `doEntityDrops` is false (or the falling block doesn't drop) * Fixed falling blocks getting stuck forever on top of insta-break blocks with a collision (e.g. slime blocks) when breaking insta-break blocks is enabled. They now land on them * Fixed an invalid `loot_pool_injections` entry breaking the loot table loading. It's now logged and skipped * `insanelib:replace_loot` * With `amount_to_replace`, the remaining items no longer lose their components (enchantments, damage, etc.) * Empty `chances` or `multipliers` are now reported as an error when loading instead of crashing when generating loot * Item knockback multiplier (`insanelib:knockback_multiplier`) is no longer applied to knockbacks unrelated to the attack (e.g. an explosion after being hit) * Time Stop No Player Online * Disabling the feature while time is stopped now makes time advance again without restarting * Fixed the functions not being updated after a `/reload` * The order of features and modules in the config files is now always the same * An invalid id in a config (e.g. uppercase letters) is now logged and ignored (or the default value is used) instead of crashing ## Technical * Fixed clients being disconnected when a synced JsonConfig is longer than 32767 characters * JsonFeature: fixed reloading a JsonConfig removing all the entries read that are equal to the old ones (e.g. records). An empty JsonConfig file is now reported as a parsing error and keeps the old entries * JsonFeature: `JsonConfig#onLoad` on the client is now called after the config has been synced for configs synced to clients. When joining a server it was called before receiving the server's values * JsonConfig sync no longer re-reads the json in singleplayer / LAN host, as the lists are shared with the integrated server * `ItemComponentsReloadListener.PATCHED_COMPONENTS` and `SYNCED_PATCHES` are now immutable maps replaced as a whole instead of being modified. Added `ItemComponentsReloadListener#getUnpatchedComponents` * Fixed `MCUtils#addAttributeModifierToItemStack` never adding the modifier * Fixed `DisenchantModifier` and `LootPurgerModifier` created through their `Builder` crashing (blacklist tags left `null`) * `AttributeModifierOperationSerializer` now serializes the operation as a string (e.g. `"add_value"`), the same format it deserializes, instead of an object * `ModNBTData#get(ItemStack, ...)` now returns the type default (0/false) like the other variants instead of `null` when the stack has no custom data * Fixed `ModNBTData#get` crashing with `UUID.class` when the key is missing. It now returns `null` as documented * `ModNBTData#remove` no longer creates missing compounds and removes the ones left empty. Removing the last mod data from an item stack now removes the `custom_data` component, so it stacks again with stacks without it * `Feature.isEnabled(Class)` now returns false instead of crashing for features that are not loaded * `InsaneLib.ONE_DECIMAL_FORMATTER` is now also available on dedicated servers * `CurrentAttacker#resolve` now falls back to `getLastHurtByMob()` only if the victim was hurt by it in the current tick * `ILNearestAttackableTargetGoal`'s default target chance now goes through `reducedTickDelay` like vanilla's (10 -> 5) * Fixed `SerializableAttributeModifier#fromNetwork` reading the wrong id in the error message for an unknown attribute * `TimeStopNoPlayerOnline.STOP`, `TC` and `SEASONS` are now the functions' ids * Added `SnapshotList`, a thread-safe list replaced as a whole. JsonConfigs using it as their list are now updated at once on reload, so in singleplayer the client never sees them empty or gets a `ConcurrentModificationException` while the integrated server reloads them. Lists of JsonConfigs read on the client should use it * `ObjTag#isValid` now returns false when the id wasn't found in the registry, as documented. Missing items in `item_components` are now logged and missing ids in `ObjTagValue` lists are skipped # 2.4.35.0 * Mods using `ILModConfig` (InsaneLib included) now automatically get a config screen (NeoForge's `ConfigurationScreen`) in the Mods list (basically all my mods), unless they register their own. Entries without a translation show their config name instead of the raw translation key * Better Falling Blocks can now be disabled * Fixed falling blocks not going through portals when Better Falling Blocks is enabled * Moved "Fix Dupe Exploit" from Better Falling Blocks to Fixes ("Fix Falling Block Dupe"). It now also works when Better Falling Blocks is disabled (vanilla falling blocks going through an End portal) # 2.4.34.0 ## Technical * `ILModConfig` can now be used with `ModConfig.Type.SERVER` configs * Fixed `Cannot get config value before config is loaded` crash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world). `ModConfigEvent.Unloading` is now ignored and `@Config` fields keep the last values read * `ConfigOption#set` (and `Blacklist`, `MinMaxConfig`, `DifficultyBasedConfig`, `ObjTag` options) and `Feature#setEnabledConfig` now do nothing and log a warning if the config is not loaded instead of throwing * When the server reloads a SERVER config because its file changed, the config is now synced again to connected clients (NeoForge syncs it only on login) and operators get a chat message * Added `ConfigUtils#isLoaded` and `ConfigUtils#canSet` # 2.4.33.2 * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded or on dedicated servers (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `item_components` patches being lost by clients on dedicated servers / LAN after a `/reload` * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books ## Technical * `PoolInjectionReloadListener` is now `PoolInjectionLoader` and iss no longer a reload listener: injections are loaded right before loot tables via `ReloadableServerRegistriesMixin` * `item_components` patches are now computed only on the server (`TagsUpdatedEvent` with `SERVER_DATA_LOAD`); `ItemComponentsSyncMessage` is now always sent, even when there are no patches # 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.36.1

2.4.36.1
25 окт. 2026 г.124Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.36.1 * Fixed mods with multiple configs (e.g. a SERVER and a CLIENT one) logging "No module found with ID ..." warnings for features of the configs created later, even if everything was loaded correctly * A `module` in `@LoadFeature` that no config registers (e.g. a typo) is now reported once all the mods are loaded, unless the feature's `requiresMods` are missing * A `@LoadFeature` without `module` in a mod with multiple modules is now always reported, also when it was loaded in the only module existing at that time * `Feature.isEnabled(Class)` crashes again (now with a clear message) when the feature failed to load, instead of silently returning false since 2.4.36.0. It still returns false for features not loaded because their `requiresMods` are missing or for CLIENT features on dedicated servers # 2.4.36.0 * Item Components' "Stack Limit" config option has been replaced by "Increase Stack Limit" (true by default), which raises the vanilla limit of 99 to 1,073,741,823. Requires a Minecraft restart * Previously the configured value was ignored by the item and component codecs, which always used 9999 since they are built before the config is loaded * Item counts over 999 now show as 1k, 1m, 1b * The limit is half the max integer value, as vanilla sums the counts of two stacks when merging them (e.g. shift-click), which would overflow and delete the items * Fixed `insanelib:drop_multiplier` loot modifier deleting unstackable items (e.g. tools and armor) matching the item/tag from the loot when `ignore_unstackable` is true (the default). They are now left untouched as intended * Fixed `insanelib:loot_purger` loot modifier * With `start_range` > 0 the start range was subtracted twice, purging all the loot right after `start_range` and reaching 0 only at `start_range + end_range` instead of `end_range` * With `apply_to_damageable`, items generated beyond `end_range` were repaired (even fully). Beyond `end_range` the loot is now left untouched * Fixed a division by zero when `end_range` is equal to `start_range` * Fixed loot generated more than ~46000 blocks from spawn being treated as if it was at spawn * Fixed item stacks keeping the components of an `item_components` definition after a `/reload` (or a server change) removed it, until the stack was reloaded from disk * Fixed clients keeping the `item_components` patches of the previous server when joining a server without InsaneLib * Fixed possible issues in singleplayer caused by the client and the integrated server modifying `item_components` patches at the same time * Fixed Player Attributes modifiers being lost after a `/reload` * Fixed creative tabs being rebuilt from the integrated server thread on `/reload` in singleplayer * Better Falling Blocks * Fixed falling blocks that can't be placed never disappearing when `doEntityDrops` is false (or the falling block doesn't drop) * Fixed falling blocks getting stuck forever on top of insta-break blocks with a collision (e.g. slime blocks) when breaking insta-break blocks is enabled. They now land on them * Fixed an invalid `loot_pool_injections` entry breaking the loot table loading. It's now logged and skipped * `insanelib:replace_loot` * With `amount_to_replace`, the remaining items no longer lose their components (enchantments, damage, etc.) * Empty `chances` or `multipliers` are now reported as an error when loading instead of crashing when generating loot * Item knockback multiplier (`insanelib:knockback_multiplier`) is no longer applied to knockbacks unrelated to the attack (e.g. an explosion after being hit) * Time Stop No Player Online * Disabling the feature while time is stopped now makes time advance again without restarting * Fixed the functions not being updated after a `/reload` * The order of features and modules in the config files is now always the same * An invalid id in a config (e.g. uppercase letters) is now logged and ignored (or the default value is used) instead of crashing ## Technical * Fixed clients being disconnected when a synced JsonConfig is longer than 32767 characters * JsonFeature: fixed reloading a JsonConfig removing all the entries read that are equal to the old ones (e.g. records). An empty JsonConfig file is now reported as a parsing error and keeps the old entries * JsonFeature: `JsonConfig#onLoad` on the client is now called after the config has been synced for configs synced to clients. When joining a server it was called before receiving the server's values * JsonConfig sync no longer re-reads the json in singleplayer / LAN host, as the lists are shared with the integrated server * `ItemComponentsReloadListener.PATCHED_COMPONENTS` and `SYNCED_PATCHES` are now immutable maps replaced as a whole instead of being modified. Added `ItemComponentsReloadListener#getUnpatchedComponents` * Fixed `MCUtils#addAttributeModifierToItemStack` never adding the modifier * Fixed `DisenchantModifier` and `LootPurgerModifier` created through their `Builder` crashing (blacklist tags left `null`) * `AttributeModifierOperationSerializer` now serializes the operation as a string (e.g. `"add_value"`), the same format it deserializes, instead of an object * `ModNBTData#get(ItemStack, ...)` now returns the type default (0/false) like the other variants instead of `null` when the stack has no custom data * Fixed `ModNBTData#get` crashing with `UUID.class` when the key is missing. It now returns `null` as documented * `ModNBTData#remove` no longer creates missing compounds and removes the ones left empty. Removing the last mod data from an item stack now removes the `custom_data` component, so it stacks again with stacks without it * `Feature.isEnabled(Class)` now returns false instead of crashing for features that are not loaded * `InsaneLib.ONE_DECIMAL_FORMATTER` is now also available on dedicated servers * `CurrentAttacker#resolve` now falls back to `getLastHurtByMob()` only if the victim was hurt by it in the current tick * `ILNearestAttackableTargetGoal`'s default target chance now goes through `reducedTickDelay` like vanilla's (10 -> 5) * Fixed `SerializableAttributeModifier#fromNetwork` reading the wrong id in the error message for an unknown attribute * `TimeStopNoPlayerOnline.STOP`, `TC` and `SEASONS` are now the functions' ids * Added `SnapshotList`, a thread-safe list replaced as a whole. JsonConfigs using it as their list are now updated at once on reload, so in singleplayer the client never sees them empty or gets a `ConcurrentModificationException` while the integrated server reloads them. Lists of JsonConfigs read on the client should use it * `ObjTag#isValid` now returns false when the id wasn't found in the registry, as documented. Missing items in `item_components` are now logged and missing ids in `ObjTagValue` lists are skipped # 2.4.35.0 * Mods using `ILModConfig` (InsaneLib included) now automatically get a config screen (NeoForge's `ConfigurationScreen`) in the Mods list (basically all my mods), unless they register their own. Entries without a translation show their config name instead of the raw translation key * Better Falling Blocks can now be disabled * Fixed falling blocks not going through portals when Better Falling Blocks is enabled * Moved "Fix Dupe Exploit" from Better Falling Blocks to Fixes ("Fix Falling Block Dupe"). It now also works when Better Falling Blocks is disabled (vanilla falling blocks going through an End portal) # 2.4.34.0 ## Technical * `ILModConfig` can now be used with `ModConfig.Type.SERVER` configs * Fixed `Cannot get config value before config is loaded` crash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world). `ModConfigEvent.Unloading` is now ignored and `@Config` fields keep the last values read * `ConfigOption#set` (and `Blacklist`, `MinMaxConfig`, `DifficultyBasedConfig`, `ObjTag` options) and `Feature#setEnabledConfig` now do nothing and log a warning if the config is not loaded instead of throwing * When the server reloads a SERVER config because its file changed, the config is now synced again to connected clients (NeoForge syncs it only on login) and operators get a chat message * Added `ConfigUtils#isLoaded` and `ConfigUtils#canSet` # 2.4.33.2 * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded or on dedicated servers (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `item_components` patches being lost by clients on dedicated servers / LAN after a `/reload` * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books ## Technical * `PoolInjectionReloadListener` is now `PoolInjectionLoader` and iss no longer a reload listener: injections are loaded right before loot tables via `ReloadableServerRegistriesMixin` * `item_components` patches are now computed only on the server (`TagsUpdatedEvent` with `SERVER_DATA_LOAD`); `ItemComponentsSyncMessage` is now always sent, even when there are no patches # 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

3.0.1.0-beta

3.0.1.0-beta
24 окт. 2026 г.70Minecraft: 26.1.2neoforge
Скачать
Что нового
# 3.0.1.0-beta * Ported 2.4.34.0, 2.4.35.0 and 2.4.36.0 changes from 1.21.1 ## Data Pack / Modpack creators * Mods using `ILModConfig` (InsaneLib included) now automatically get a config screen (NeoForge's `ConfigurationScreen`) in the Mods list (basically all my mods), unless they register their own. Entries without a translation show their config name instead of the raw translation key * Item Components' "Stack Limit" config option has been replaced by "Increase Stack Limit" (true by default), which raises the vanilla limit of 99 to 1,073,741,823. Requires a Minecraft restart * Previously the configured value was ignored by the item, item stack template and component codecs, which always used 9999 since they are built before the config is loaded * Item counts over 999 now show as 1k, 1m, 1b * The limit is half the max integer value, as vanilla sums the counts of two stacks when merging them (e.g. shift-click), which would overflow and delete the items * Better Falling Blocks * Can now be disabled * Fixed falling blocks not going through portals * Fixed falling blocks that can't be placed never disappearing when `entity_drops` is false (or the falling block doesn't drop) * Fixed falling blocks getting stuck forever on top of insta-break blocks with a collision (e.g. slime blocks) when breaking insta-break blocks is enabled. They now land on them * Moved "Fix Dupe Exploit" from Better Falling Blocks to Fixes ("Fix Falling Block Dupe"). It now also works when Better Falling Blocks is disabled (vanilla falling blocks going through an End portal) * Fixed `insanelib:drop_multiplier` loot modifier deleting unstackable items (e.g. tools and armor) matching the item/tag from the loot when `ignore_unstackable` is true (the default). They are now left untouched as intended * Fixed `insanelib:loot_purger` loot modifier * With `start_range` > 0 the start range was subtracted twice, purging all the loot right after `start_range` and reaching 0 only at `start_range + end_range` instead of `end_range` * With `apply_to_damageable`, items generated beyond `end_range` were repaired (even fully). Beyond `end_range` the loot is now left untouched * Fixed a division by zero when `end_range` is equal to `start_range` * Fixed loot generated more than ~46000 blocks from spawn being treated as if it was at spawn * `insanelib:replace_loot` * With `amount_to_replace`, the remaining items no longer lose their components (enchantments, damage, etc.) * Empty `chances` or `multipliers` are now reported as an error when loading instead of crashing when generating loot * Fixed item stacks keeping the components of an `item_components` definition after a `/reload` (or a server change) removed it, until the stack was reloaded from disk * Fixed possible issues in singleplayer caused by the client and the integrated server modifying `item_components` patches at the same time * Fixed Player Attributes modifiers being lost after a `/reload` * Fixed creative tabs being rebuilt from the integrated server thread on `/reload` in singleplayer * Fixed an invalid `loot_pool_injections` entry breaking the loot table loading. It's now logged and skipped * Item knockback multiplier (`insanelib:knockback_multiplier`) is no longer applied to knockbacks unrelated to the attack (e.g. an explosion after being hit) * Time Stop No Player Online * Disabling the feature while time is stopped now makes game time and day time advance again without restarting * Fixed the functions not being updated after a `/reload` * The order of features and modules in the config files is now always the same * An invalid id in a config (e.g. uppercase letters) is now logged and ignored (or the default value is used) instead of crashing ## Technical * `ILModConfig` can now be used with `ModConfig.Type.SERVER` configs * Fixed `Cannot get config value before config is loaded` crash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world). `ModConfigEvent.Unloading` is now ignored and `@Config` fields keep the last values read * `ConfigOption#set` (and `Blacklist`, `MinMaxConfig`, `DifficultyBasedConfig`, `ObjTag` options) and `Feature#setEnabledConfig` now do nothing and log a warning if the config is not loaded instead of throwing * When the server reloads a SERVER config because its file changed, the config is now synced again to connected clients (NeoForge syncs it only on login) and operators get a chat message * Added `ConfigUtils#isLoaded` and `ConfigUtils#canSet` * Added `ILModConfig#getModContainers` and `ILConfigScreen` * Fixed clients being disconnected when a synced JsonConfig is longer than 32767 characters * JsonFeature: fixed reloading a JsonConfig removing all the entries read that are equal to the old ones (e.g. records). An empty JsonConfig file is now reported as a parsing error and keeps the old entries * JsonFeature: `JsonConfig#onLoad` on the client is now called after the config has been synced for configs synced to clients. When joining a server it was called before receiving the server's values * JsonConfig sync no longer re-reads the json in singleplayer / LAN host, as the lists are shared with the integrated server * Added `SnapshotList`, a thread-safe list replaced as a whole. JsonConfigs using it as their list are now updated at once on reload, so in singleplayer the client never sees them empty or gets a `ConcurrentModificationException` while the integrated server reloads them. Lists of JsonConfigs read on the client should use it * `ItemComponentsReloadListener.PATCHED_COMPONENTS` and `SYNCED_PATCHES` are now immutable maps replaced as a whole instead of being modified. Added `ItemComponentsReloadListener#getUnpatchedComponents` (the components bound to the item's holder) * `ItemComponentsSyncMessage` is now ignored in singleplayer / LAN host, as the patches are shared with the integrated server * Removed `ItemComponentsFeature.stackLimit`, use `ItemComponentsFeature#getStackLimit`. Added `ItemComponentsFeature#stackSizeCodec`. `Item.ABSOLUTE_MAX_STACK_SIZE` is no longer modified * Fixed `MCUtils#addAttributeModifierToItemStack` never adding the modifier * Fixed `DisenchantModifier` and `LootPurgerModifier` created through their `Builder` crashing (blacklist tags left `null`) * `AttributeModifierOperationSerializer` now serializes the operation as a string (e.g. `"add_value"`), the same format it deserializes, instead of an object * `ModNBTData#get(ItemStack, ...)` now returns the type default (0/false) like the other variants instead of `null` when the stack has no custom data * `ModNBTData#remove` no longer creates missing compounds and removes the ones left empty. Removing the last mod data from an item stack now removes the `custom_data` component, so it stacks again with stacks without it * `Feature.isEnabled(Class)` now returns false instead of crashing for features that are not loaded * `InsaneLib.ONE_DECIMAL_FORMATTER` is now also available on dedicated servers * `CurrentAttacker#resolve` now falls back to `getLastHurtByMob()` only if the victim was hurt by it in the current tick * `ILNearestAttackableTargetGoal`'s default target chance now goes through `reducedTickDelay` like vanilla's (10 -> 5) * Fixed `SerializableAttributeModifier#fromNetwork` reading the wrong id in the error message for an unknown attribute * `TimeStopNoPlayerOnline.STOP`, `TC` and `SEASONS` are now the functions' ids * `ObjTag#isValid` now returns false when the id wasn't found in the registry, as documented. Missing items in `item_components` are now logged and missing ids in `ObjTagValue` lists are skipped # 3.0.0.0-beta * Ported to Minecraft 26.1.2 (NeoForge 26.1.2.116, Java 25) ## Data Pack / Modpack creators * Vanilla renamed many ids and changed many component formats between 1.21.1 and 26.1.2: data packs, `item_components` definitions and json configs must be updated to the new vanilla formats * Attribute ids no longer have the `generic.`/`player.` prefix (e.g. `minecraft:generic.movement_speed` is now `minecraft:movement_speed`), including the ones in `players_attribute_modifiers.json` * `minecraft:attribute_modifiers` is now a list instead of an object with a `modifiers` field * Food effects and eat time are no longer part of `minecraft:food`, they're in `minecraft:consumable` * Removed `insanelib:enchantability` item component: vanilla now has `minecraft:enchantable` (e.g. `"minecraft:enchantable": {"value": 15}`) which does the same * Global loot modifiers (`insanelib:replace_loot`, `insanelib:drop_multiplier`, `insanelib:loot_purger`, `insanelib:disenchant`) now support NeoForge's `priority` field (default 1000, higher is applied first) * NeoForge now loads every file in `data/<namespace>/loot_modifiers/` and no longer uses `global_loot_modifiers.json`; the order is given by `priority` * `insanelib:recipe_removal` now checks the result shown by the recipe (recipe book display). Recipes without a display (e.g. special recipes) are never removed * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books * Items in the copper `insanelib:equipment/*` tags are now the vanilla copper tools and armor * Time Stop No Player Online * Now stops the day time (world clocks) too, other than the game time * The weather integrated pack now uses the `advance_weather` game rule (was `doWeatherCycle`) * Non-curable effects (`ILMobEffect` / `MCUtils#createEffectInstance`) can no longer be removed by anything that clears all the effects when consumed (milk, totems, `minecraft:clear_all_effects` consume effect); `/effect clear` still removes them ## Technical * `ResourceLocation` is now `Identifier` in every method signature * Removed the `MixinExtras` jar-in-jar, NeoForge already provides it * Loot conditions and functions now implement `codec()` (`ILConditions` and `ILLootFunctions` now register `MapCodec`s) * Loot modifiers constructors now take the `priority` after the conditions * `AddEatEffectEvent` is now fired when a food item is consumed (from `Consumable#onConsume`); canceling it prevents the `minecraft:apply_effects` consume effects of the food. Added `getStack()` * `PlayerUseItemMovSpeedEvent` starting speed modifier is now the one from the item's `minecraft:use_effects` component. `ILEventFactory#onUseItemMovementSpeedModifier` takes the original speed modifier * `PlayerSprintEvent` is now checked on `LocalPlayer#isSprintingPossible`, so it also stops the player from sprinting, not only from starting to sprint * Effects cures * Removed `MobEffectInstanceAccessor` and `ILMobEffect#fillEffectCures` (NeoForge removed `EffectCure`) * Added `ICurableEffectInstance` (implemented on `MobEffectInstance`), `ILMobEffect#canBeCured()`, `MCUtils#isCurable` and `MCUtils#removeCurableEffects` * Non-curable effect instances created with `MCUtils#createEffectInstance` are not saved: they become curable again after a reload of the entity * `MCUtils#computeFoodFormula` now takes the `Consumable` (nullable) to get `eat_seconds` * `MCUtils#hurtIgnoreInvulnerability` now uses `hurtServer` and always returns false on client side * `ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS` now receive a `HolderLookup.Provider` instead of `RegistryAccess` * Item components patches are now computed on `DefaultDataComponentsBoundEvent` (server side only) instead of `TagsUpdatedEvent`, since default components are now bound after tags * `RecipeRemovalUtils` is now applied by a `RecipeManager` mixin before recipes are finalized; `RecipeRemovalUtils#removeTaggedRecipes(RecipeMap, HolderLookup.Provider)` replaces the old event handlers * `ClientUtils` * Removed `setRenderColor` and `resetRenderColor` (shader color no longer exists), use the color overload of `blitVerticallyMirrored` instead * `blitVerticallyMirrored` now takes a `GuiGraphicsExtractor` * `ExplosionAccessor` now targets `ServerExplosion` * `ILBlockTagProvider` and `ILItemTagProvider` no longer take an `ExistingFileHelper`; data generation now uses `GatherDataEvent.Client` * `ModNBTData#getList` ignores the type parameter, since lists no longer have a fixed type * `PoolInjectionReloadListener` has been renamed to `PoolInjectionLoader` and is no longer a reload listener: injections are loaded by `ReloadableServerRegistriesMixin` (`PoolInjectionLoader#load(ResourceManager)`) right before loot tables, since loot tables are loaded before reload listeners * Removed `LootModifierManagerMixin` (NeoForge now sorts loot modifiers by priority)
release

2.4.36.0

2.4.36.0
22 окт. 2026 г.2,3 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.36.0 * Item Components' "Stack Limit" config option has been replaced by "Increase Stack Limit" (true by default), which raises the vanilla limit of 99 to 1,073,741,823. Requires a Minecraft restart * Previously the configured value was ignored by the item and component codecs, which always used 9999 since they are built before the config is loaded * Item counts over 999 now show as 1k, 1m, 1b * The limit is half the max integer value, as vanilla sums the counts of two stacks when merging them (e.g. shift-click), which would overflow and delete the items * Fixed `insanelib:drop_multiplier` loot modifier deleting unstackable items (e.g. tools and armor) matching the item/tag from the loot when `ignore_unstackable` is true (the default). They are now left untouched as intended * Fixed `insanelib:loot_purger` loot modifier * With `start_range` > 0 the start range was subtracted twice, purging all the loot right after `start_range` and reaching 0 only at `start_range + end_range` instead of `end_range` * With `apply_to_damageable`, items generated beyond `end_range` were repaired (even fully). Beyond `end_range` the loot is now left untouched * Fixed a division by zero when `end_range` is equal to `start_range` * Fixed loot generated more than ~46000 blocks from spawn being treated as if it was at spawn * Fixed item stacks keeping the components of an `item_components` definition after a `/reload` (or a server change) removed it, until the stack was reloaded from disk * Fixed clients keeping the `item_components` patches of the previous server when joining a server without InsaneLib * Fixed possible issues in singleplayer caused by the client and the integrated server modifying `item_components` patches at the same time * Fixed Player Attributes modifiers being lost after a `/reload` * Fixed creative tabs being rebuilt from the integrated server thread on `/reload` in singleplayer * Better Falling Blocks * Fixed falling blocks that can't be placed never disappearing when `doEntityDrops` is false (or the falling block doesn't drop) * Fixed falling blocks getting stuck forever on top of insta-break blocks with a collision (e.g. slime blocks) when breaking insta-break blocks is enabled. They now land on them * Fixed an invalid `loot_pool_injections` entry breaking the loot table loading. It's now logged and skipped * `insanelib:replace_loot` * With `amount_to_replace`, the remaining items no longer lose their components (enchantments, damage, etc.) * Empty `chances` or `multipliers` are now reported as an error when loading instead of crashing when generating loot * Item knockback multiplier (`insanelib:knockback_multiplier`) is no longer applied to knockbacks unrelated to the attack (e.g. an explosion after being hit) * Time Stop No Player Online * Disabling the feature while time is stopped now makes time advance again without restarting * Fixed the functions not being updated after a `/reload` * The order of features and modules in the config files is now always the same * An invalid id in a config (e.g. uppercase letters) is now logged and ignored (or the default value is used) instead of crashing ## Technical * Fixed clients being disconnected when a synced JsonConfig is longer than 32767 characters * JsonFeature: fixed reloading a JsonConfig removing all the entries read that are equal to the old ones (e.g. records). An empty JsonConfig file is now reported as a parsing error and keeps the old entries * JsonFeature: `JsonConfig#onLoad` on the client is now called after the config has been synced for configs synced to clients. When joining a server it was called before receiving the server's values * JsonConfig sync no longer re-reads the json in singleplayer / LAN host, as the lists are shared with the integrated server * `ItemComponentsReloadListener.PATCHED_COMPONENTS` and `SYNCED_PATCHES` are now immutable maps replaced as a whole instead of being modified. Added `ItemComponentsReloadListener#getUnpatchedComponents` * Fixed `MCUtils#addAttributeModifierToItemStack` never adding the modifier * Fixed `DisenchantModifier` and `LootPurgerModifier` created through their `Builder` crashing (blacklist tags left `null`) * `AttributeModifierOperationSerializer` now serializes the operation as a string (e.g. `"add_value"`), the same format it deserializes, instead of an object * `ModNBTData#get(ItemStack, ...)` now returns the type default (0/false) like the other variants instead of `null` when the stack has no custom data * Fixed `ModNBTData#get` crashing with `UUID.class` when the key is missing. It now returns `null` as documented * `ModNBTData#remove` no longer creates missing compounds and removes the ones left empty. Removing the last mod data from an item stack now removes the `custom_data` component, so it stacks again with stacks without it * `Feature.isEnabled(Class)` now returns false instead of crashing for features that are not loaded * `InsaneLib.ONE_DECIMAL_FORMATTER` is now also available on dedicated servers * `CurrentAttacker#resolve` now falls back to `getLastHurtByMob()` only if the victim was hurt by it in the current tick * `ILNearestAttackableTargetGoal`'s default target chance now goes through `reducedTickDelay` like vanilla's (10 -> 5) * Fixed `SerializableAttributeModifier#fromNetwork` reading the wrong id in the error message for an unknown attribute * `TimeStopNoPlayerOnline.STOP`, `TC` and `SEASONS` are now the functions' ids * Added `SnapshotList`, a thread-safe list replaced as a whole. JsonConfigs using it as their list are now updated at once on reload, so in singleplayer the client never sees them empty or gets a `ConcurrentModificationException` while the integrated server reloads them. Lists of JsonConfigs read on the client should use it * `ObjTag#isValid` now returns false when the id wasn't found in the registry, as documented. Missing items in `item_components` are now logged and missing ids in `ObjTagValue` lists are skipped # 2.4.35.0 * Mods using `ILModConfig` (InsaneLib included) now automatically get a config screen (NeoForge's `ConfigurationScreen`) in the Mods list (basically all my mods), unless they register their own. Entries without a translation show their config name instead of the raw translation key * Better Falling Blocks can now be disabled * Fixed falling blocks not going through portals when Better Falling Blocks is enabled * Moved "Fix Dupe Exploit" from Better Falling Blocks to Fixes ("Fix Falling Block Dupe"). It now also works when Better Falling Blocks is disabled (vanilla falling blocks going through an End portal) # 2.4.34.0 ## Technical * `ILModConfig` can now be used with `ModConfig.Type.SERVER` configs * Fixed `Cannot get config value before config is loaded` crash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world). `ModConfigEvent.Unloading` is now ignored and `@Config` fields keep the last values read * `ConfigOption#set` (and `Blacklist`, `MinMaxConfig`, `DifficultyBasedConfig`, `ObjTag` options) and `Feature#setEnabledConfig` now do nothing and log a warning if the config is not loaded instead of throwing * When the server reloads a SERVER config because its file changed, the config is now synced again to connected clients (NeoForge syncs it only on login) and operators get a chat message * Added `ConfigUtils#isLoaded` and `ConfigUtils#canSet` # 2.4.33.2 * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded or on dedicated servers (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `item_components` patches being lost by clients on dedicated servers / LAN after a `/reload` * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books ## Technical * `PoolInjectionReloadListener` is now `PoolInjectionLoader` and iss no longer a reload listener: injections are loaded right before loot tables via `ReloadableServerRegistriesMixin` * `item_components` patches are now computed only on the server (`TagsUpdatedEvent` with `SERVER_DATA_LOAD`); `ItemComponentsSyncMessage` is now always sent, even when there are no patches # 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.35.0

2.4.35.0
20 окт. 2026 г.1,1 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.35.0 * Mods using `ILModConfig` (InsaneLib included) now automatically get a config screen (NeoForge's `ConfigurationScreen`) in the Mods list (basically all my mods), unless they register their own. Entries without a translation show their config name instead of the raw translation key * Better Falling Blocks can now be disabled * Fixed falling blocks not going through portals when Better Falling Blocks is enabled * Moved "Fix Dupe Exploit" from Better Falling Blocks to Fixes ("Fix Falling Block Dupe"). It now also works when Better Falling Blocks is disabled (vanilla falling blocks going through an End portal) # 2.4.34.0 ## Technical * `ILModConfig` can now be used with `ModConfig.Type.SERVER` configs * Fixed `Cannot get config value before config is loaded` crash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world). `ModConfigEvent.Unloading` is now ignored and `@Config` fields keep the last values read * `ConfigOption#set` (and `Blacklist`, `MinMaxConfig`, `DifficultyBasedConfig`, `ObjTag` options) and `Feature#setEnabledConfig` now do nothing and log a warning if the config is not loaded instead of throwing * When the server reloads a SERVER config because its file changed, the config is now synced again to connected clients (NeoForge syncs it only on login) and operators get a chat message * Added `ConfigUtils#isLoaded` and `ConfigUtils#canSet` # 2.4.33.2 * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded or on dedicated servers (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `item_components` patches being lost by clients on dedicated servers / LAN after a `/reload` * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books ## Technical * `PoolInjectionReloadListener` is now `PoolInjectionLoader` and iss no longer a reload listener: injections are loaded right before loot tables via `ReloadableServerRegistriesMixin` * `item_components` patches are now computed only on the server (`TagsUpdatedEvent` with `SERVER_DATA_LOAD`); `ItemComponentsSyncMessage` is now always sent, even when there are no patches # 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.34.0

2.4.34.0
20 окт. 2026 г.492Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.34.0 ## Technical * `ILModConfig` can now be used with `ModConfig.Type.SERVER` configs * Fixed `Cannot get config value before config is loaded` crash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world). `ModConfigEvent.Unloading` is now ignored and `@Config` fields keep the last values read * `ConfigOption#set` (and `Blacklist`, `MinMaxConfig`, `DifficultyBasedConfig`, `ObjTag` options) and `Feature#setEnabledConfig` now do nothing and log a warning if the config is not loaded instead of throwing * When the server reloads a SERVER config because its file changed, the config is now synced again to connected clients (NeoForge syncs it only on login) and operators get a chat message * Added `ConfigUtils#isLoaded` and `ConfigUtils#canSet` # 2.4.33.2 * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded or on dedicated servers (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `item_components` patches being lost by clients on dedicated servers / LAN after a `/reload` * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books ## Technical * `PoolInjectionReloadListener` is now `PoolInjectionLoader` and iss no longer a reload listener: injections are loaded right before loot tables via `ReloadableServerRegistriesMixin` * `item_components` patches are now computed only on the server (`TagsUpdatedEvent` with `SERVER_DATA_LOAD`); `ItemComponentsSyncMessage` is now always sent, even when there are no patches # 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.33.2

2.4.33.2
16 окт. 2026 г.3,1 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.33.2 * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded or on dedicated servers (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `item_components` patches being lost by clients on dedicated servers / LAN after a `/reload` * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books ## Technical * `PoolInjectionReloadListener` is now `PoolInjectionLoader` and is no longer a reload listener: injections are loaded right before loot tables via `ReloadableServerRegistriesMixin` * `item_components` patches are now computed only on the server (`TagsUpdatedEvent` with `SERVER_DATA_LOAD`); `ItemComponentsSyncMessage` is now always sent, even when there are no patches # 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

3.0.0.0-beta

3.0.0.0-beta
15 окт. 2026 г.136Minecraft: 26.1.2neoforge
Скачать
Что нового
# 3.0.0.0-beta * Ported to Minecraft 26.1.2 (NeoForge 26.1.2.116, Java 25) ## Data Pack / Modpack creators * Vanilla renamed many ids and changed many component formats between 1.21.1 and 26.1.2: data packs, `item_components` definitions and json configs must be updated to the new vanilla formats * Attribute ids no longer have the `generic.`/`player.` prefix (e.g. `minecraft:generic.movement_speed` is now `minecraft:movement_speed`), including the ones in `players_attribute_modifiers.json` * `minecraft:attribute_modifiers` is now a list instead of an object with a `modifiers` field * Food effects and eat time are no longer part of `minecraft:food`, they're in `minecraft:consumable` * Removed `insanelib:enchantability` item component: vanilla now has `minecraft:enchantable` (e.g. `"minecraft:enchantable": {"value": 15}`) which does the same * Global loot modifiers (`insanelib:replace_loot`, `insanelib:drop_multiplier`, `insanelib:loot_purger`, `insanelib:disenchant`) now support NeoForge's `priority` field (default 1000, higher is applied first) * NeoForge now loads every file in `data/<namespace>/loot_modifiers/` and no longer uses `global_loot_modifiers.json`; the order is given by `priority` * `insanelib:recipe_removal` now checks the result shown by the recipe (recipe book display). Recipes without a display (e.g. special recipes) are never removed * Fixed loot pool injections (`loot_pool_injections`) not being applied when the world is loaded (they only worked after a `/reload`, using the injections of the previous load) * Fixed `merge_components` in `item_components` re-adding a component removed by a previous definition for the same item (e.g. one targeting the item and one targeting a tag containing it). A removed component now counts as absent: the merge json alone becomes the new value, and if it's not a valid component the removal is kept and an error is logged * Fixed a `merge_components` that fails to decode also undoing a previous removal of that component * Fixed `insanelib:enchant_with_treasure` and `insanelib:enchant_randomly_weightless` loot functions not enchanting books * Items in the copper `insanelib:equipment/*` tags are now the vanilla copper tools and armor * Time Stop No Player Online * Now stops the day time (world clocks) too, other than the game time * The weather integrated pack now uses the `advance_weather` game rule (was `doWeatherCycle`) * Non-curable effects (`ILMobEffect` / `MCUtils#createEffectInstance`) can no longer be removed by anything that clears all the effects when consumed (milk, totems, `minecraft:clear_all_effects` consume effect); `/effect clear` still removes them ## Technical * `ResourceLocation` is now `Identifier` in every method signature * Removed the `MixinExtras` jar-in-jar, NeoForge already provides it * Loot conditions and functions now implement `codec()` (`ILConditions` and `ILLootFunctions` now register `MapCodec`s) * Loot modifiers constructors now take the `priority` after the conditions * `AddEatEffectEvent` is now fired when a food item is consumed (from `Consumable#onConsume`); canceling it prevents the `minecraft:apply_effects` consume effects of the food. Added `getStack()` * `PlayerUseItemMovSpeedEvent` starting speed modifier is now the one from the item's `minecraft:use_effects` component. `ILEventFactory#onUseItemMovementSpeedModifier` takes the original speed modifier * `PlayerSprintEvent` is now checked on `LocalPlayer#isSprintingPossible`, so it also stops the player from sprinting, not only from starting to sprint * Effects cures * Removed `MobEffectInstanceAccessor` and `ILMobEffect#fillEffectCures` (NeoForge removed `EffectCure`) * Added `ICurableEffectInstance` (implemented on `MobEffectInstance`), `ILMobEffect#canBeCured()`, `MCUtils#isCurable` and `MCUtils#removeCurableEffects` * Non-curable effect instances created with `MCUtils#createEffectInstance` are not saved: they become curable again after a reload of the entity * `MCUtils#computeFoodFormula` now takes the `Consumable` (nullable) to get `eat_seconds` * `MCUtils#hurtIgnoreInvulnerability` now uses `hurtServer` and always returns false on client side * `ItemComponentsReloadListener.PROGRAMMATIC_PROVIDERS` now receive a `HolderLookup.Provider` instead of `RegistryAccess` * Item components patches are now computed on `DefaultDataComponentsBoundEvent` (server side only) instead of `TagsUpdatedEvent`, since default components are now bound after tags * `RecipeRemovalUtils` is now applied by a `RecipeManager` mixin before recipes are finalized; `RecipeRemovalUtils#removeTaggedRecipes(RecipeMap, HolderLookup.Provider)` replaces the old event handlers * `ClientUtils` * Removed `setRenderColor` and `resetRenderColor` (shader color no longer exists), use the color overload of `blitVerticallyMirrored` instead * `blitVerticallyMirrored` now takes a `GuiGraphicsExtractor` * `ExplosionAccessor` now targets `ServerExplosion` * `ILBlockTagProvider` and `ILItemTagProvider` no longer take an `ExistingFileHelper`; data generation now uses `GatherDataEvent.Client` * `ModNBTData#getList` ignores the type parameter, since lists no longer have a fixed type * `PoolInjectionReloadListener` has been renamed to `PoolInjectionLoader` and is no longer a reload listener: injections are loaded by `ReloadableServerRegistriesMixin` (`PoolInjectionLoader#load(ResourceManager)`) right before loot tables, since loot tables are loaded before reload listeners * Removed `LootModifierManagerMixin` (NeoForge now sorts loot modifiers by priority)
release

2.4.33.1

2.4.33.1
5 окт. 2026 г.6,1 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.33.1 * Client modules are no longer loaded on server side # 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.33.0

2.4.33.0
15 сент. 2026 г.4,4 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.33.0 * Removed Sound Overrides feature. Seemed a smart thing but to make it work properly would require too much work. # 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.32.0

2.4.32.0
6 сент. 2026 г.2,3 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.32.0 * Added Sound Overrides feature, allowing to override fuse and explosion sounds via NBT. Fuse sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.fuse_sound' on the entity. Explosion sound can be overridden by setting the NBT tag 'NeoForgeData.insanelib.sound_overrides.explosion_sound' on the entity. # 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.31.0

2.4.31.0
1 сент. 2026 г.1,8 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.31.0 * Added missing lang for the `insanelib:mob_detection_range` and `insanelib:push_resistance` attributes * Fixed a vanilla bug that made experience from the Grindstone always pop out from the top of the block instead of the side it's actually attached to (floor, ceiling, or the wall it's facing) ## Technical * Fixed ModNBTData method checking for persisted data named `contains` instead of `containsPersisted` * Added `MCUtils#getGrindstoneOutputPos(Level, BlockPos)`, returning the position facing the side a grindstone is attached to # 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.30.0

2.4.30.0
30 авг. 2026 г.594Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.30.0 * Added `insanelib:recipe_removal` * New item tag removing any recipe which output matches the items in the tag * `insanelib:creative_removal` * No longer requires a world restart to take effect after being updated: it's now reapplied automatically on `/reload` (and on any other tag reload) * Better matches items (e.g. Storage Drawers' Detached Drawer having custom components) * Fixed `insanelib:has_hidden_tooltip` showing the same tooltip as `insanelib:has_tooltip` instead of its own `.tooltip.hidden` translation key; items can now be in both tags to get both tooltips * Fixed `Item#getDefaultMaxStackSize()` ignoring stack size patches applied by the `ItemComponents` feature: it read the item's raw components field instead of going through the patched `components()`, so mods computing capacity from an item prototype without an `ItemStack` (e.g. Storage Drawers' drawer capacity) still saw the vanilla max stack size # 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs. Updating this tag requires a world restart. # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.29.0

2.4.29.0
24 авг. 2026 г.2,2 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.29.0 * Added `insanelib:no_invincibility_frames` damage type tag: damage sources whose damage type is in this tag will not grant invincibility frames (hurt cooldown) to the entity they damage. Fires the new `NoInvincibilityFramesEvent` when this happens # 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs, even if added by other mods # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.28.0

2.4.28.0
22 авг. 2026 г.855Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.28.0 * Added Creative Removal (moved from Insane Survival Overhaul): items in the `insanelib:creative_removal` item tag are removed from creative mode tabs, even if added by other mods # 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.27.2

2.4.27.2
22 авг. 2026 г.143Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.27.2 * Fixed missing better falling blocks default blacklist # 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.27.1

2.4.27.1
16 авг. 2026 г.1,5 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.27.1 * Fixed `insanelib:mob_detection_range` attribute modifiers showing as a flat value (e.g. `+0.4`) instead of a percentage (`+40%`) in item tooltips # 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.27.0

2.4.27.0
16 авг. 2026 г.67Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.27.0 * Added `ItemTooltips` base feature (moved from Insane Survival Overhaul): items in the `insanelib:has_tooltip` item tag get a tooltip matching their vanilla name + `.tooltip` (e.g. `item.minecraft.arrow.tooltip`); items in the new `insanelib:has_hidden_tooltip` tag get the same, but only shown while holding SHIFT # 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.26.0

2.4.26.0
16 авг. 2026 г.48Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.26.0 * Added `insanelib:mob_detection_range` attribute (-Double.MAX_VALUE~1, default 0) to living entities, reducing (negative values) or increasing (positive values) in percentage how far other entities can detect/see them # 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.25.0

2.4.25.0
14 авг. 2026 г.468Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.25.0 * Added `Disable shrink in stack count` config option to `ItemComponents` feature # 2.4.24.0 * Added `insanelib:mob_detection_range` attribute (0~1) to players, which reduces in percentage the range at which mobs can detect/see them. Implemented by hooking `LivingEvent.LivingVisibilityEvent` with `LOWEST` priority (so it modifies the final visibility value) and multiplying it by `1 - attributeValue` # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.24.0

2.4.24.0
12 авг. 2026 г.612Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.24.0 * Added `insanelib:mob_detection_range` attribute (0~1) to players, which reduces in percentage the range at which mobs can detect/see them. Implemented by hooking `LivingEvent.LivingVisibilityEvent` with `LOWEST` priority (so it modifies the final visibility value) and multiplying it by `1 - attributeValue` # 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.23.1

2.4.23.1
11 авг. 2026 г.403Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.23.1 * Fixed a rare `ConcurrentModificationException` in `JsonFeature`-based configs synced to client: `loadAndReadJson` (network sync) and `JsonConfig#loadAndReadFile` (file/reload) no longer `clear()` the list before repopulating it, which could race with another thread iterating the same list (e.g. singleplayer, where the client-side sync handler and the server tick thread share the same static list). They now add the new entries and remove the old ones instead, so the list is never left in a transient empty state # 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.23.0

2.4.23.0
8 авг. 2026 г.919Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.23.0 * Added `InCombat` base feature (moved from IguanaTweaksReborn): tracks the last time an entity dealt or took damage via a data key, so other mods can query `InCombat.isInCombat(livingEntity, seconds)` # 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.22.0

2.4.22.0
3 авг. 2026 г.1,5 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.22.0 * Added loot pool injections (`data/<namespace>/loot_pool_injections/*.json`): injects an item entry into an existing, named pool of a target loot table, so it competes for selection using the pool's own weighted roll alongside its original entries. Pools are auto-named by NeoForge (`main` if the loot table has a single pool, `pool0`/`pool1`/... otherwise) if they don't have names specified in the loot table (vanilla loot tables don't have names, so follow the previously mentioned pattern) ```json { "loot_table": "minecraft:chests/simple_dungeon", "pool": "main", "entry": { "type": "minecraft:item", "name": "minecraft:heart_of_the_sea", "weight": 5, "conditions": [{ "condition": "minecraft:random_chance", "chance": 0.05 }] } } ``` * Removed `insanelib:inject_loot_table` — NeoForge's own `neoforge:add_table` does the same thing (and, unlike this one, also splits the result across stacks bigger than the max stack size). Same `conditions`, same loot table value, just rename the `loot_table` field to `table` # 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.21.3

2.4.21.3
30 июл. 2026 г.1,5 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.21.3 * Fixed `insanelib:knockback_multiplier` (and any other `LivingKnockBackEvent` listener resolving the attacker via `getLastHurtByMob()`) picking the wrong, or no, attacker on sweep attack hits, since vanilla applies sweep knockback before the `hurt` call that updates `getLastHurtByMob()` for that hit * Added `CurrentAttacker` util, tracking the live attacker for the duration of each knockback call in `Player#attack` # 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.21.2

2.4.21.2
22 июл. 2026 г.5,6 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.21.2 * Bump for local maven publish # 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.21.1

2.4.21.1
22 июл. 2026 г.23Minecraft: 1.21.1neoforge
Скачать
Что нового
# 2.4.21.1 * Fixed items losing their real data components (and gaining `Items.AIR`'s) when they transiently pass through an empty (count 0) `ItemStack` state, such as during `Inventory#add` on a previously empty slot. This most visibly broke music discs, which would silently lose `jukebox_playable` and become unusable in jukeboxes # 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always # 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call # 2.4.20.1 * Fixed item components not being applied to connected clients # 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' # 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers # 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.21.0

2.4.21.0
16 июл. 2026 г.4,8 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.21.0 * `stackLimit` config option (Item Components) now actually works, allowing item stacks bigger than vanilla's 99 limit * Added an `alwaysShrinkStackCount` config option to shrink the item count text when it's bigger than 99, or always ## 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call ## 2.4.20.1 * Fixed item components not being applied to connected clients ## 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' ## 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers ## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.20.2

2.4.20.2
10 июл. 2026 г.1,8 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.20.2 * Fixed tool durability loss being silently reverted when the tool has a patched `max_damage` (e.g. hoes tilling, axes stripping), caused by `ItemStack#getComponents` handing out a new object identity on every call ## 2.4.20.1 * Fixed item components not being applied to connected clients ## 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' ## 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers ## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.20.1

2.4.20.1
5 июл. 2026 г.1,4 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.20.1 * Fixed item components not being applied to connected clients ## 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' ## 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers ## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.20.0

2.4.20.0
4 июл. 2026 г.278Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.20.0 * Added a new fix for https://bugs.mojang.com/browse/MC/issues/MC-145114 * Renamed 'Fixes feature' to 'Fixes' * Renamed 'Tags feature' to 'Nbt tags' ## 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers ## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.19.0

2.4.19.0
3 июл. 2026 г.330Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.19.0 * Added `no_ammo_consumption` NBT Tag, allowing for infinite crossbow offhand ammo * Also updated the wiki: https://github.com/Insane96/InsaneLib/wiki/%5B1.21.1%5D-NBT-Data * Also adds a config option to automatically apply the tag to Pillagers ## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.18.3

2.4.18.3
25 июн. 2026 г.1,6 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

1.23.4.6

1.23.4.6
23 июн. 2026 г.68,8 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

2.4.18.2

2.4.18.2
23 июн. 2026 г.356Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

1.23.4.5

1.23.4.5
22 июн. 2026 г.981Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

2.4.18.1

2.4.18.1
22 июн. 2026 г.237Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.18.0

2.4.18.0
13 июн. 2026 г.1,9 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.17.2

2.4.17.2
12 июн. 2026 г.262Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.17.1

2.4.17.1
12 июн. 2026 г.24Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.17.0

2.4.17.0
12 июн. 2026 г.49Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.16.0

2.4.16.0
24 мая 2026 г.3 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.15.1

2.4.15.1
23 мая 2026 г.345Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.15.0

2.4.15.0
3 мая 2026 г.3,5 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.14.1

2.4.14.1
26 апр. 2026 г.1,4 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.14.0

2.4.14.0
26 апр. 2026 г.24Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

2.4.13.1

2.4.13.1
22 апр. 2026 г.726Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.13.0-beta

2.4.13.0-beta
19 апр. 2026 г.556Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.12.2-beta

2.4.12.2-beta
18 апр. 2026 г.188Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.12.1-beta

2.4.12.1-beta
18 апр. 2026 г.40Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.12.0-beta

2.4.12.0-beta
18 апр. 2026 г.27Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.10.0-beta

2.4.10.0-beta
17 апр. 2026 г.113Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.9.3-beta

2.4.9.3-beta
5 апр. 2026 г.760Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
release

1.23.4.4

1.23.4.4
5 апр. 2026 г.71 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
beta

2.4.9.2-beta

2.4.9.2-beta
15 мар. 2026 г.1,3 тыс.Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.9.1-beta

2.4.9.1-beta
14 мар. 2026 г.93Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.9.0-beta

2.4.9.0-beta
13 мар. 2026 г.120Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.8.0-beta

2.4.8.0-beta
8 мар. 2026 г.193Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```json { "type": "insanelib:inject_loot_table", "conditions": [...], "loot_table": "minecraft:chests/simple_dungeon" } ``` * `insanelib:drop_multiplier` — multiplies the count of matching items in loot ```json { "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 ```json { "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 ```json { "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. ```json { "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. ```json { "function": "insanelib:enchant_with_treasure", "conditions": [...], "allow_curses": true, "allow_treasure": true } ``` `allow_curses`: include curse enchantments (tag `minecraft:curse`). `allow_treasure`: include 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) ```json { "condition": "insanelib:block_tag_match", "block_tag": "minecraft:logs" } ``` * `insanelib:killer_has_advancement` — passes if the killing player has completed the given advancement ```json { "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) ```json { "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 ```json { "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 ```java 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 ```java 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)
beta

2.4.7.1-beta

2.4.7.1-beta
7 мар. 2026 г.100Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.7.0-beta

2.4.7.0-beta
7 мар. 2026 г.36Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.6.2-beta

2.4.6.2-beta
6 мар. 2026 г.95Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.6.1-beta

2.4.6.1-beta
6 мар. 2026 г.68Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.6.1-beta * Changed MCUtils.computeFoodFormula variables * Removed effectiveness * Renamed hunger to nutrition ## 2.4.6.0-beta * Added back `InsaneLib.ONE_DECIMAL_FORMATTER` ## 2.4.5.0-beta * Added `MCUtils.computeFoodFormula` using EvalEx * Added back all the events ## 2.4.4.0-beta * Added back `feature_enabled` neoforge condition and loot condition ## 2.4.3.0-beta * Added back `PlayerUseItemMovSpeedEvent` and `PlayerSprintEvent` ## 2.4.2.0-beta * Moved Attack Speed Based Invincibility feature to ISO ## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.6.0-beta

2.4.6.0-beta
3 мар. 2026 г.267Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.6.0-beta * Added back `InsaneLib.ONE_DECIMAL_FORMATTER` ## 2.4.5.0-beta * Added `MCUtils.computeFoodFormula` using EvalEx * Added back all the events ## 2.4.4.0-beta * Added back `feature_enabled` neoforge condition and loot condition ## 2.4.3.0-beta * Added back `PlayerUseItemMovSpeedEvent` and `PlayerSprintEvent` ## 2.4.2.0-beta * Moved Attack Speed Based Invincibility feature to ISO ## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.5.0-beta

2.4.5.0-beta
3 мар. 2026 г.25Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.5.0-beta * Added `MCUtils.computeFoodFormula` using EvalEx * Added back all the events ## 2.4.4.0-beta * Added back `feature_enabled` neoforge condition and loot condition ## 2.4.3.0-beta * Added back `PlayerUseItemMovSpeedEvent` and `PlayerSprintEvent` ## 2.4.2.0-beta * Moved Attack Speed Based Invincibility feature to ISO ## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.4.0-beta

2.4.4.0-beta
3 мар. 2026 г.37Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.4.0-beta * Added back `feature_enabled` neoforge condition and loot condition ## 2.4.3.0-beta * Added back `PlayerUseItemMovSpeedEvent` and `PlayerSprintEvent` ## 2.4.2.0-beta * Moved Attack Speed Based Invincibility feature to ISO ## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.3.0-beta

2.4.3.0-beta
1 мар. 2026 г.116Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.3.0-beta * Added back `PlayerUseItemMovSpeedEvent` and `PlayerSprintEvent` ## 2.4.2.0-beta * Moved Attack Speed Based Invincibility feature to ISO ## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.2.0-beta

2.4.2.0-beta
1 мар. 2026 г.27Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.2.0-beta * Moved Attack Speed Based Invincibility feature to ISO ## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.1.1-beta

2.4.1.1-beta
27 февр. 2026 г.177Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.1.1-beta * Fixed concurrent modification exception ## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.1.0-beta

2.4.1.0-beta
27 февр. 2026 г.42Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.4.1.0-beta * 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 ```json { "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 ```java 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 ```java 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)
beta

2.4.0.1-beta

2.4.0.1-beta
27 февр. 2026 г.21Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.3.1.1-beta

2.3.1.1-beta
26 февр. 2026 г.67Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.3.1.0-beta

2.3.1.0-beta
26 февр. 2026 г.36Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.2.2.0-beta

2.2.2.0-beta
26 февр. 2026 г.36Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.2.1.0-beta

2.2.1.0-beta
26 февр. 2026 г.29Minecraft: 1.21.1neoforge
Скачать
Что нового
## 2.2.1.0-beta * Renamed Item Definitions to Item components (the data pack folder has also changed to `item_components`) * Added `remove_component`, 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 ```json { "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 ```java 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 ```java 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)
beta

2.2.0.0-beta

2.2.0.0-beta
25 февр. 2026 г.39Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```json { "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 ```java 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 ```java 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)
beta

2.1.2.5-beta

2.1.2.5-beta
23 февр. 2026 г.141Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 ```java 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)
beta

2.1.2.4-beta

2.1.2.4-beta
23 февр. 2026 г.22Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 ```java 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)
beta

2.1.2.3-beta

2.1.2.3-beta
23 февр. 2026 г.21Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 ```java 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)
beta

2.1.2.2-beta

2.1.2.2-beta
23 февр. 2026 г.27Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 ```java 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)
beta

2.1.2.1-beta

2.1.2.1-beta
23 февр. 2026 г.27Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 ```java 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)
beta

2.1.2.0-beta

2.1.2.0-beta
23 февр. 2026 г.18Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 now create a single module mod via `ILModConfig` constructor ```java 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)
beta

2.1.1.0-beta

2.1.1.0-beta
22 февр. 2026 г.27Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 now create a single module mod via `ILModConfig` constructor ```java 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)
beta

2.1.0.1-beta

2.1.0.1-beta
22 февр. 2026 г.25Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 now create a single module mod via `ILModConfig` constructor ```java 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)
beta

2.1.0.0-beta

2.1.0.0-beta
22 февр. 2026 г.20Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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 ```java 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 now create a single module mod via `ILModConfig` constructor ```java 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)
beta

2.0.4.0-beta

2.0.4.0-beta
22 февр. 2026 г.28Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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)
alpha

2.0.3.0-alpha

2.0.3.0-alpha
21 февр. 2026 г.25Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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)
alpha

2.0.2.1-alpha

2.0.2.1-alpha
21 февр. 2026 г.25Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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)
alpha

2.0.2.0-alpha

2.0.2.0-alpha
21 февр. 2026 г.27Minecraft: 1.21.1neoforge
Скачать
Что нового
## 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)
alpha

2.0.1.0-alpha

2.0.1.0-alpha
20 февр. 2026 г.26Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog ## 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)
alpha

2.0.0.5-alpha

2.0.0.5-alpha
20 февр. 2026 г.25Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog ## 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)
alpha

2.0.0.4-alpha

2.0.0.4-alpha
19 февр. 2026 г.41Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog ## 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)
release

1.23.4.3

1.23.4.3
16 февр. 2026 г.43,1 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.4.2

1.23.4.2
29 янв. 2026 г.43,8 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.4.0

1.23.4.0
10 янв. 2026 г.13,6 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.4.0

1.23.4.0
9 янв. 2026 г.766Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.3

1.23.3
2 янв. 2026 г.14,7 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.2

1.23.2
27 дек. 2025 г.5,3 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.1

1.23.1
27 дек. 2025 г.287Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.23.0

1.23.0
14 дек. 2025 г.9,4 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.22.1

1.22.1
10 дек. 2025 г.3,3 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.21

1.21.21
28 сент. 2025 г.118,3 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.20

1.21.20
25 авг. 2025 г.42,6 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.19

1.21.19
24 авг. 2025 г.1,5 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.18

1.21.18
13 авг. 2025 г.10,1 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.17

1.21.17
7 авг. 2025 г.5,3 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.16

1.21.16
5 авг. 2025 г.3,4 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.14

1.21.14
10 июл. 2025 г.52,2 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.13

1.21.13
8 июл. 2025 г.14 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.12

1.21.12
25 июн. 2025 г.221 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.10

1.21.10
25 июн. 2025 г.278Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.9

1.21.9
23 июн. 2025 г.49,1 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.8

1.21.8
23 июн. 2025 г.163Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.7

1.21.7
11 июн. 2025 г.16,3 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.6

1.21.6
9 июн. 2025 г.3,9 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.5

1.21.5
9 июн. 2025 г.122Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.4

1.21.4
8 июн. 2025 г.393Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.3

1.21.3
7 июн. 2025 г.1,6 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.2

1.21.2
5 июн. 2025 г.1,4 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.21.1

1.21.1
1 июн. 2025 г.45,8 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.20.4

1.20.4
28 мая 2025 г.10,5 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.20.3

1.20.3
27 мая 2025 г.706Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.20.2

1.20.2
26 мая 2025 г.460Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.20.1

1.20.1
26 мая 2025 г.5 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.20.0

1.20.0
25 мая 2025 г.682Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.19.0

1.19.0
29 мар. 2025 г.54,3 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.18.3

1.18.3
23 февр. 2025 г.34,6 тыс.Minecraft: 1.20.1forge
Скачать
Что нового
https://github.com/Insane96/InsaneLib/blob/1.20.1/changelog.md
release

1.15.1

1.15.1
10 дек. 2024 г.77,6 тыс.Minecraft: 1.20.1forge, neoforge
Скачать
release

1.13.5

1.13.5
17 июл. 2024 г.170,8 тыс.Minecraft: 1.20.1forge
Скачать
release

1.13.2

1.13.2
13 апр. 2024 г.28,5 тыс.Minecraft: 1.20.1forge
Скачать
release

1.12.1

1.12.1
24 нояб. 2023 г.44 тыс.Minecraft: 1.20.1forge
Скачать
release

1.11.1

1.11.1
1 окт. 2023 г.3,8 тыс.Minecraft: 1.20.1forge
Скачать
release

1.9.2

1.9.2
1 окт. 2023 г.820Minecraft: 1.19.4forge
Скачать
release

1.7.5

1.7.5
1 окт. 2023 г.82 тыс.Minecraft: 1.19.2forge
Скачать
release

1.5.1

1.5.1
1 окт. 2023 г.13,7 тыс.Minecraft: 1.18.2forge
Скачать