Генерация блоков
Для того, чтобы сгенерировать какой-нибудь блок, необходимо создать и зарегистрировать новую генерацию.
GameRegistry.registerWorldGenerator(new WorldGenTest(), 0);
Теперь создаём файл WorldGenTest.java и пишем приблизительно так:
package net.tutmod.worldgen;
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import net.tutmod.Main;
import cpw.mods.fml.common.IWorldGenerator;
public class WorldGenTest implements IWorldGenerator {
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch(world.provider.dimensionId) {
case 0:
generateOverworld(world, random, chunkX*16, chunkZ*16);
}
}
public void generateOverworld(World world, Random rand, int chunkX, int chunkZ) {
for (int i = 0; i < 20; i++) {
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(64);
int randPosZ = chunkZ + rand.nextInt(16);
(new WorldGenMinable(Main.testOre, 10)).generate(world, rand,
randPosX, randPosY, randPosZ);
}
}
}
Частота генерации
То, насколько часто будет встречаться блок, зависит от переменной i. Вместо числа 20 необходимо подставить своё.
Высота генерации
Максимальная высота регулируется параметром int randPosY.
Размер жилы
В параметре new WorldGenMinable указывается блок и максимальное количество в одной жиле.
Генерация в Нижнем мире
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch(world.provider.dimensionId) {
case 1:
generateNether(world, random, chunkX*16, chunkZ*16);
}
}
public void generateNether(World world, Random rand, int chunkX, int chunkZ) {
for (int i = 0; i < 10; i++) {
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(64);
int randPosZ = chunkZ + rand.nextInt(16);
(new WorldGenMinable(Main.testOre, 8)).generate(world, rand,
randPosX, randPosY, randPosZ);
}
}
Генерация в Крае
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch(world.provider.dimensionId) {
case 2:
generateEnd(world, random, chunkX*16, chunkZ*16);
}
}
public void generateEnd(World world, Random rand, int chunkX, int chunkZ) {
for (int i = 0; i < 10; i++) {
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(64);
int randPosZ = chunkZ + rand.nextInt(16);
(new WorldGenMinable(Main.testOre, 10)).generate(world, rand,
randPosX, randPosY, randPosZ);
}
}
Теперь блок будет генерироваться с указанными параметрами.