promotional bannermobile promotional banner

PatchLib - Bug Fixes, Crash Fixes & Mod Compat

A configurable collection of bug fixes, crash fixes and compatibility patches for mods like Tom's Simple Storage, Create, Vampirism, Toxony, Prickle and Arclight. Every patch auto-skips when the mod isn't installed. Stabilize your modpack or server.

PatchLib is a random assortment of bug fixes, crash fixes and compatibility patches for various mods — Farmer's Delight, Tom's Simple Storage, Vampirism, Toxony, Create, KubeJS, Arclight and more.

I originally built it just to stop the servers I run from crashing. Over time it grew into a proper little library of fixes, and at some point it stopped making sense to keep it to myself — if one of these crashes has cost you a server restart at 2 AM, this is for you.

Patches only run when they are actually needed

This is the part that matters if you maintain a modpack. PatchLib never touches a mod you do not have installed. Before a single patch is applied, it checks:

  • Is the target mod installed? If not, the patch is skipped — no errors, no log spam.
  • Is the mod version actually affected? Several fixes are bound to the exact versions that carry the bug. Update the mod past it and the patch quietly steps aside instead of fighting the official fix.
  • Does another mod already patch this? Known conflicts disable the patch automatically.
  • Is this the right side? Client-only fixes are never loaded on a dedicated server.

Every decision is printed on startup, so you always know what is running:

[PatchLib] --- Patch Status Report (dedicated server) ---
[PatchLib]  compat.create_contraption_collider [...] -> ACTIVE
[PatchLib]  farmersdelight.tag_load_order      [...] -> SKIPPED (target not present)
[PatchLib]  patchouli.book_registry_lookup     [...] -> CLIENT ONLY (not loaded on a dedicated server)
[PatchLib] --- 5 of 18 patches active ---

Drop it into a pack with none of the target mods and it does exactly nothing.

Included fixes

Crash fixes

Mod What it fixes
Tom's Simple Storage IllegalStateException: Do not call getCapability on an invalid cache crashing the tick loop from InventoryConnectorBlockEntity. A retired capability cache is now treated as an empty inventory.
Toxony Thrown Oil Pot crashing with a null itemStack after a chunk reload or restart — the stack is now saved to NBT, and onHit is guarded.
Prickle / PigPen Unreadable config aborting the whole datapack load, leaving the server hung at startup. Falls back to defaults, keeps a copy of the broken file, and lets the config heal itself.
Prickle Config format flipping between runs because the property adapters are resolved through the thread context classloader. Now resolved deterministically.
Portable Tanks NullPointerException when a tank item has no fluid NBT.
KubeJS ClassCastException during capability registration and server script loading when a pack registers builders of mixed types.
Vampirism NullPointerException in ActionHandler.deactivateAllActions on hybrid servers.

Arclight / hybrid server fixes

  • ClassCastException when modded entities run Villager AI tasks
  • NullPointerException in Brain.tick from Arclight's villager career redirect
  • ClassCastException mapping Friends & Foes entities to Bukkit wrappers

These only load when Bukkit classes are present, so they are inert on plain NeoForge.

Compatibility & behaviour fixes

Mod What it fixes
Create NullPointerException in ContraptionCollider when a movement axis is null
YUNG's Better End Island Ender Dragon being spawned twice
Farmer's Delight Tag keys left null by mod load order
Copper Age Backport Copper armour registered without durability
Subtle Effects End Remastered portal frame ticker never firing
Just Enough Resources (client) Modded biomes missing from JER tabs
Patchouli (client) Modded book cover items failing to resolve

Version-bound patches

A few fixes only apply to the mod versions that actually carry the bug. If your version is newer, PatchLib reports the patch as skipped — that is intended, not a failure:

Patch Applies to
Farmer's Delight — tag load order 1.3.1 only
KubeJS — builder casts below 2101.7.2 (and disabled when KubeJS Tweaks is present)
Copper Age Backport — armour durability 0.1.4 and older
Subtle Effects — End Remastered ticker 1.11.0 only

Everything else applies to any version of its target mod.

Configuration

Every patch has its own toggle in config/patchlib-patches.properties. The file is generated on first launch with one commented entry per patch:

# --- toms_storage ---
# Treats a retired NeoForge BlockCapabilityCache as an empty inventory instead of throwing
# IllegalStateException out of InventoryConnectorBlockEntity ticking
toms_storage.stale_capability_cache=true

If a fix ever conflicts with something, turn off that one line — no need to remove the mod.

Sides

PatchLib is a server-side mod, optional on the client. It registers no network packets and no registry entries, so players without it can join your server normally. Installing it on the client as well simply adds the two client-side fixes on top.

Requirements

  • Minecraft 1.21.1
  • NeoForge 21.1+
  • No dependencies

⚠ Please read before reporting

These patch bugs in other people's mods. As those mods update, some of these issues will be fixed properly at the source. Where I know the affected version range, PatchLib disables the patch automatically once you update past it — but I cannot predict every future release. If a mod fixes something natively and the patch gets in the way, just set it to false in the config.

Bug reports about the patches themselves are very welcome. Bug reports about the patched mods belong to their authors.

The PatchLib - Bug Fixes, Crash Fixes & Mod Compat Team

profile avatar
  • 4
    Followers
  • 18
    Projects
  • 80.8K
    Downloads

More from epicskydexView all