Если __name__ == "__main__" не делать что-либо

Здесь я упростил свой код, но думаю, что также сузил свой вопрос. name dosent равно main, когда он запускается mcedit в качестве фильтра, так что вы должны сравнивать name с чем-то другим, кроме main, которое вызывается другой программой, поэтому вместо этого main PlaceBlock все равно не работает?

from multiprocessing import Process
from pymclevel import alphaMaterials

displayName = "PlaceBlock"

def perform(level, box, options):

    x = box.minx
    z = box.minz

    def block(height):
         level.setBlockAt(x, height, z, 1)

    print(__name__)
    if __name__ == "__main__":
        print('Processing')
        p1 = Process(target=block, args=(1, ))
        p2 = Process(target=block, args=(2, ))

        p1.start()
        p2.start()

    p1.join()
    p2.join()

Также, чтобы ответить на вопрос в комментариях, это фильтр для программы Minecraft под названием mcedit для редактирования миров, фильтры - это просто программы, которые редактируют миры. Так что эта программа на самом деле ничего не делает, если у вас нет программы

2 ответа

После большого количества возни оказывается, что он не запускает нужный файл в процессах, он запускает основную программу, поэтому он открыл вторую версию программы, поэтому я вставил изменение исполняемого файла, чтобы вместо этого открыть python программы и все отлично работает!

Ваш скрипт будет работать только в MCEdit Unified.

pymclevel не может быть запущен за пределами MCEdit.

Вам не нужно писать скрипт для этого. Если вы удерживаете нажатой клавишу Alt, он покажет координаты указателя вашего куба. Перейдите к точке в мире, где вы хотели бы разместить блок и использовать fill and replace инструмент, чтобы заполнить эту координату с блоком, который вы хотите.

Другие вопросы по тегам