mcimport/mcimport.py
Auke Kok a3f2c6ff9c Various improvements.
- detect python3
- test MC path exists first (better error msg)
- write out all the riffraff files first
- after conversion, write a message
- add script to download all needed mods to worldmods
2016-01-24 22:29:50 -08:00

120 lines
5.1 KiB
Python

import os
import sys
from block import *
import content
if (sys.version_info < (3, 0)):
print("This script does not work with Python < 3.0, sorry.")
exit(1)
if not os.path.exists(sys.argv[1]):
print("the minecraft world path does not exist.")
exit(1)
if not os.path.exists(sys.argv[2]):
os.makedirs(sys.argv[2])
#if not os.path.exists(sys.argv[2] + "/map_meta.txt"):
# mg = open(sys.argv[2] + "/map_meta.txt", "w")
# mg.write("chunksize = 5\n")
# mg.write("#mg_name = v6\n")
# mg.write("mg_name = singlenode\n")
# mg.write("mgv6_spflags = nojungles, biomeblend, mudflow, nosnowbiomes\n")
# mg.write("mapgen_singlenode = \"ignore\"\n")
# mg.write("waterlevel = -2\n")
# mg.write("[end_of_params]\n")
# mg.close()
if not os.path.exists(sys.argv[2] + "/world.mt"):
wo = open(sys.argv[2] + "/world.mt", "w")
wo.write("backend = sqlite3\n")
wo.write("gameid = minetest\n")
wo.write("load_mod_mcimport = true\n")
wo.write("load_mod_biome_lib = true\n")
wo.write("load_mod_bushes_classic = true\n")
wo.write("load_mod_crops = true\n")
wo.write("load_mod_ferns = true\n")
wo.write("load_mod_flowers_plus = true\n")
wo.write("load_mod_homedecor = true\n")
wo.write("load_mod_junglegrass = true\n")
wo.write("load_mod_mesecons = true\n")
wo.write("load_mod_mesecons_button = true\n")
wo.write("load_mod_mesecons_commandblock = true\n")
wo.write("load_mod_mesecons_delayer = true\n")
wo.write("load_mod_mesecons_doors = true\n")
wo.write("load_mod_mesecons_lamp = true\n")
wo.write("load_mod_mesecons_lightstone = true\n")
wo.write("load_mod_mesecons_materials = true\n")
wo.write("load_mod_mesecons_mvps = true\n")
wo.write("load_mod_mesecons_noteblock = true\n")
wo.write("load_mod_mesecons_pistons = true\n")
wo.write("load_mod_mesecons_pressureplates = true\n")
wo.write("load_mod_mesecons_receiver = true\n")
wo.write("load_mod_mesecons_solarpanel = true\n")
wo.write("load_mod_mesecons_switch = true\n")
wo.write("load_mod_mesecons_torch = true\n")
wo.write("load_mod_mesecons_walllever = true\n")
wo.write("load_mod_moreblocks = true\n")
wo.write("load_mod_moretrees = false\n")
wo.write("load_mod_nether = true\n")
wo.write("load_mod_poisonivy = true\n")
wo.write("load_mod_quartz = true\n")
wo.write("load_mod_vines = true\n")
wo.write("load_mod_signs = true\n")
wo.write("load_mod_signs_lib = true\n")
wo.close()
if not os.path.exists(sys.argv[2] + "/worldmods"):
os.makedirs(sys.argv[2]+"/worldmods")
if not os.path.exists(sys.argv[2] + "/worldmods/mcimport"):
os.makedirs(sys.argv[2]+"/worldmods/mcimport")
if not os.path.exists(sys.argv[2]+"/worldmods/mcimport/init.lua"):
sn = open(sys.argv[2]+"/worldmods/mcimport/init.lua", "w")
sn.write("-- map conversion requires a special water level\n")
sn.write("minetest.set_mapgen_params({water_level = -2})\n\n")
sn.write("-- comment the line below if you want to enable mapgen (will destroy things!)\n")
sn.write("minetest.set_mapgen_params({mgname = \"singlenode\"})\n")
sn.close()
if not os.path.exists(sys.argv[2]+"/moretrees_settings.txt"):
mo = open(sys.argv[2]+"/moretrees_settings.txt", "w")
mo.write("-- comment these lines if you want moretrees to spawn naturally\n")
mo.write("moretrees.enable_apple_tree = false\n")
mo.write("moretrees.enable_oak = false\n")
mo.write("moretrees.enable_sequoia = false\n")
mo.write("moretrees.enable_palm = false\n")
mo.write("moretrees.enable_pine = false\n")
mo.write("moretrees.enable_rubber_tree = false\n")
mo.write("moretrees.enable_willow = false\n")
mo.write("moretrees.enable_acacia = false\n")
mo.write("moretrees.enable_birch = false\n")
mo.write("moretrees.enable_spruce = false\n")
mo.write("moretrees.enable_jungle_tree = false\n")
mo.write("moretrees.enable_fir = false\n")
mo.write("moretrees.enable_beech = false\n")
mo.close()
if not os.path.exists(sys.argv[2]+"/get-mods.sh"):
md = open(sys.argv[2]+"/get-mods.sh", "w")
md.write("#!/bin/sh\n")
md.write("# run this script to automatically get all the required mods\n")
md.write("git clone https://github.com/VanessaE/plantlife_modpack worldmods/plantlife_modpack\n")
md.write("git clone https://github.com/VanessaE/homedecor_modpack worldmods/homedecor_modpack\n")
md.write("git clone https://github.com/Jeija/minetest-mod-mesecons worldmods/mesecons\n")
md.write("git clone https://github.com/calinou/moreblocks worldmods/moreblocks\n")
md.write("git clone https://github.com/sofar/nether worldmods/nether\n")
md.write("git clone https://github.com/minetest-mods/quartz worldmods/quartz\n")
md.write("git clone https://github.com/VanessaE/biome_lib worldmods/biome_lib\n")
md.close()
mcmap = MCMap(sys.argv[1])
mtmap = MTMap(sys.argv[2])
nimap, ct = content.read_content(["NETHER", "QUARTZ"])
mtmap.fromMCMap(mcmap, nimap, ct)
mtmap.save()
print("Conversion finished!\n\n")
print("Run the \"get-mods.sh\" script in the converted world to automatically download\n")
print("the required mods.")