From d80f85b3f628f8150017484ac8d98756e4ffca8c Mon Sep 17 00:00:00 2001 From: Logan Date: Wed, 14 Oct 2026 18:14:50 -0400 Subject: [PATCH] feat(config): moderate spawn tuning for Alex's Mobs, Fowl Play, Critters Every visible entity multiplies the client render cost (vanilla, EMF/FA, GeckoLib, ETF, dynamic lights) and the server tick. These cuts target only the species that are heavy by weight x group size. Rare mobs keep their defaults. - Alex's Mobs: halve 9 common weights (gazelle and capuchin herds, straddler, rocky roller, underminer, elephant, blobfish, mudskipper, caiman). - Fowl Play: lower duck/goose/gull/sparrow weights and max group sizes (upstream #214, ~400 ducks on rivers, is still open in 1.2.3). - Critters and Companions: about 40% off sea bunnies and the forest/lush bug rules. It does have a spawn config; configVersion 2 skips its v1->v2 migration. All three are partial files. NeoForge (TOML) and YACL 3.8.2 (JSON5) keep defaults for missing keys. Shipped enforced from config/ because the server reads them from this repo. Details and the B14 measurement plan: analysis/client-perf/SPAWN-TUNING.md. --- .packwizignore | 5 +++ config/alexsmobs-common.toml | 13 ++++++ config/crittersandcompanions-common.json5 | 51 +++++++++++++++++++++++ config/fowlplay.json5 | 13 ++++++ index.toml | 12 ++++++ pack.toml | 2 +- 6 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 config/alexsmobs-common.toml create mode 100644 config/crittersandcompanions-common.json5 create mode 100644 config/fowlplay.json5 diff --git a/.packwizignore b/.packwizignore index ee0f592..ce94ef8 100644 --- a/.packwizignore +++ b/.packwizignore @@ -65,3 +65,8 @@ config/paxi/datapacks/* # Default Options copies them into place client-side, only when the target is absent. !config/defaultoptions !config/defaultoptions/** +# Server spawn tuning (analysis/client-perf/SPAWN-TUNING.md); partial files, the mods +# fill in defaults for every other key. Enforced: the server reads them from here. +!config/alexsmobs-common.toml +!config/fowlplay.json5 +!config/crittersandcompanions-common.json5 diff --git a/config/alexsmobs-common.toml b/config/alexsmobs-common.toml new file mode 100644 index 0000000..2bd64f1 --- /dev/null +++ b/config/alexsmobs-common.toml @@ -0,0 +1,13 @@ +# Onion MC spawn tuning (analysis/client-perf/SPAWN-TUNING.md). Partial file: NeoForge +# fills every other key with its default on load. Halves only the common mobs that are +# heavy by weight x hard-coded group size; rare mobs keep their defaults. +[spawning] + gazelleSpawnWeight = 20 + capuchinMonkeySpawnWeight = 14 + elephantSpawnWeight = 15 + straddlerSpawnWeight = 35 + rockyRollerSpawnWeight = 30 + underminerSpawnWeight = 25 + blobfishSpawnWeight = 15 + mudskipperSpawnWeight = 14 + caimanSpawnWeight = 15 diff --git a/config/crittersandcompanions-common.json5 b/config/crittersandcompanions-common.json5 new file mode 100644 index 0000000..259a191 --- /dev/null +++ b/config/crittersandcompanions-common.json5 @@ -0,0 +1,51 @@ +// Onion MC spawn tuning (analysis/client-perf/SPAWN-TUNING.md). Partial file: YACL keeps +// defaults for missing keys. Each listed rule list REPLACES that mob's defaults, so every +// biome rule of a changed mob is listed. configVersion 2 skips the v1->v2 migration. +{ + "configVersion": 2, + "spawning": { + "leafInsect": [ + {"biomeSpec": "#c:is_jungle", "weight": 8, "min": 1, "max": 1}, + {"biomeSpec": "#c:is_forest", "weight": 4, "min": 1, "max": 1} + ], + "seaBunny": [ + {"biomeSpec": "minecraft:ocean", "weight": 10, "min": 1, "max": 2}, + {"biomeSpec": "minecraft:deep_ocean", "weight": 10, "min": 1, "max": 2}, + {"biomeSpec": "minecraft:warm_ocean", "weight": 20, "min": 1, "max": 3}, + {"biomeSpec": "minecraft:lukewarm_ocean", "weight": 10, "min": 1, "max": 3}, + {"biomeSpec": "minecraft:deep_lukewarm_ocean", "weight": 10, "min": 1, "max": 3} + ], + "dragonfly": [ + {"biomeSpec": "#c:is_river", "weight": 4, "min": 1, "max": 1}, + {"biomeSpec": "#c:is_swamp", "weight": 5, "min": 1, "max": 1}, + {"biomeSpec": "#c:is_lush", "weight": 6, "min": 1, "max": 1} + ], + "ladybug": [ + {"biomeSpec": "#c:is_forest", "weight": 4, "min": 1, "max": 3}, + {"biomeSpec": "#c:is_lush", "weight": 6, "min": 1, "max": 2}, + {"biomeSpec": "#c:is_floral", "weight": 7, "min": 1, "max": 2} + ], + "stagBeetle": [ + {"biomeSpec": "#c:is_forest", "weight": 3, "min": 1, "max": 2}, + {"biomeSpec": "#c:is_lush", "weight": 6, "min": 1, "max": 2} + ], + "rolyPoly": [ + {"biomeSpec": "#c:is_forest", "weight": 3, "min": 1, "max": 3}, + {"biomeSpec": "#c:is_lush", "weight": 6, "min": 1, "max": 2}, + {"biomeSpec": "#c:is_swamp", "weight": 6, "min": 1, "max": 2} + ], + "snail": [ + {"biomeSpec": "#c:is_forest", "weight": 3, "min": 1, "max": 2}, + {"biomeSpec": "#c:is_lush", "weight": 5, "min": 1, "max": 2}, + {"biomeSpec": "#c:is_swamp", "weight": 6, "min": 1, "max": 2} + ], + "stickBug": [ + {"biomeSpec": "#c:is_forest", "weight": 3, "min": 1, "max": 2}, + {"biomeSpec": "#c:is_lush", "weight": 6, "min": 1, "max": 2} + ], + "weevil": [ + {"biomeSpec": "#c:is_forest", "weight": 3, "min": 1, "max": 3}, + {"biomeSpec": "#c:is_lush", "weight": 6, "min": 1, "max": 2} + ] + } +} diff --git a/config/fowlplay.json5 b/config/fowlplay.json5 new file mode 100644 index 0000000..79d66b1 --- /dev/null +++ b/config/fowlplay.json5 @@ -0,0 +1,13 @@ +// Onion MC spawn tuning (analysis/client-perf/SPAWN-TUNING.md). Partial file: YACL keeps +// defaults for every missing key and re-saves. Targets the waterfowl/gull/sparrow flocks +// behind Fowl Play #214; songbirds and raptors keep their defaults. +{ + "duckSpawnWeight": 2, + "duckMaxGroupSize": 4, + "gooseSpawnWeight": 2, + "gooseMaxGroupSize": 3, + "gullSpawnWeight": 3, + "gullMaxGroupSize": 5, + "sparrowSpawnWeight": 12, + "sparrowMaxGroupSize": 4 +} diff --git a/index.toml b/index.toml index 44c617a..3fb9d14 100644 --- a/index.toml +++ b/index.toml @@ -4,6 +4,14 @@ hash-format = "sha256" file = "config/akashictome-common.toml" hash = "4e479c86ddfec0c5e28f07034f033a10abae404309f38ccc4bfc15da9de2dfa2" +[[files]] +file = "config/alexsmobs-common.toml" +hash = "bc47ee67032ceab8b2b408819ce9b268812f37da8f13b9b7efeae0deed607c4b" + +[[files]] +file = "config/crittersandcompanions-common.json5" +hash = "a00a9fe09ce5b469247f757e780b5faf74191f5cfef158d999c4d7a1e203f420" + [[files]] file = "config/defaultoptions/extra/config/DistantHorizons.toml" hash = "8949bf3c7a43df7a7ae384213db0985425db3559219c29cb63eaef45c7962dcc" @@ -36,6 +44,10 @@ hash = "9b75828543ed2b8cc5804eabecdc28262297a90d6f0e8e771d64ff779a69e3c9" file = "config/defaultoptions/options.txt" hash = "62034e0589087dab02d1a15192ad313a57f907d5ee9ebbf8853151f7831851a1" +[[files]] +file = "config/fowlplay.json5" +hash = "09ad767a358310e9d38e632ba0e670b0afd1554c162eadb6928d106df17b66c3" + [[files]] file = "config/paxi/datapacks/onion-fixes/data/adorablehamsterpets/recipe/cucumber_crate.json" hash = "21b11674b18c3fb0d8292095cf7c12bca82ef4054ec3f1cd8d1e0222d1655629" diff --git a/pack.toml b/pack.toml index 3ba347e..8d23c93 100644 --- a/pack.toml +++ b/pack.toml @@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "50d97b070e620b4e850df2feb7a07b11bf7a90cab87efa96219a217b9586446d" +hash = "3c17e58506c00f8c5aba5151afa765fdd68245c384293a017a5e2062ac35afbe" [versions] minecraft = "1.21.1"