3.0.1.0-beta
Curse Maven Snippet
What's new
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'sConfigurationScreen) 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_dropsis 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_multiplierloot modifier deleting unstackable items (e.g. tools and armor) matching the item/tag from the loot whenignore_unstackableis true (the default). They are now left untouched as intended - Fixed
insanelib:loot_purgerloot modifier- With
start_range> 0 the start range was subtracted twice, purging all the loot right afterstart_rangeand reaching 0 only atstart_range + end_rangeinstead ofend_range - With
apply_to_damageable, items generated beyondend_rangewere repaired (even fully). Beyondend_rangethe loot is now left untouched - Fixed a division by zero when
end_rangeis equal tostart_range - Fixed loot generated more than ~46000 blocks from spawn being treated as if it was at spawn
- With
insanelib:replace_loot- With
amount_to_replace, the remaining items no longer lose their components (enchantments, damage, etc.) - Empty
chancesormultipliersare now reported as an error when loading instead of crashing when generating loot
- With
- Fixed item stacks keeping the components of an
item_componentsdefinition 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_componentspatches at the same time - Fixed Player Attributes modifiers being lost after a
/reload - Fixed creative tabs being rebuilt from the integrated server thread on
/reloadin singleplayer - Fixed an invalid
loot_pool_injectionsentry 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
ILModConfigcan now be used withModConfig.Type.SERVERconfigs- Fixed
Cannot get config value before config is loadedcrash when a SERVER config gets unloaded (server stopping, leaving a singleplayer world).ModConfigEvent.Unloadingis now ignored and@Configfields keep the last values read ConfigOption#set(andBlacklist,MinMaxConfig,DifficultyBasedConfig,ObjTagoptions) andFeature#setEnabledConfignow 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
- Fixed
- Added
ConfigUtils#isLoadedandConfigUtils#canSet - Added
ILModConfig#getModContainersandILConfigScreen - 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#onLoadon 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 aConcurrentModificationExceptionwhile the integrated server reloads them. Lists of JsonConfigs read on the client should use it ItemComponentsReloadListener.PATCHED_COMPONENTSandSYNCED_PATCHESare now immutable maps replaced as a whole instead of being modified. AddedItemComponentsReloadListener#getUnpatchedComponents(the components bound to the item's holder)ItemComponentsSyncMessageis now ignored in singleplayer / LAN host, as the patches are shared with the integrated server- Removed
ItemComponentsFeature.stackLimit, useItemComponentsFeature#getStackLimit. AddedItemComponentsFeature#stackSizeCodec.Item.ABSOLUTE_MAX_STACK_SIZEis no longer modified - Fixed
MCUtils#addAttributeModifierToItemStacknever adding the modifier - Fixed
DisenchantModifierandLootPurgerModifiercreated through theirBuildercrashing (blacklist tags leftnull) AttributeModifierOperationSerializernow serializes the operation as a string (e.g."add_value"), the same format it deserializes, instead of an objectModNBTData#get(ItemStack, ...)now returns the type default (0/false) like the other variants instead ofnullwhen the stack has no custom dataModNBTData#removeno longer creates missing compounds and removes the ones left empty. Removing the last mod data from an item stack now removes thecustom_datacomponent, so it stacks again with stacks without itFeature.isEnabled(Class)now returns false instead of crashing for features that are not loadedInsaneLib.ONE_DECIMAL_FORMATTERis now also available on dedicated serversCurrentAttacker#resolvenow falls back togetLastHurtByMob()only if the victim was hurt by it in the current tickILNearestAttackableTargetGoal's default target chance now goes throughreducedTickDelaylike vanilla's (10 -> 5)- Fixed
SerializableAttributeModifier#fromNetworkreading the wrong id in the error message for an unknown attribute TimeStopNoPlayerOnline.STOP,TCandSEASONSare now the functions' idsObjTag#isValidnow returns false when the id wasn't found in the registry, as documented. Missing items initem_componentsare now logged and missing ids inObjTagValuelists 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_componentsdefinitions 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_speedis nowminecraft:movement_speed), including the ones inplayers_attribute_modifiers.json minecraft:attribute_modifiersis now a list instead of an object with amodifiersfield- Food effects and eat time are no longer part of
minecraft:food, they're inminecraft:consumable
- Attribute ids no longer have the
- Removed
insanelib:enchantabilityitem component: vanilla now hasminecraft: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'spriorityfield (default 1000, higher is applied first)- NeoForge now loads every file in
data/<namespace>/loot_modifiers/and no longer usesglobal_loot_modifiers.json; the order is given bypriority
- NeoForge now loads every file in
insanelib:recipe_removalnow 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_componentsinitem_componentsre-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_componentsthat fails to decode also undoing a previous removal of that component - Fixed
insanelib:enchant_with_treasureandinsanelib:enchant_randomly_weightlessloot 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_weathergame rule (wasdoWeatherCycle)
- 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_effectsconsume effect);/effect clearstill removes them
Technical
ResourceLocationis nowIdentifierin every method signature- Removed the
MixinExtrasjar-in-jar, NeoForge already provides it - Loot conditions and functions now implement
codec()(ILConditionsandILLootFunctionsnow registerMapCodecs) - Loot modifiers constructors now take the
priorityafter the conditions AddEatEffectEventis now fired when a food item is consumed (fromConsumable#onConsume); canceling it prevents theminecraft:apply_effectsconsume effects of the food. AddedgetStack()PlayerUseItemMovSpeedEventstarting speed modifier is now the one from the item'sminecraft:use_effectscomponent.ILEventFactory#onUseItemMovementSpeedModifiertakes the original speed modifierPlayerSprintEventis now checked onLocalPlayer#isSprintingPossible, so it also stops the player from sprinting, not only from starting to sprint- Effects cures
- Removed
MobEffectInstanceAccessorandILMobEffect#fillEffectCures(NeoForge removedEffectCure) - Added
ICurableEffectInstance(implemented onMobEffectInstance),ILMobEffect#canBeCured(),MCUtils#isCurableandMCUtils#removeCurableEffects - Non-curable effect instances created with
MCUtils#createEffectInstanceare not saved: they become curable again after a reload of the entity
- Removed
MCUtils#computeFoodFormulanow takes theConsumable(nullable) to geteat_secondsMCUtils#hurtIgnoreInvulnerabilitynow useshurtServerand always returns false on client sideItemComponentsReloadListener.PROGRAMMATIC_PROVIDERSnow receive aHolderLookup.Providerinstead ofRegistryAccess- Item components patches are now computed on
DefaultDataComponentsBoundEvent(server side only) instead ofTagsUpdatedEvent, since default components are now bound after tags RecipeRemovalUtilsis now applied by aRecipeManagermixin before recipes are finalized;RecipeRemovalUtils#removeTaggedRecipes(RecipeMap, HolderLookup.Provider)replaces the old event handlersClientUtils- Removed
setRenderColorandresetRenderColor(shader color no longer exists), use the color overload ofblitVerticallyMirroredinstead blitVerticallyMirrorednow takes aGuiGraphicsExtractor
- Removed
ExplosionAccessornow targetsServerExplosionILBlockTagProviderandILItemTagProviderno longer take anExistingFileHelper; data generation now usesGatherDataEvent.ClientModNBTData#getListignores the type parameter, since lists no longer have a fixed typePoolInjectionReloadListenerhas been renamed toPoolInjectionLoaderand is no longer a reload listener: injections are loaded byReloadableServerRegistriesMixin(PoolInjectionLoader#load(ResourceManager)) right before loot tables, since loot tables are loaded before reload listeners- Removed
LootModifierManagerMixin(NeoForge now sorts loot modifiers by priority)
This mod has no additional files

