Cobblemon Survival Pack: phases 0-2 and Phase 3 zones and hazards
Free NeoForge 1.21.1 modpack on Cobblemon 1.8.4 built with packwiz, plus the Kotlin companion mod (cobblesurvival) and its built-in data pack. - Phase 0: packwiz pack with Modrinth/CurseForge cross-links, build and export tooling, Prism instance sync, test server with smoke checks. - Phase 1: Poke Ball shaped island (WorldGen Editor preset, seed isle-26), Adrian's biome list, no natural ore, structures without ore or vanilla mobs, no Nether portals, world template builder and world report. - Phase 2: permadeath (CobbleHardcoreMon plus the companion mod's gap fixes), Revival Charm, expensive Healing Machine, Lootr refreshing loot, in-game self-tests on Minecraft's GameTest framework. - Phase 3 so far: 14 zones with their own spawn pools and level bands (tools/zone_layout.py, tools/zone_spawns.py, "zone" spawn condition), Cold Sweat heat and cold as gates with boss-drop insulation recipes, spawn survey and hazard self-tests in tools/quick_check.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
398301f0be
232 files changed
+72665
No files matched your search
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Write data-pack overrides that stop Cobblemon's evolution-stone ores from generating.
|
||||
|
||||
Cobblemon adds its ore features from code as direct holders, so the
|
||||
`neoforge:remove_features` modifier (which matches registry holders) cannot
|
||||
remove them. Cobblemon looks each placed feature up by id, though, so an
|
||||
override with zero placements under the same id turns it off. Re-run this
|
||||
after a Cobblemon update and commit the result.
|
||||
|
||||
Usage: tools/cobblemon_ore_overrides.py <Cobblemon jar>
|
||||
"""
|
||||
import json
|
||||
import shutil
|
||||
import sys
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
PREFIX = "data/cobblemon/worldgen/placed_feature/ore/"
|
||||
OUT = ROOT / "datapacks/core" / PREFIX
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) != 2:
|
||||
sys.exit(__doc__)
|
||||
jar = zipfile.ZipFile(sys.argv[1])
|
||||
shutil.rmtree(OUT, ignore_errors=True)
|
||||
OUT.mkdir(parents=True)
|
||||
names = sorted(n for n in jar.namelist() if n.startswith(PREFIX) and n.endswith(".json"))
|
||||
for name in names:
|
||||
original = json.loads(jar.read(name))
|
||||
override = {"feature": original["feature"], "placement": [{"type": "minecraft:count", "count": 0}]}
|
||||
(OUT / name[len(PREFIX):]).write_text(json.dumps(override, indent=2) + "\n")
|
||||
print(f"wrote {len(names)} overrides to {OUT.relative_to(ROOT)}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user