All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Invasive Optimizations

Invasive Optimizations

by Qther • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Invasive Optimizations

Logo

Invasive optimizations for other mods, aiming to reduce server-side (tick) lag.
The invasive nature of these changes makes them more likely to crash or otherwise break.
Please report such issues to the issue tracker and I will try to respond to them in a timely manner.
Each change can also be individually toggled through the config and should solve any issues temporarily while you wait for a fix.

Optimizations included in this mod fall under one of the following categories:

  1. Patch has been sent but has not reviewed for a long time or expected to be useful in the time before the next release.
  2. Patch denied due to reasons unrelated to quality, such as non-maintenance, in which case future optimizations will also not be sent to that mod.
  3. Patch has no avenue of contribution (e.g. closed source mods)
  4. Patch already applied but not available in released versions.
  5. Patch is experimental or of dubious usefulness (these are disabled by default)

Current optimizations:

  • Accessories
    • accessories.roundabout_collection (1): Avoid iterating Map entrySet by directly accessing underlying keySet. (PR)
  • Applied Energistics 2
    • ae2.cache_fuzzy_search_max_value (4): Cache AEItemKey::fuzzySearchMaxValue during init. (PR)
  • Botany Pots
    • botanypots.hopper_insertions (1): Hopper Botany Pot exponential insertion backoff and emptiness tracking (PR)
  • Create
    • create.fail_fast_clipboard_migration (4): Fails fast when attempting clipboard migration in ItemStack.<init>, reducing impact to this extremely common operation. (PR)
  • Pastel
    • pastel.nuke_item_predicate_mixin (4): Nukes Pastel's ItemPredicateMixin as it is unnecessary and expensive
  • Pipez (Also see Pipez Lag Fix by AlmanaX21 for exponential backoff)
    • pipez.constant_fullness_checks (2): Turns connection/inventory fullness into O(1) operations
    • pipez.early_exits (2): Reduces unnecessary work done by exiting targeted functions early if the right conditions are met
    • pipez.extract_looped_work (2): Move some work out of loops to avoid duplicated work
    • pipez.filter_caching (2): Caches tag filters using BitSets, integer arrays, or single integers. Uses more memory and causes loading pipes to take marginally longer.
    • pipez.nbt_comparisons (2): Drastically improves performance of NBT comparisons by minimizing serialization/deserialization operations
    • pipez.stream_abuse (2): Reduces abuse of Streams in hot paths to reduce allocation rate (PR)
  • Placebo
    • placebo.lazy_string_concatenation (1): Pass a Supplier to Object#requireNonNull in DynamicHolder#get as it is a cold path in hot code. (PR)
    • placebo.streamless_hashing (1): Replaces CachedObject#hashComponents with equivalent code that does not use the Stream API. (PR)
  • SFM
    • sfm.filter_caching (5): Caches item and fluid filters (regular/regex and tag filters for now) using BitSets, integer arrays, or single integers. Uses more memory and causes first compiles to take longer.
  • Xycraft Machines
    • xycraft_machines.redstone_checks (3): Extractors check for redstone signals every tick rather than only when their neighbours update
    • xycraft_machines.unnecessary_resorting (3): Extractors resort their recipes every so often but is usually not necessary

How to Install Invasive Optimizations (Mod)

Invasive Optimizations by Qther is verified for Neoforge across Minecraft versions 1.21, 1.21.1 (latest release: 1.0.26, file size: 274 KB). Follow the steps below to install it safely from ModCraft.tv:

  1. Click the Download button above and select your Minecraft version (1.21, 1.21.1) and platform (Neoforge).
  2. Make sure you have the compatible loader or environment installed for Neoforge.
  3. Move the downloaded Invasive Optimizations file into your Minecraft .minecraft/mods folder and launch the game.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.21.x
Neoforge
10d ago 1
1.21.x
Neoforge
18d ago 1
1.21.x
Neoforge
2mo ago 1
1.21.x
Neoforge
3mo ago 1
1.21.x
Neoforge
3mo ago 1
1.21.x
Neoforge
3mo ago 1
1.21.x
Neoforge
3mo ago 1
1.21.x
Neoforge
4mo ago 1
1.21.x
Neoforge
4mo ago 1
1.21.x
Neoforge
4mo ago 1
1.21.x
Neoforge
4mo ago 1
1.21.x
Neoforge
4mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
1.21.x
Neoforge
6mo ago 1
Auto-generated Changelog:
  • feat: dynamic recipe caches
  • feat: create.recipe_caching
  • refactor: static recipe caches for common types
  • refactor: move oritech.recipe_caching
  • feat: oritech.recipe_caching
  • feat: add generic recipe cache for future use
Auto-generated Changelog:
  • fix: crash on unsupported types in sfm.filter_caching
Auto-generated Changelog:
  • fix: logic error in pipez.early_exits deepExactCompare
  • refactor: optimize and fix edge cases for pipez.nbt_comparisons
Auto-generated Changelog:
  • fix: pipez fallback to unoptimized nbt match if deserialization fails
  • refactor: remove unused wrapper class
Auto-generated Changelog:
  • perf: slight optimization for large array matchers
  • perf: sfm.filter_caching cache With instead of WithTag
  • fix: filter caching mistakes
  • perf: only resort xycraft extractor recipes when data is reloaded
Auto-generated Changelog:
  • perf: switch to IntPredicate to avoid un/boxing
  • feat: pipez.filter_caching
  • perf: add single-value matchers for filter caching
Auto-generated Changelog:
  • fix: change pastel url
  • fix: check item type for cached nbt comparisons
Auto-generated Changelog:
  • perf: specific matchers to reduce allocations
  • perf: cache predicates used for filter caching
Auto-generated Changelog:
  • perf: further improve filter caching
  • refactor: rename {SFM,}FilterCachingExtension
  • perf: improve and genericize bitsets
  • perf: implement skipped bitsets
  • perf: shrink bitsets used by sfm.filter_caching
Auto-generated Changelog:
  • perf: improve placebo.lazy_string_concatenation
  • feat: sfm.filter_caching
Auto-generated Changelog:
  • fix: pipez crash (#1)
  • feat: placebo.streamless_hashing and placebo.lazy_string_concatenation
  • feat: ae2.cache_fuzzy_search_max_value
  • fix: properly delete ItemPredicateMixin
Auto-generated Changelog:
  • perf: early exit for accessories.roundabout_collection
  • refactor: cancel Pastel's ItemPredicateMixin instead of overwriting it
  • feat: accessories.roundabout_collection
  • fix: null check ModList for crash report enhancement
Auto-generated Changelog:
  • feat: add create to optional deps
  • feat: create.fail_fast_clipboard_migration
  • fix: config not respecting values
  • refactor: config rework again
Auto-generated Changelog:
  • fix: add pastel.nuke_item_predicate_mixin to config
Auto-generated Changelog:
  • refactor: rename pastel mixin method
  • feat: add pastel to optional deps
  • feat: pastel.nuke_item_predicate_mixin
  • fix: only register XycraftMachinesEvents if xycraft_machines is loaded
  • feat: remove pipez mixins version scope
  • feat: add MixinSquared as a dependency for future usage
  • feat: add BlockPosSet util for future use
  • refactor: remove Config#get
  • feat: refine xycraft_unnecessary_resorting
Invasive Optimizations Icon
Download Invasive Optimizations
Select game version
Select platform