Задержка при генерации структуры.

Версия Minecraft
1.7.10
586
1
2
Всем привет,хотел по интересоваться решением следующей проблемы. У меня при генерации большой структуры(например замка) начинает виснуть майн и через некоторое время отвисает(мин 3-10). Генерирую я структуру при помощи огромного количества классов с функцией setBlock().
Есть идеи как сделать какую то задержку или ещё что-то?
 
586
1
2
дело в том, что не создаются каждый раз новые обьекты блока, а подгружаются готовые из нбт. Вследствие чего производительность растет очень сильно

Автору - построй свой замок ручками в игре, потом прогугли про structure_block(не знаю точно, есть ли он в 1.7)
Рассказываю весь секрет: Строю в майнке замок -> при помощи мседита его экспортирую в схематик -> потом с схематика в джава -> вставляю классы которые получаю в майн и при помощи функции вызываю все эти классы подряд.

А может тебе создавать генераторы не во время процесса, а заранее?
Сделать несколько финальных генераторов new generateStruct001() //И так далее
Возможно, глючит из-за этого...
И просто вызывать эти генераторы в нужный момент? Если так,то я позже попробую.
 
4,045
63
645
Ну ты же понял о чем я :)
Не понял...

...
Какая-то сложная система... А чего сразу не записать всё это в генератор... И код легче будет и можно будет всяких фишек параметрических добавить.
 
2,505
81
397
дело в том, что не создаются каждый раз новые обьекты блока, а подгружаются готовые из нбт. Вследствие чего производительность растет очень сильно
Опять какую-то дичь загнал. Может хватит?
 
1,976
68
220
Можно про первый вариант по подробнее
У меня это выглядит вот так:
Java:
Thread generate = new Thread(new Runnable() {
    @Override
    public void run() {
        ASJUtilities.log("Generating spawn...");
        (new StructureSpawnpoint()).generate(world, rand, -11, world.getHeightValue(0, 0), -41);
    }
}, "Alf Spawn Gen");
generate.start();
 
7,099
324
1,510
setBlock не concurrent вроде
 
586
1
2
У меня это выглядит вот так:
Java:
Thread generate = new Thread(new Runnable() {
    @Override
    public void run() {
        ASJUtilities.log("Generating spawn...");
        (new StructureSpawnpoint()).generate(world, rand, -11, world.getHeightValue(0, 0), -41);
    }
}, "Alf Spawn Gen");
generate.start();
Я с потоком не работал,та и по быстрому его запустил и понял что нужно будет в определенных частях кода слип вызывать(ибо майн ложиться быстро). Вопрос к комментариям ниже,чем он плох?
 
7,099
324
1,510
Тем, что мир изменяется из нескольких потоков, а это не предусмотрено майном

Лучше распараллелить некоторую часть метода generate так, чтобы setBlock вызывался из главного потока, но вычисления куда сетать блок были в других
 
Сверху