Python и Minecraft
+36
Немного програмизьма
Есть такая штука как "Minecraft Overviewer" — Штуковина, которая делает карту мира майна аля гугл-карта
Ну как-то так это выглядит
К этой карте прилагается инструкция и там есть раздел "Таблички и маркеры".
Итак, вопрос: Как делать свои маркеры на этой карте?
У меня разобраться не получилось, если тут найдется человек, у которого получится, то буду очень благодарна за инструкцию
Есть такая штука как "Minecraft Overviewer" — Штуковина, которая делает карту мира майна аля гугл-карта
Ну как-то так это выглядит

К этой карте прилагается инструкция и там есть раздел "Таблички и маркеры".
Итак, вопрос: Как делать свои маркеры на этой карте?
У меня разобраться не получилось, если тут найдется человек, у которого получится, то буду очень благодарна за инструкцию
16 комментариев
С удовольствием помогу если возниктнут какие-либо проблемы.
Было довольно поздно, так что возможны ошибки… Заранее прошу за них прощения
Мануал1 Установка1) Идём сюда, и скачиваем подходящую вам версию.
2) Разархивруем архив в удобое для вас место.
3) Качаем этот фалик («myconfig.py») и ложим рядом с «overviewer.exe».
2 Настройка1) Открываем «myconfig.py» (последний скачаный файл) любым текстовым редактором и редактируем первые две строки.
2) В первой указать путь к вашему миру. Например:
3) Во второй — путь, куда будет сохранен рендер. Например:
3 В самой игре1) В общем есть шесть типов маркеров: (Они отличаются только значками, и есть двух цветов)
2) Для того чтобы маркер появился на карте нужно поставить табличку и написать в её 1-й строке одно из кодовых слов:
(После него на табличке можно описть всё что угодно, оно отобразится как описание маркера на карте)
НаглядноВ игре:
На карте:
4 Запуск1) Открывам консоль (Win + R и «cmd»)
2)
3)
4) Если всё прошло успешно то в выходной папке (например «C:\render») у вас должно было появиться много разных файлов.
5) Находите «index.html» и открываете его любым браузером
6) Вуаля, вы восхитительны!
Файла нет, консоль пишет это, маркеры не появились 3:
Нет, вру, эти товарищи появились
myconfig.py
worlds = {} # Define the path to your world here. worlds["MyWorld"] = r"C:\Users\UserName\AppData\Roaming\.minecraft\saves\MySuperWorld" # Define where to put the output here. outputdir = r"C:\Users\UserName\Desktop\Map render" # Define the resourcepack (optional)(Remove '#' before the line underneath). # texturepath = r"C:\Users\UserName\Desktop\resourcepack.zip" # Filters def marker_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign" or poi['id'] == "minecraft:oak_sign": if poi['Text1'] == "<marker>": # poi['icon'] = "markers/marker_location.png" return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def home_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign" or poi['id'] == "minecraft:oak_sign": if poi['Text1'] == "<home>": # poi['icon'] = "markers/marker_home.png" return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def farm_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign" or poi['id'] == "minecraft:oak_sign": if poi['Text1'] == "<farm_r>": # poi['icon'] = "markers/marker_hoe_red.png" return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def town_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign" or poi['id'] == "minecraft:oak_sign": if poi['Text1'] == "<town_b>": # poi['icon'] = "markers/marker_town.png" return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def playerIcons(poi): if poi['id'] == 'Player': poi['icon'] = "https://overviewer.org/avatar/%s" % poi['EntityId'] return "Last known location for %s" % poi['EntityId'] # Map layers renders["MyWorld"] = { "world": "MyWorld", "title": "Overworld", "dimension": "overworld", "rendermode": "smooth-lighting", "markers": [ dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png") ], } renders["MyWorld Cave"] = { "world": "MyWorld", "title": "Cave", "dimension": "overworld", "rendermode": "cave", "markers": [ dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png") ], } renders["MyWorld Nether"] = { "world": "MyWorld", "title": "MyWorld Nether", "dimension": "nether", "rendermode": "nether", "markers": [ dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png") ], } renders["MyWorld End"] = { "world": "MyWorld", "title": "MyWorld End", "dimension": "end", "markers": [ dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png") ], }Накатал ресурс пак с текстурами 1.7.10 и патч для поддержки старой системы ID блоков. Без результатно.
Раскопал древнющую Overview v0.11.0, что писалась как раз под MC 1.7. Он устанавливается через треклятый setup.py ради которого мне пришлось накатывать Python 3.9, подключать Pip, докачивать Numpy с Pillow и всё ради того, что бы етот душнила напомнил о том, что его зовут питон:
Указал точный адресс етава душнилы-питона. На сей раз наебнулся уже сам setup.py:
Забыл и вернулся к актуальной версии Overviewer. Попробывал пойти от обратного и задать ресурс пак не как для вьювера (1.7.10), а как для майна (1.17). Внезапно сработало. Спустя 10 минут ожиданий у меня був следующий результат:
И тута я резко вспомнил, что играю ващет на ForgeOptiFine 1.7.10… Ну и не успел я даже подумать, как документация резко ответила:
Чтобы было так:
Делай так:
worlds["Prostoy SAVE!!!"] = "C:\Users\UserName\AppData\Roaming\.minecraft\saves\MySuperWorld"" world = "Prostoy SAVE!!!" my_nether_lighting = [Base(), EdgeLines(), Nether(), SmoothLighting(strength=0.4)] my_end_lighting = [Base(), EdgeLines(), SmoothLighting(strength=0.4)] outputdir = "C:/Users/User/Desktop/rendermap" def marker_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign": if poi['Text1'] == "<marker>": return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def home_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign": if poi['Text1'] == "<home>": return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def farm_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign": if poi['Text1'] == "<farm_r>": return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) def town_Filter(poi): if poi['id'] == "Sign" or poi['id'] == "minecraft:sign": if poi['Text1'] == "<town_b>": return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']]) renders["Day"] = { "title": "Day Lighting", "rendermode": lighting, "dimension": "overworld", "markers": [dict(name="marker", filterFunction=marker_Filter), dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png")], } renders["Cave"] = { "title": "Cave", "rendermode": cave, "dimension": "overworld", "markers": [dict(name="marker", filterFunction=marker_Filter), dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png")], } renders["Nether"] = { "title": "Nether", "rendermode": my_nether_lighting, "dimension": "nether", "markers": [dict(name="marker", filterFunction=marker_Filter), dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png")], } renders["End"] = { "title": "End", "rendermode": my_end_lighting, "dimension": "end", "markers": [dict(name="marker", filterFunction=marker_Filter), dict(name="marker", filterFunction=marker_Filter, icon="markers/marker_location.png"), dict(name="home", filterFunction=home_Filter, icon="markers/marker_home.png"), dict(name="farm", filterFunction=farm_Filter, icon="markers/marker_hoe_red.png"), dict(name="town", filterFunction=town_Filter, icon="markers/marker_town.png")], } </town_b></farm_r></home></marker>И вот так: