Настройка мира

То есть, реальный X будет равен 0 + j1 * 4 + k3?

Коспадя... Зачем же так сложно всё делать?
Приду домой, засяду плотно, чтобы всё это понять...
Спасибо за разъяснения )
[merge_posts_bbcode]Добавлено: 31.05.2016 19:58:23[/merge_posts_bbcode]

Вот теперь думаю, если внутри цикла k3 каждый раз проверять биом, не будет ли всё это тормозить?
 
Liahim написал(а):
То есть, реальный X будет равен 0 + j1 * 4 + k3?

Коспадя... Зачем же так сложно всё делать?
Приду домой, засяду плотно, чтобы всё это понять...
Спасибо за разъяснения )
[merge_posts_bbcode]Добавлено: 31.05.2016 19:58:23[/merge_posts_bbcode]

Вот теперь думаю, если внутри цикла k3 каждый раз проверять биом, не будет ли всё это тормозить?
Даже не заметишь(возможно xD (потестить надоб))
[merge_posts_bbcode]Добавлено: 31.05.2016 19:03:44[/merge_posts_bbcode]

Тебе надоб как-нибудь переписать это, чтобы можно было проверять биомы только в циклах X и Z, а в Y не лезть(то есть сделать 256 проверок(16 * 16) а не 65536(16 * 16 * 16 *16)(ибо это биомы, и высота тама не нужна)), но это думать надо...
 
Хо-хо! Легко сказать...
Думаю, что тут всё очень жёстко завязано с генерацией поверхности... См. параметры d1-d8.

Может и вправду, прописать всё это в замене блоков...
[merge_posts_bbcode]Добавлено: 31.05.2016 20:18:54[/merge_posts_bbcode]

Ладно... Протестю... Может и легко пойдёт.
 
Не... чо-т не фурычит...
Код:
for (int k3 = 0; k3 < 4; ++k3)
{
     if ((d15 += d16) > 0.0D)
     {
           blockStorage[j3 += short1] = Blocks.stone;                         
     }
     else if (this.worldObj.getBiomeGenForCoordsBody(chunkX + j1 * 4 + k3, chunkZ + i3 + k * 4) == MistBiomeBase.mistUpBoder)
     {
           if (k2 * 8 + l2 < 156)
           blockStorage[j3 += short1] = Blocks.water;
           else blockStorage[j3 += short1] = null;
     }
     else
     {
           if (k2 * 8 + l2 < seaLevel)
           blockStorage[j3 += short1] = Blocks.lava;
           else blockStorage[j3 += short1] = null;
     }
}

Ладно... Видимо, придётся делать в реплейсе... Всё равно он все блоки заново пробегает... и биомы там уже известны )
 
Liahim написал(а):
Не... чо-т не фурычит...
Код:
for (int k3 = 0; k3 < 4; ++k3)
{
     if ((d15 += d16) > 0.0D)
     {
           blockStorage[j3 += short1] = Blocks.stone;                         
     }
     else if (this.worldObj.getBiomeGenForCoordsBody(chunkX + j1 * 4 + k3, chunkZ + i3 + k * 4) == MistBiomeBase.mistUpBoder)
     {
           if (k2 * 8 + l2 < 156)
           blockStorage[j3 += short1] = Blocks.water;
           else blockStorage[j3 += short1] = null;
     }
     else
     {
           if (k2 * 8 + l2 < seaLevel)
           blockStorage[j3 += short1] = Blocks.lava;
           else blockStorage[j3 += short1] = null;
     }
}

Ладно... Видимо, придётся делать в реплейсе... Всё равно он все блоки заново пробегает... и биомы там уже известны )
А chunkX и chunkZ на 16 умножал?
this.worldObj.getBiomeGenForCoordsBody((chunkX * 16) + ((j1 * 4) + k3), (chunkZ * 16) + (i3 + (k * 4)))
Ну ладн, в реплейсе тоже нормас
 
Тогда следующий вопрос )))
Можно ли узнать на моменте генерации мира какой блок находится в соседнем чанке?
Хочу добавить эрозию вертикальных поверхностей. То есть, некоторые блоки, соприкасающиеся с воздухом, должны исчезнуть.
Но, вот беда! Соседний блок воздуха может находится в соседнем ещё не сгенерировавшимся чанке )))
Или проще это сделать через IWorldGenerator?
 
Liahim написал(а):
Тогда следующий вопрос )))
Можно ли узнать на моменте генерации мира какой блок находится в соседнем чанке?
Хочу добавить эрозию вертикальных поверхностей. То есть, некоторые блоки, соприкасающиеся с воздухом, должны исчезнуть.
Но, вот беда! Соседний блок воздуха может находится в соседнем ещё не сгенерировавшимся чанке )))
Или проще это сделать через IWorldGenerator?
Не. Генерируешь ты такой значит ландшафт, и тебе нужен соседний чанк. Выпрашиваешь его, а оказывается он еще не сгенерирован. Начинаешь генерить чанк провайдером... но тут оказывается ему тоже нужны соседние чанки. И это может никогда не закончиться. :lol: 
Может я и ошибаюсь, надо будет подебажить...
 
В том-то и фишка... Можешь не проверять...
Игра начинает виснуть, а потом вылетает...

Вот я и задумался, как выяснить, соприкасается ли блок отдельного чанка с воздухом.
Возможно, имеет смысл как-то поработать с криволинейной поверхностью ландшафта? Ведь как-то она вычисляется?
Например, если блок ниже её меньше, чем на один блок, то он является поверхностью... Если больше, чем на один, то он уже в толще...

Только тут опять же нужно знать какая поверхность в соседних чанках :D
Не... Бред какой-то...
 
Liahim написал(а):
Что, никто не знает?
Я знаю где можно глянуть. Twilight Forest, у него кажись сеть исходники на github.
 
Я в дефолтный чанкпровайдер пытаюсь не лезть, ибо там очень странно высоты генерятся, пока не разбирался что да как. Поэтому, лучше попробовать свой написать =P
 
Может есть какой-то postGenerate?
 
Что б свой писать, нужно понять ванильный )))
В лесу смотрел уже, и в террафирме тоже... У них по разному написано, кстати...
Но так и не нашёл того самого заветного числа.
Может, плохо искал...
Ладно, буду тыркаться.
 
Liahim написал(а):
Что б свой писать, нужно понять ванильный )))
В лесу смотрел уже, и в террафирме тоже... У них по разному написано, кстати...
Но так и не нашёл того самого заветного числа.
Может, плохо искал...
Ладно, буду тыркаться.
Может в Twilight Forest'e глянуть?
 
Назад
Сверху