Move the completed 2026-09 candidate review (MODLIST-REVIEW/-GROUPS, CANDIDATE-APPENDIX, PACK-CONTEXT), FINDINGS.md and the shipped FTB Chunks swap write-up into analysis/archive/, with a README mapping their old paths. The review's build pieces, subagent intermediates and Modrinth API dumps are deleted: the assembled reports carry their content. MODLIST-GROUPS.md was a byte-for-byte duplicate of analysis/groups-table.md. Also: drop the now-pointless FINDINGS/MODLIST packwizignore lines (analysis/ covers the archive), and gitignore *.tar.gz so the 650 MB map-migration world tarball can't be committed by accident.
40 KiB
Onion MC - Configuration, Compatibility & Performance Review
Pack: Onion MC 0.1.0 - Minecraft 1.21.1 / NeoForge 21.1.251 - 146 mods (packwiz; 141 Modrinth + 5 CurseForge) Scope: options and settings that improve inter-mod behaviour, performance, or are useful to the players and the server administrator.
Snapshot note. The mod-list statistics in section 1 were measured against an earlier pack revision (140 entries). The pack has since changed: FTB Chunks was replaced by Open Parties and Claims + Xaero's World Map/Minimap, the rest of the FTB suite that depended on it (FTB Quests, FTB Teams, FTB XMod Compat) was removed, Iris/shaders landed upstream, and Clumps/C2ME/Noisium were added. Sections 3.3 and 7.1 have been updated for these; section 1's counts have not been re-run.
How to read this document
Every claim is tagged with a confidence level, because "a Reddit comment said so" and "I read the mod's config source" are not the same thing.
| Tag | Meaning |
|---|---|
| VERIFIED | Read from the mod's own jar metadata, upstream source code, or bundled default config. |
| DOCUMENTED | Stated in official project docs (Modrinth/GitHub/wiki/NeoForge docs). |
| COMMUNITY | User reports (Reddit, forums). Directionally useful, not authoritative. |
| INFERENCE | My reasoning from the above. |
Methods used: Modrinth API (project + version metadata for all 131 Modrinth-tracked mods), extraction
of all 131 mod jars (reading META-INF/neoforge.mods.toml for dependencies, sides and declared
incompatibilities), upstream source/config files on GitHub/GitLab, and official documentation.
Section 8 lists what is still unverified. Nothing there should be acted on as fact.
1. Pack state - it is in good shape
This matters because it means the work here is tuning, not repair. There is no fire to put out.
1.1 Integrity - VERIFIED
| Check | Result |
|---|---|
| Version validity (every pinned version supports 1.21.1 + NeoForge/Forge) | 129 / 131 OK |
| Unsatisfied required dependencies | 0 |
side flags that disagree with Modrinth's authoritative client/server support |
0 |
| Mods that would be wrongly installed on a dedicated server | 0 |
- The two non-"release" pins are Incendium and Sound Physics Remastered, both tagged
alphaon Modrinth. For Incendium that is normal (Stardust Labs datapacks); for Sound Physics Remastered 1.5.1 it is currently the only 1.21.1 NeoForge build. - Libs that look "missing" are correctly bundled via jar-in-jar:
apollib(inside Tectonic and Lithostitched),flywheel+ponder(inside Create),atmosphere(Slice & Dice),sablecompanion(Sable),mezz_config(JEI),Registrate(Create/Ars Delight/Twilight Delight). - The 16 client-only mods carry
side = "client", sopackwiz-installer -s serverwill exclude them. The server mod list is already correct - do not hand-prune it.
1.2 Version currency - VERIFIED
108 / 131 pins are the newest 1.21.1 NeoForge build. The 23 that are behind are mostly trivial patch bumps, with three worth a decision:
| Mod | Pinned | Newest 1.21.1 | Note |
|---|---|---|---|
| Terralith | 2.5.8 | 2.6.2 | Minor bump. New worlds only - see section 2.4. |
| Apotheosis | 8.8.0 | 8.9.0 | Feature release. |
| Sophisticated Storage | 1.5.91 | 1.6.0 | Minor bump. |
Also available: NeoForge 21.1.252 (pack pins .251). The 21.1.x line is the 1.21.1 LTS branch and still receives fixes, so a patch bump is low-risk if you want bugfixes.
1.3 Declared incompatibilities - VERIFIED
These are asserted by the mods' own metadata. They are not opinions.
| Mod | Declares incompatible | In pack? |
|---|---|---|
create |
radium, palladium |
No [OK] - never add Radium |
sodium |
embeddium (any version) |
No [OK] - never add Embeddium |
sable |
scalablelux, sablecompanion > 1.6.0 |
No [OK] |
distanthorizons |
ssrd <= 1.8.6 |
1.8.7 [OK] - one release clear of a hard break |
geckolib |
geckoanimfix |
No [OK] |
cristel-lib |
t_and_t <= 1.13.3 |
1.13.11 [OK] |
1.4 Hard version constraints - do not break these
VERIFIED from mod metadata. These are the version pins that are load-bearing:
- Sodium must stay >=
0.8.12-alpha.2+mc1.21.1.sabledeclares every Sodium below that incompatible. Current 0.8.13 is fine. Downgrading Sodium breaks Create Aeronautics. - SSRD must stay >= 1.8.7. Distant Horizons declares SSRD <= 1.8.6 incompatible.
create-enchantment-industryrequires Create >= 6.0.10 andcreate_dragons_plus>= 1.11.9. The pack sits exactly on both minimums, so Create cannot be downgraded.ssrdrequiressableandsodium(sodiumatside=CLIENT, so the dedicated server is unaffected).- Towns and Towers must stay > 1.13.3 (cristel-lib constraint).
2. Where the server load actually comes from
Four cost centres dominate, in rough order of impact. Everything in section 3 maps to one of these.
- Worldgen & structure density - this pack stacks Terralith + Tectonic + Incendium + Nullscape + Towns and Towers + When Dungeons Arise + nine YUNG's mods + Explorify. Structure-heavy worldgen is the classic cause of chunk-generation spikes and stutter while players explore.
- Apotheosis spawners and entities - Apotheosis spawners can manufacture mob counts far beyond vanilla, and spawner-spawned mobs are deliberately prevented from despawning.
- Create + Sable physics - Create Aeronautics runs a physics pipeline. Sable's own README calls itself "an incredibly intrusive mod" that "makes extensive use of mixins" and is "prone to many compatibility issues". This is the highest-risk component in the pack.
- OPAC claim force-loading + offline chunk loading - per-player force-loaded chunks that tick even when nobody is online.
3. Server tuning
3.1 Structure density - the single biggest lever
Sparse Structures is already in the pack and already active. - DOCUMENTED/VERIFIED
- Config file:
config/sparsestructures.json5(confirmed inConstants.java:Path.of("config", "sparsestructures.json5")). spreadFactor- default2. This multiplies structure spacing globally: >1 = rarer, 1 = untouched, <1 = more common. So the pack is already halving structure frequency versus default. Good default; raising it is the cheapest TPS win available.customSpreadFactors- array of{ "structure": "namespace:name", "factor": n }. The value may be a structure set or a structure name; using a structure name modifies the whole set it belongs to./dumpstructuresetsdumps every structure set to a file - use this to get real names instead of guessing.- Changes require a full game restart.
- Source: https://github.com/MaxenceDC/sparsestructures (
sparse-structures-default-config.json5)
Suggested next step - push the expensive/oversized structure sets harder than the global 2x:
{
"spreadFactor": 2,
"customSpreadFactors": [
{ "structure": "minecraft:mansion", "factor": 2 }
// run /dumpstructuresets, then add entries for the dungeons_arise:*
// and t_and_t:* sets with factor 3-4
]
}
Caveat (INFERENCE): I have not verified the exact
dungeons_arise/t_and_tstructure-set names. Use/dumpstructuresetson the server to obtain them rather than copying names from the web.
Chunky (in pack) is the other half: pregenerate so players don't force live generation.
DOCUMENTED - commands are /chunky radius <n>, /chunky world <dim>, /chunky center, /chunky start,
/chunky pause, /chunky continue. See section 3.4 for the Chunky <-> Distant Horizons interaction, which
matters here.
3.2 Apotheosis - entity accumulation
VERIFIED by reading the config source of Apothic Spawners 1.21 branch.
Config file: config/apothic_spawners.cfg - section [general]:
| Key | Default | Notes |
|---|---|---|
Entity Despawn Delay |
600 | Ticks that spawner-spawned mobs are prevented from despawning after spawning. Range 0-24000. |
Spawners Drop Empty |
false | Clears stored entity when broken. |
Capturing Drop Chance |
0.005 | Per-level spawn-egg drop chance. |
Spawner Silk Level |
1 | Silk touch level needed; -1 disables. |
Spawner Silk Damage |
100 | Durability damage per spawner harvested. |
Entity Despawn Delay is the lever most people miss. At the default 600 ticks, every spawner keeps
its output alive for 30 seconds regardless of mobcap pressure. On a server with several upgraded
spawners this is a steady entity tax. Lowering it to 0-100 is a direct, low-risk TPS improvement
and is unlikely to be noticed by players (vanilla spawners have no such protection).
Note: this config surface is small. In Apotheosis 8.x the spawner modifiers (spawn range, delay, count, ...) are datapack-driven, not config-driven. So you cannot cap spawner throughput from the config file alone -
Entity Despawn Delayplus the loot-table/datapack layer is what you have.
Config file: config/apotheosis/apotheosis.cfg - sections and keys (defaults in parentheses), all VERIFIED:
Note the directory. Apotheosis's module configs are not in the config root:
configDiris defined as<config>/apotheosis(ApothicAttributes.java, line 58), andgetConfigFile(p)returns<config>/apotheosis/<p>.cfg. The one exception is Apothic Spawners, which uses Placebo'sConfiguration(String)constructor and therefore lands at the config root asconfig/apothic_spawners.cfg. Do not go looking forconfig/apotheosis.cfg- it does not exist.
| Section | Key | Default |
|---|---|---|
bosses |
Boss Spawn Cooldown |
3600 ticks (3 min) |
bosses |
Boss Announcement Range |
vanilla spawn distance + 12 blocks |
bosses |
Curse Boss Items / Boss Auto-Aggro / Boss Glowing On Spawn |
false / false / true |
worldgen |
Generation Dimension Whitelist |
["overworld"] |
spawners |
Spawner Value Chance |
0.11 |
affixes |
Cleave Players, Disable Quark Tooltips for Affix Items, Torch Placement Item |
false / true / minecraft:torch |
augmenting |
Upgrade Sigil Cost / Upgrade Level Cost / Reroll Sigil Cost / Reroll Level Cost |
2 / 225 / 1 / 175 |
potion_charms |
Restrict Charms to Curios |
false |
quality_of_life |
Enable Item Linking, Item Linking Cooldown, Enable Equipment Comparisons |
true / 100 / true |
flair |
Enable Affix Item Effects |
true (clientside) |
world_tiers |
Enable Manual World Tier Changes |
true |
Two worth acting on:
Boss Spawn Cooldown(3600): invading bosses are among the most expensive things Apotheosis spawns. Raising this is a legitimate, cheap difficulty/load dial.Generation Dimension Whitelist=["overworld"]: Apotheosis worldgen currently only runs in the Overworld. This pack has Twilight Forest, plus Incendium's Nether and Nullscape's End. If you want rogue spawners/boss dungeons there you must add the dimension IDs - and understand that doing so increases worldgen cost.
Related configs, same pattern (config/apotheosis/apothic_attributes.cfg,
config/apotheosis/apothic_enchanting.cfg, and config/apotheosis/name_generation.cfg):
apothic_attributes.cfg->[combat_rules]holds the damage formulas as editable expressions (Protection Formula,A-Value Formula,Armor Formula,Armor Toughness Formula,Negative Armor Factor=0.015). These are how you retune Apotheosis combat without a mod - useful because Apotheosis's armour model is the thing players most often call "broken" in a pack with Better Combat.[general] Hidden Attributescontrols what shows in the attributes GUI (supports namespace wildcards and!negation entries).apothic_enchanting.cfg->[client]Sculkshelf Noise Chance= 200 (1-in-200 chance per client tick to play a sculk shelf sound;0disables). Minor client perf/noise lever.
3.3 Open Parties and Claims - force-loading and ticking
Replaces FTB Chunks (removed 2026-09-30 in favour of Open Parties and Claims + Xaero's
World Map/Minimap; see analysis/FTB-CHUNKS-SWAP.md). Everything below is the OPAC equivalent of the
tuning this section used to document for FTB Chunks.
DOCUMENTED - OPAC's main config lives inside the world save, not the pack:
| File | Purpose |
|---|---|
world/serverconfig/openpartiesandclaims-server.toml |
Main server config (limits, protection, forceloading, party backend). |
world/serverconfig/openpartiesandclaims-* |
Global "player configs" (default player config, server-claim, expired-claim, wilderness). |
<server dir>/config/openpartiesandclaims-server.toml |
Reported location on Fabric/Quilt only. |
Warning - stop the server before editing. The README is explicit: the server may overwrite your
changes otherwise. Do not assume the file the server generated matches any list here; read the
generated file, which carries inline # Default: comments for every key.
Easiest route for an admin: in-game, the mod UI is bound to ' by default. Claim/party commands
are /oclaims, /oparties, /opac and /opm (party chat). Server-wide options are still edited in
the file, not the UI.
defaultconfigs/ and packwiz cannot help here - the file is in the world save, so it cannot be
shipped at all. See section 7.1.
Keys and defaults - DOCUMENTED where the project's own issue quotes or README state them, else flagged:
| Key | Default | Why it matters |
|---|---|---|
maxPlayerClaims |
500 | Per-player claim cap. Same as FTB Chunks' max_claimed_chunks, so no capacity loss on the swap. Overridable via the xaero.pac_max_claims permission. |
maxPlayerClaimForceloads |
low/0 - verify | Per-player forceload cap. This pack sets it to 25 (matching FTB Chunks' old max_force_loaded_chunks); the stock default is not 25, so leaving it unset silently removes forceloading. Overridable via xaero.pac_max_forceloads. |
claims.forceload.offlineForceload |
verify (documented as "true" in a 2021 issue, so possibly stale) | Force-loaded chunks stay loaded while the owner is offline. This is the OPAC equivalent of FTB Chunks' chunk_load_offline, and the same farms-vs-TPS trade applies: 25 forceloads x ~10 players is potentially 250 chunks ticking around the clock. |
primaryPartySystem |
built-in | Left at OPAC's built-in default - FTB Teams was removed along with FTB Quests, so the built-in system is now the only one. Pointing this at ftbteams would be a no-op that logs missing-mod noise. |
staticFakePlayers |
- | Position-bound fake players for automation (miners, auto-clickers). The analogue of FTB Chunks' fake_players. |
playerConfigurablePlayerConfigOptions / opConfigurablePlayerConfigOptions |
- | Which options players (and OPs) may change in their own config. Adding a key to these arrays is what exposes it - e.g. claims.forceload.offlineForceload is not player-changeable until listed. |
| protection exception lists | - | forcedBlockProtectionExceptionList, forcedEntityProtectionExceptionList, itemUseProtectionExceptionList, plus the optional per-claim groups. This is OPAC's answer to FTB Chunks' protection; modded blocks/entities that misbehave go here. |
Recommended starting point for a ~10-player server: keep maxPlayerClaims = 500,
maxPlayerClaimForceloads = 25 (decided 2026-09-30), leave primaryPartySystem at the built-in
default, and take a deliberate decision on claims.forceload.offlineForceload - it is the same straight
farms-vs-TPS trade FTB Chunks' chunk_load_offline was, with a larger blast radius now that each player
may forceload 25 chunks.
Reliability caveat - COMMUNITY (open upstream issues). OPAC force-loading has a recurring "marked the chunk but it does not actually stay loaded" failure mode with issues open at the time of writing (#855, #927, plus #237/#528 further back). Because this pack's farm design leans on offline force-loading, verify per-player forceloading on a staging world before trusting it, and re-test after each OPAC bump.
Sources: https://github.com/thexaero/open-parties-and-claims (README: config locations, permission
nodes, primaryPartySystem, staticFakePlayers), https://modrinth.com/mod/open-parties-and-claims
(commands, keybind, FAQ; also states the mod is in beta),
https://github.com/thexaero/open-parties-and-claims/issues/228 and
https://github.com/thexaero/open-parties-and-claims/issues/731 (default keys and the
offlineForceload description), https://github.com/thexaero/open-parties-and-claims/issues/855
(force-loading reliability).
3.4 Distant Horizons - decide deliberately, and mind Chunky
DOCUMENTED - Distant Horizons has real server-side support and it is opt-in. From the official "Server Owners" wiki:
- DH >= 2.3 is required on a server; older builds crash. The pack's 3.3.2 is fine.
- "Using the same version / build on both the server and the client is strongly preferred."
- Server support only engages if "Distant Generation" is enabled on both server and client; the same applies to every toggle with a server-side counterpart.
- DH is optional on both sides - vanilla clients can still connect. So marking it optional in the pack is correct and safe.
- Default settings need >= 500 KB/s (4 Mbit/s) per client. If players see "Timed out" kicks, lower their client bandwidth settings.
- "Pre-generating LODs is highly recommended to avoid performance issues."
- Warning: Chunky interaction: "Running Chunky will also generate & update LODs, but it's not
recommended to rely on this behavior for pre-generation. LODs and chunks are independent, and by
loading a lot of chunks quickly you risk overloading DH and ending up with a lot of holes. Either
use DH's pre-generation, or temporarily disable the mod entirely."
This pack has both Chunky and DH. If you pregenerate with Chunky, expect DH LOD holes. Use
/dh pregeninstead, or disable DH while Chunky runs.
Server-side config keys (use /dh config <key>; the command prints the current value, description and
the config file path, which is the reliable way to find the file):
| Setting | Purpose |
|---|---|
common.threadPreset |
CPU load preset for DH's worker threads. |
common.maxDataTransferSpeed |
Per-player bandwidth cap. |
generation.mode |
Set to INTERNAL_SERVER to generate chunks alongside LODs. |
generation.requestRateLimit |
Requests/second cap. |
generation.maxRequestDistance |
Per-player generation radius. |
generation.nSized |
Experimental: generate LODs directly at the required size. |
generation.bounds.x / .z / .radius |
Global generation area restriction (disabled while radius is 0). |
realTimeUpdates.playerDistance |
How far chunk updates are converted to LOD pushes. |
syncOnLoad.rateLimit / syncOnLoad.maxRequestDistance |
Login-time sync throttling. |
levelKeyPrefix |
Required if several servers share a proxy - set a unique string. |
Also: pregenerate beyond the world border if you use one, or clients will show LOD holes at the edge.
Avoid running /dh pregen on a server people are actively playing on.
3.5 Diagnosing lag: spark is already installed
DOCUMENTED - spark 1.10.124 is in the pack, so no setup is needed. Per spark's own docs, ~30
seconds of profiling is enough for useful results.
Admin workflow:
/spark tps- accurate TPS./spark health- TPS, tick durations (min/avg/max), CPU usage, GC activity. Start here./spark profiler start --timeout 60- sample the server; then/spark profiler stop. Target specific threads with--thread, and record only slow periods to cut noise.- Use GC figures from
/spark healthto decide heap/GC flags rather than guessing. - On Linux x86_64 spark uses async-profiler via
perf_events, which gives better results than the fallbackThreadMXBeanengine - worth knowing when comparing reports.
Docs: https://spark.lucko.me/docs
4. Client tuning and cross-mod conflicts
4.1 The SSRD -> Distant Horizons -> Sodium chain
VERIFIED/DOCUMENTED. SSRD ("Separate Sable Render Distance") is a client rendering addon that exists to decouple Sable's sub-level render distance from the normal one.
- SSRD's own README: "Distant Horizons or voxy AND Sodium MUST be installed on the Client!"
- Versions 1.8 and up REQUIRE Sodium 0.8. The pack has Sodium 0.8.13 [OK] and SSRD 1.8.7 [OK].
- But Distant Horizons is marked
optional = true, default = falsein the pack. INFERENCE: any player who leaves DH disabled gets a non-functional SSRD. Either ship DH by default, or mark SSRD optional alongside DH so the two travel together. - SSRD has server-side gamerules:
/gamerule ssrdMaxRenderDistance- default 128 chunks (server-wide cap)./gamerule ssrdForceloadLimit- default 2 per player for/ssrd forceload./ssrd forceloaddoes not require op but respects that cap.
- SSRD README also warns: "Certain Iris shader packs cause rendering issues."
4.2 EntityCulling will break Ars Nouveau's spell visuals
DOCUMENTED - EntityCulling's README: "Client-side entities, commonly used by magic mods for animations, may not behave as expected. Whitelist the relevant entities via the config screen for tick culling and/or entity culling."
INFERENCE: this pack has Ars Nouveau, which uses client-side entities for spell/projectile visuals, plus Create Aeronautics (Sable) and several mob mods with custom animations. EntityCulling has a wide whitelist surface and its config screen supports per-entity toggles - expect to need it. EntityCulling is a solid win in general (it is one of the biggest client FPS wins on busy servers), so whitelist rather than remove.
4.3 Should you add shaders? Probably not yet
DOCUMENTED, two independent blockers:
- Create Aeronautics 1.1.3 README: "Aeronautics currently has visual issues when used with Iris Shaders."
- SSRD README: certain Iris shader packs cause rendering issues.
Combined with the fact that the pack contains no shader mod at all (no Iris/Oculus) and that DH + Sodium + Sable already form a tight, version-sensitive trio, adding shaders introduces a new compatibility axis in exactly the most fragile part of the pack. INFERENCE: leave shaders out unless you are willing to own that debugging surface.
4.4 Tectonic - optional terrain knobs
VERIFIED from Tectonic v3 config source. File: config/tectonic.json (DOCUMENTED via the
official changelog: "Added a proper config to the mod version at config/tectonic.json"). Keys and
defaults:
| Group | Key | Default |
|---|---|---|
general |
mod_enabled / snow_start_offset |
true / 128 |
global_terrain |
vertical_scale / increased_height / lava_tunnels |
1.125 / false / true |
continents |
ocean_offset / continents_scale / erosion_scale / ridge_scale |
-0.8 / 0.13 / 0.25 / 0.25 |
continents |
underground_rivers / river_lanterns / flat_terrain_skew / rolling_hills / jungle_pillars |
true / true / 0.1 / true / true |
islands |
enabled / noise_scale |
true / 0.11 |
oceans |
ocean_depth / deep_ocean_depth / monument_offset / remove_frozen_ocean_ice |
-0.22 / -0.45 / -30 / false |
biomes |
temperature_multiplier / temperature_scale / ... |
1.0 / 0.25 / ... |
Note increased_height is already false - good. It raises the build/generation ceiling to y640,
which is a meaningful worldgen and memory cost. Do not enable it on a server.
The Tectonic wiki (https://github.com/Apollounknowndev/tectonic/wiki/Config) explains every option; the in-game mod-menu config screen shows them with tooltips.
5. Terralith + Tectonic - the combination is correct
DOCUMENTED, and this is a commonly-messed-up setup, so it's worth confirming it's right:
- Terralith's README: "Terralith is fully compatible with the mod version of Tectonic."
- Tectonic's README: "Tectonic has a special version with Terralith compatibility. This version is shipped in the mod version of Tectonic, but it is available as a standalone datapack [Terratonic]."
- Terralith's README: "If you are using the datapack versions, you must use Terratonic instead of Tectonic."
The pack has both as mods, so the Terralith-compat layer is already active. Do not add Terratonic - it is for the datapack route and would conflict.
5.1 Terralith updates require a new world
DOCUMENTED - Terralith's README: *"It is not recommended to add Terralith to an existing world
- reset yours first, or use a new world."*
Also relevant: "In 2.6.0, the mod version of Terralith relies on Lithostitched as a required dependency." The pack has Terralith 2.5.8 and already ships Lithostitched 1.8.0, so the eventual 2.6.x update is dependency-safe. But it is a worldgen change - new worlds only.
INFERENCE / worth checking: if the live server world predates the addition of Terralith (the pack added it recently), terrain seams and abrupt biome transitions are expected and are not a bug.
6. Cross-mod notes worth knowing
6.1 Apothic Combat silently disables the attack-range affix
DOCUMENTED - from the Apothic Combat README (the "Better Combat x Apotheosis Compat" mod):
The problem it solves: Apotheosis adds a "Heavy Weapon" category (loosely like Better Combat's two-handed weapons, but unrelated), and Apotheosis/Forge treat attack range as an entity attribute that grows with gems and affixes, while Better Combat defines attack range as an immutable weapon property in its own JSON format - so they cannot both work.
What the compat mod does:
- Registers all two-handed Better Combat weapons automatically as
HEAVY_WEAPONfor Apotheosis. - "Removes the Entity Reach Attribute from all weapons, and makes the attack range affix nonfunctional."
Player-facing consequence: any gem/affix investment in attack range does nothing in this pack. That is a legitimate thing to tell players, and if you want, the README notes that disabling the Apotheosis Attack Range affix from appearing at all is possible via datapack.
Source: https://modrinth.com/mod/apothic-combat
6.2 Apotheosis enchanting vs other enchanting overhauls
COMMUNITY. The well-known Apotheosis enchanting-table conflict is with Quark, which is not in this pack, so that specific issue does not apply. No verified conflict with Ars Nouveau's enchanting was found. Flagging only that both touch the enchanting system; if you see an enchanting-table UI problem, test with Apothic Enchanting disabled first.
6.3 Lootr - exact keys, and one gotcha
DOCUMENTED - file config/lootr-common.toml. Lootr must be installed on both client and
server (its FAQ is explicit). Selected keys and defaults:
| Key | Default | Notes |
|---|---|---|
disable_break |
false | Prevents breaking Lootr containers except sneaking in creative. |
blast_resistant |
false | Makes Lootr containers explosion-proof. |
decay_all |
false | All chests decay after first open (overrides the per-list options). |
decay_value |
6000 | Ticks for a decaying container to decay (5 min). |
decay_dimensions / decay_modids / decay_loot_tables |
[] |
Targeted decay. |
refresh_all |
false | All chests refresh after first open. |
refresh_value |
24000 | Ticks to refresh (20 min). |
refresh_dimensions / refresh_modids / refresh_loot_tables |
[] |
Targeted refresh. |
convert_wooden_chests / convert_trapped_chests / convert_mineshafts |
true | Conversion scope. |
convert_quark |
true | Quark isn't in this pack; harmless. |
skip_unloaded |
true | Skip containers in unloaded chunks (queued for later). |
maximum_age |
3600 | How long a container may sit in the conversion queue (180x20 ticks). |
loot_modid_blacklist / loot_table_blacklist / dimension_blacklist / dimension_whitelist |
[] |
Exclusions. |
power_comparators |
true | Comparators output 1 - important for trap-based structures; false makes traps fire on load. |
report_unresolved_tables |
false | Log unresolved loot tables. |
randomise_seed |
true | Warning: see caveat below. |
vanilla_textures |
false | Client-side; hides Lootr textures. |
Two things to flag:
- Warning:
randomise_seed's documentation is contradictory in the official wiki - the Forge section and the Fabric section describe opposite behaviours. Do not change this key on the strength of the wiki alone; test on a scratch world first. - Warning: Structure blacklists do not work on 1.21.1. The wiki states plainly: "structure blacklists
are not functional outside of 1.16.5 due to tagging and holder changes." So
decay_structuresandloot_structure_blacklistare dead keys here. Don't waste time on them.
Lootr interacts with the pack's structure mods (When Dungeons Arise, the nine YUNG's mods) and with
Apotheosis loot tables by converting their chests. If a specific structure's loot behaves oddly, the
loot_table_blacklist / loot_modid_blacklist route is the supported fix - not the structure keys.
6.4 Known compatibility risks to keep on the radar
- Sable / Create Aeronautics - self-described as highly intrusive and mixin-heavy. If you get a
weird crash or a visual bug you can't explain, test with Sable removed first. The five Sable
compat addons in the pack (
sablecompat,aeronauticscompat,gravestone_sable_compat,waystonessable,sablejade) exist precisely because it needed patching. - Create declares
radiumandpalladiumincompatible - this rules out the most obvious "add more server performance mods" candidates. See section 7.
7. Config mechanics - how to actually apply any of this
This is the part that decides whether the rest of the document is usable.
DOCUMENTED (NeoForge config docs) - three locations, and they behave differently:
| Location | Scope | Synced to clients? |
|---|---|---|
config/ |
Global, both sides | Depends on config type |
world/serverconfig/ |
Per-world override of SERVER-type configs |
Yes - server wins |
defaultconfigs/ |
Seeds new worlds | n/a |
SERVER-type configs are synced from server to client and can be overridden per world inworld/serverconfig/.STARTUP/COMMON/CLIENTare not synced.- Server configs are only editable via the in-game screen on a local world; they are greyed out on a multiplayer server - so on a real server you edit the files.
- The Apotheosis stack is the exception: those are Placebo
.cfgfiles underconfig/apotheosis/(+config/apothic_spawners.cfg) and are not NeoForgeSERVER-type configs, so they are not synced and not per-world. They're plain global files you edit directly. This also meansdefaultconfigs/will not seed them - see 7.1.
7.1 The pack currently cannot ship server configs
VERIFIED - .packwizignore contains:
config/
defaultconfigs/
So every config is excluded from the pack index. Consequences:
- None of the tuning in section 3 can be delivered to players or to a fresh server via the pack as it stands.
- A fresh server generates stock defaults for everything.
This is a cleaner end state than before: the only config the pack used to ship was the FTB Chunks minimap client file, and it left with FTB Chunks (section 3.3).
Recommendation (INFERENCE): if you want these settings to be part of the pack rather than tribal
knowledge, un-ignore the specific files you care about (a !config/<path> rule alongside the config/
ignore) and/or use defaultconfigs/ for per-world SERVER-type defaults.
Caveat - the systems this document tunes are mostly unreachable from packwiz.
- OPAC keeps its main config in
world/serverconfig/, inside the world save. Not shippable, ever. - the Apotheosis stack uses Placebo
.cfgfiles, whichdefaultconfigs/does not seed.
The one exception now worth knowing: Xaero's server-side settings live in <server dir>/config/xaero/
(world-map, minimap), so a !config/xaero/* rule would let the pack ship enforced map profiles
if that is ever wanted. Those configs also register the status effects that block non-modded clients,
so shipping them has a real consequence - see the Xaero's pages before doing it.
Note the .packwizignore also excludes *.json globally, which would also exclude
config/tectonic.json even if config/* were relaxed. It needs an explicit ! rule.
7.2 Installing on the server
DOCUMENTED - use the server side flag so client-only mods are skipped:
java -jar packwiz-installer-bootstrap.jar -g -s server <pack-url>
-g disables the optional-mods GUI, -s server downloads only server-side mods. Because every
side = "client" flag in this pack is already correct (section 1.1), this produces a correct server mod list
automatically.
8. Prioritised recommendations
Ordered by value / risk. P0 items are the ones I'd do first.
| # | Pri | Change | Where | Evidence |
|---|---|---|---|---|
| 1 | P0 | Set Entity Despawn Delay to 0-100 (from 600) |
config/apothic_spawners.cfg -> [general] |
VERIFIED source |
| 2 | P0 | Decide claims.forceload.offlineForceload (true = farms run while owners are offline, costs TPS); set maxPlayerClaimForceloads to 25 |
OPAC server config, world/serverconfig/openpartiesandclaims-server.toml |
DOCUMENTED |
| 3 | P0 | Leave primaryPartySystem at the built-in default (FTB Teams is gone; pointing it at ftbteams is a no-op) |
OPAC server config | VERIFIED |
| 4 | P0 | Fix SSRD/DH mismatch: ship DH by default, or mark SSRD optional with it | mods/*.pw.toml |
VERIFIED + DOCUMENTED |
| 5 | P0 | Whitelist Ars Nouveau (and Sable/Create) entities in EntityCulling | client config screen | DOCUMENTED |
| 6 | P1 | Raise spreadFactor for the expensive structure sets via customSpreadFactors (use /dumpstructuresets) |
config/sparsestructures.json5 |
VERIFIED source |
| 7 | P1 | Cap SSRD via /gamerule ssrdMaxRenderDistance (default 128 chunks) |
server command | DOCUMENTED |
| 8 | P1 | Pregenerate with /dh pregen, not Chunky, or disable DH while Chunky runs |
server | DOCUMENTED |
| 9 | P1 | Raise Boss Spawn Cooldown above 3600 if invader load is heavy |
config/apotheosis/apotheosis.cfg -> [bosses] |
VERIFIED source |
| 10 | P1 | Establish a /spark health -> /spark profiler baseline before and after changes |
server | DOCUMENTED |
| 11 | P1 | Un-ignore the specific configs you want shipped (or adopt defaultconfigs/) |
.packwizignore |
VERIFIED |
| 12 | P2 | Consider NeoForge 21.1.251 -> 21.1.252 | pack.toml |
VERIFIED |
| 13 | P2 | Tell players the attack-range affix is inert (Apothic Combat) | player comms | DOCUMENTED |
| 14 | P2 | Decide on the 23 outdated pins (Terralith 2.6.2 is new-world only) | mods/*.pw.toml |
VERIFIED |
| 15 | P2 | Leave increased_height: false in Tectonic; never add Embeddium/Radium/shaders |
various | VERIFIED/DOCUMENTED |
| 16 | P2 | Set levelKeyPrefix if you ever run multiple servers behind a proxy |
DH server config | DOCUMENTED |
9. Not verified / open questions
Listed so nobody mistakes absence of evidence for evidence of absence.
- Client-side performance options not yet reviewed in depth - Distant Horizons' client quality/ thread presets, ImmediatelyFast, Dynamic FPS, EMF/ETF, Fusion/Athena, Legendary Tooltips, Prism. These are very likely fine at defaults; DH's client quality preset is the one worth player guidance.
- Missing server-side performance mods not yet assessed - ServerCore, Noisium, Clumps, Connectivity, Packet Fixer, ThreadTweak on NeoForge 1.21.1, and whether each overlaps with the already-installed Lithium/ModernFix/FerriteCore/AllTheLeaks. Note Create's declared incompatibility with Radium and Palladium, which removes two candidates. Do not add anything here without checking for overlap with Lithium and ModernFix first.
- Create / Sable / Aeronautics config surface - not yet read from source. SSRD and the Sable gamerules in section 4.1 are the only Sable-family settings verified so far.
- FTB Backups 3 config keys (interval, retention, compression) - not yet verified. Relevant to disk/IO on the server.
- Waystones, GraveStone, Sophisticated Storage/Backpacks, Curios, Artifacts config keys - not yet verified.
- JVM flags / heap sizing for this pack size - not yet researched. Use
/spark healthGC data (section 3.5) to decide empirically rather than copying generic flags. server.properties/ gamerule tuning (view-distance vs simulation-distance, entity cramming, mobcaps,network-compression-thresholdfor large modded packets) - not yet verified.- Exact
dungeons_arise/t_and_tstructure-set names - use/dumpstructuresets. - Lootr
randomise_seedsemantics - the official wiki contradicts itself; test before changing. - The 5 CurseForge-sourced mods (FTB Backups 3, FTB Library, AllTheLeaks, Collapsible Groups, Twilight Forest) could not be version-checked by packwiz for currency without a CurseForge API key. The FTB Chunks swap plus the later FTB suite removal cut this blind spot from nine mods to five.
Appendix A - Verified config file paths
| Mod | File | Format |
|---|---|---|
| Tectonic | config/tectonic.json |
JSON |
| Sparse Structures | config/sparsestructures.json5 |
JSON5 |
| Apotheosis (adventure) | config/apotheosis/apotheosis.cfg |
Placebo CFG |
| Apothic Attributes | config/apotheosis/apothic_attributes.cfg |
Placebo CFG |
| Apothic Spawners | config/apothic_spawners.cfg (config root - see note in section 3.2) |
Placebo CFG |
| Apothic Enchanting | config/apotheosis/apothic_enchanting.cfg |
Placebo CFG |
| Apotheosis name generation | config/apotheosis/name_generation.cfg |
Placebo CFG |
| Open Parties and Claims | world/serverconfig/openpartiesandclaims-server.toml (main server config - inside the world save) plus openpartiesandclaims-* player configs alongside it |
TOML |
| Xaero's World Map / Minimap | server-side: config/xaero/world-map, config/xaero/minimap; client map + waypoint data under the instance xaero/ directory |
TXT / binary |
| Lootr | config/lootr-common.toml |
TOML |
| Distant Horizons | use /dh config <key> to print the path |
TOML |
Appendix B - Sources
- Modrinth API v2 (
/project/{id},/version/{id},/project/{id}/version?game_versions=["1.21.1"]) - pack inventory, sides, incompatibilities, version currency. - All 131 mod jars -
META-INF/neoforge.mods.toml(dependencies, sides, declared incompatibilities). - Apotheosis stack config source:
Shadows-of-Fire/Apotheosis@1.21,Apothic-Spawners@1.21,Apothic-Attributes@1.21,Apothic-Enchanting@1.21,Placebo@1.21. - Sparse Structures:
MaxenceDC/sparsestructures@1.21(Constants.java,sparse-structures-default-config.json5). - Tectonic:
Apollounknowndev/tectonic@v3(config/state/ConfigState.java), Tectonic wiki/wiki/Config, official changelog forconfig/tectonic.json. - NeoForge config docs: https://docs.neoforged.net/docs/misc/config/
- Distant Horizons server owners wiki: https://gitlab.com/distant-horizons-team/distant-horizons/-/wikis/1-user-guide/1-frequently-asked-questions/5-server-owners/Server-Owners
- OPAC README and Modrinth page (config locations, permission nodes,
primaryPartySystem,staticFakePlayers, commands, beta status): https://github.com/thexaero/open-parties-and-claims, https://modrinth.com/mod/open-parties-and-claims - OPAC default keys and
offlineForceloadsemantics (issue quotes): https://github.com/thexaero/open-parties-and-claims/issues/228, https://github.com/thexaero/open-parties-and-claims/issues/731 - OPAC force-loading reliability reports: https://github.com/thexaero/open-parties-and-claims/issues/855, https://github.com/thexaero/open-parties-and-claims/issues/927
- Xaero's World Map / Minimap server-side config locations and modpack terms: https://modrinth.com/mod/xaeros-world-map, https://modrinth.com/mod/xaeros-minimap
- Lootr wiki: https://github.com/LootrMinecraft/Lootr/wiki/Lootr-Configuration
- spark docs: https://spark.lucko.me/docs
- Modrinth/CurseForge project pages and READMEs for Sable, Create Aeronautics, SSRD, Terralith, EntityCulling, Apothic Combat, FerriteCore, Lithium, Chunky.