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!
