- 5,018
- 47
- 783
Привет всем! Решил рассказать об очень удобной послойной генерации, о коей поведал мне timaxa007
Берете, создаете свой генератор(регистрируете, туда сюда)
После чего в свой генератор пишете вот это. Каждый из этих эл.массива как бы вид сверху. В данном коде
0-Воздух
1-Дерево
2-Листва
И вообще, очень гибко, вы можете писать хоть 3, 4, 5 ... 1000, сколько угодно, пока позволяет Integer.Главное писать условия, что вы хотите ставить на место 3, 4, 5 ... 1000.
Еще, после запятой можно указать метадату, если таковая имеется у вашего блока
Тут генерируется дерево. Но вы можете таким же макаром генерить все что угодно. Очевидно, что это очень удобно для данжей и мегаструктур.
Берете, создаете свой генератор(регистрируете, туда сюда)
После чего в свой генератор пишете вот это. Каждый из этих эл.массива как бы вид сверху. В данном коде
0-Воздух
1-Дерево
2-Листва
И вообще, очень гибко, вы можете писать хоть 3, 4, 5 ... 1000, сколько угодно, пока позволяет Integer.Главное писать условия, что вы хотите ставить на место 3, 4, 5 ... 1000.
Код:
public class TreeOsinaGen extends WorldGenerator {
int[][][] structural_layers = new int[][][] {
{
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 2, 2, 2, 0},
{0, 2, 1, 2, 0},
{0, 2, 2, 2, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 2, 2, 2, 0},
{0, 2, 1, 2, 0},
{0, 2, 2, 2, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 2, 1, 2, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 2, 1, 2, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0}
},{
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
};
@Override
public boolean generate(World world, Random random, int x, int y, int z) {
for (int py = 0; py < structural_layers.length; ++py) {
for (int px = 0; px < structural_layers[py].length; ++px) {
for (int pz = 0; pz < structural_layers[py][px].length; ++pz) {
int px2 = px - ((structural_layers[py].length / 2));
int pz2 = pz - ((structural_layers[py][px].length / 2));
if (structural_layers[py][px][pz] != 0 &&
(structural_layers[py][px][pz] == 1 || world.getBlock(x + px2, y + py, z + pz2).isReplaceable(world, x + px2, y + py, z + pz2))) {
world.setBlock(x + px2, y + py, z + pz2, structural_layers[py][px][pz] == 1 ? MyBlocks.treeOsina : MyBlocks.osinaLeaves,structural_layers[py][px][pz] == 1 ? 0 : 0, 3);
}
}
}
}
return true;
}
}
Код:
structural_layers[py][px][pz] == 1 ? 0 : 0, 3
Тут генерируется дерево. Но вы можете таким же макаром генерить все что угодно. Очевидно, что это очень удобно для данжей и мегаструктур.