premium banner
Unofficial server performance and memory leak patch for the From The Caves mod.

Description

NOTE: This is an unofficial patch. All credit for From The Caves goes to its original author. This mod is temporary and will be discontinued when the From The Caves mod is updated and fixes these issues. 


From The Caves Patch
is an unofficial performance and bug-fix patch for the From The Caves mod.

This mod does not add or remove content, it only fixes issues to make the mod run better.

All fixes are toggleable via the config file (config/fromthecavespatch-common.toml).

Memory Leak Fixes

From The Caves uses many static collections to track per-player and per-entity state across its procedures. The problem is that most of these collections are never cleaned up when a player logs out or an entity is removed. 

SpawnUpsideDownCrossInVillageProcedure
AngerSystemProcedure
RightClickWCrossProcedure / RightClickWICrossProcedure
CrossCompassBehaviorProcedure
DeepDarknessDragProcedure
FlamingoHauntedProcedure
StepsAmbushProcedure
ArmorStandEventsProcedure, WindowEventsProcedure, LightEventsProcedure, NoteBlockEventsProcedure, ItemFrameEventsProcedure, ChestEventsProcedure, TrapdoorEventsProcedure
AnimalFearManagerProcedure
CemeteryMarkerFlickerProcedure / TorchFlickerNearMobProcedure

Performance Fixes

Village structure search (chunk loading)

SpawnUpsideDownCrossInVillageProcedure and SpawnChestWithCrossInVillageProcedureProcedure both call ServerLevel.findNearestMapStructure() on every player tick to look for a nearby village. This method can trigger chunk loading across a large radius, causing lag spikes. This patch redirects the call to only search already-loaded chunks. The original search behavior can be restored via config.

Audio capture retry throttling

When a player has no working microphone (or audio capture is failing for any reason), From The Caves calls AudioCapture.startCapture() every single client tick. Internally this calls AudioSystem.getMixerInfo(), which triggers Java's service loader and scans audio devices. This patch throttles the retry to once every 10 seconds (200 ticks) when capture is not running, however, there is no impact when capture is working normally. Can be disabled via config.

Cemetery marker chunk force-loading

CemeteryMarkerBlockEntity.onLoad() originally called ServerLevel.forceChunk() to force-load up to 17 chunks surrounding every cemetery marker every time the marker's own chunk loaded. This patch cancels the force-loading while still allowing the marker to register correctly with the cemetery system.


Optional Fixes

Remove Possessed Pig Spawning (disabled by default)

There is a strange issue that causes alot of pigs to spawn.
From The Caves adds a "possessed pig" entity to every biome's spawn list. Enabling this config option removes the possessed pig from all biome spawn lists. Vanilla pig spawning is unaffected.

"protectTamedCats" default = True.

ALL_FLEE event adds a flee-from-player goal to tamed cats. They run far enough that their chunk unloads, and they never come back. 

Configuration

1.1.0: "Event" config category added. The ability to disable any horror event.

patchEnabled  --> disable/enable patches


onlyLoadedChunks --> Restricts village structure search to already-loaded chunks

reduceAudioSystemCalls --> Throttles audio capture retry to once every 10 seconds

removePossessedPigSpawn --> Removes FTC's possessed pig from all biome spawn lists

Compatibility

Requires From The Caves to be installed. This mod patches it directly and will not function without it.

This mod has only been tested on From The Caves 0.6.926 on Forge 1.20.1.

mininotprime's From The Caves: https://www.curseforge.com/minecraft/mc-mods/from-the-caves

If you have any suggestions or issues about this mod please leave a comment!