Архи долгая загрузка карты

35
0
Доброго времени суток. Давно я не делал мод и решил вернуться к нему.
И вот что случилось делаю структуру (очень большую) островов. 1 остров у меня разместился на 30-50к строк.
в первом случае была ошибка:
java.lang.StackOverflowError: Exception getting block type in world и все, вылет.
как это исправить?
Пробовал уменьшить остров. Но все закончилось крайне долгой прогрузкой мира. 30-60 минут. что я делаю не так?
 
Всё просто:
Ты делаешь не так остров. Слишком он большой. Соответственно, на размещение кучи блоков нужна куча времени
[merge_posts_bbcode]Добавлено: 03.06.2016 14:22:34[/merge_posts_bbcode]

StackOverflow означает перегрузку. Комп не смог вытянуть такое кол-во блоков и, чтобы не сгореть, крашнулся
 
интересно, просто еще вчера я мог спокойно генерировать домики 15х15, а щас даже с ними есле загружается :(
upd:
нашел источник проблемы
Код:
        //генерация структур
         BiomeGenBase biomeStr0 = world.getWorldChunkManager().getBiomeGenAt(x, z);
         if ((biomeStr0 == BiomeGenBase.plains)){
             for (int a = 0; a < 1; a++){
                 int i = x + random.nextInt(512);
                 int k = z + random.nextInt(512);
                 int j = world.getHeightValue(i, k);
                 new Big000().generate(world, random, i, j, k);
             }
         }
оказалось мои неимоверно огромные структуры генерировались чуть ли не в упор и вместо подгрузки одного объекта. генерировалось штук 9(да, я все таки загрузил и посчитал) это примерно 300000-400000 строк :.D
вопрос в другом. как работает частота генерации в коде выше? я думал что шанс 1 на площадь 512х512 но похоже нет. что не так?
 
Ну, чанк - это область 16х16.
Если хочешь, чтобы реже генерировалось, то сделай рандом:
if(rand.nextInt(49) == 0) и тогда твоя структура будет примерно одна на 50 чанков чанков, что для структуры вполне нормально.
 
Agravaine написал(а):
Ну, чанк - это область 16х16.
Если хочешь, чтобы реже генерировалось, то сделай рандом:
if(rand.nextInt(49) == 0) и тогда твоя структура будет примерно одна на 50 чанков чанков, что для структуры вполне нормально.
хм получилось так:
Код:
   BiomeGenBase biomeStr0 = world.getWorldChunkManager().getBiomeGenAt(x, z);
         //изначально пробовал в этой строке, но без изменений
         if ((biomeStr0 == BiomeGenBase.plains)){
             for (int a = 0; a < 1; a++){
                 int i = x + random.nextInt(16);
                 int k = z + random.nextInt(16);
                 int j = world.getHeightValue(i, k);
                     if(random.nextInt(49) == 0){
                         new Big000().generate(world, random, i, j, k);
             }
         }
        }
изменилось...что-то точно изменилось.
if(random.nextInt(49) == 0) это же шанс 1 к 49 что произойдет событие?
у меня теперь генерируется вот так :)
http://prntscr.com/bc0pjw
 
Код:
for(int a = 0; a < 1; a++)

Не знаю, гениальнее этого может быть только if(true)
 
Код:
for(int a = 0; a < 1; a++)

оно изначально работало как кол-во структур. Вопрос в том как сделать более редкий спавн структур.
 
всем огроное спасибо за помощь! и отдельное спасибо Agravaine за то что не лень было ткнуть лицом в ошибку[font=Verdana, Helvetica, Arial, sans-serif] :)[/font]
 
Назад
Сверху