- Баллы
- 46
- Имя в Minecraft
- MySoulIsCry
Пытаюсь получить рандомную локацию путем использования класса Random и генерирования. Генерирую рандомные числа и уже их подставляю в локацию а далее пробегаюсь от 255 до 50 по y для того чтобы найти первый блок. Далее уже проверяю на то не вода ли он и проверяю блок на 1 выче на то что он воздух и делаю это все в бесконечном цикле дабы всетаки найти рандомную и безлопастную локацию. Но все же бывают моменты когда меня спавнит в воде или в блоках. Перепробовал уже все, пытался стырить код у плагинов на ртп но так и не понял что вытягивать. В общем что я делаю не так, и если есть способы оптимизировать этот метод то прошу объяснить мне как(Ибо чейчас эта штука может прогружать от 1 до 10 рандомных локаций и грузить чанки).
PHP:
public Location getRandomLocation() {
int iteration = 0;
while(true) {
iteration ++;
Random rand = new Random();
int x = rand.nextInt(EventSettings.RADIUS.toInt()) ;
int z = rand.nextInt(EventSettings.RADIUS.toInt());
World world = Bukkit.getWorld(EventSettings.WORLD.toString());
Location loc = new Location(world, x, 255, z);
for(int i = 255; i > 50; i--) {
Material block = loc.getBlock().getType();
if(block != Material.AIR) {
if(block != Material.WATER &&
block != Material.WATER_LILY &&
block != Material.STATIONARY_WATER ) {
Material block2 = loc.clone().add(0, 1, 0).getBlock().getType();
if(block2 == Material.AIR) {
Bukkit.broadcastMessage(iteration + "");
return loc.add(0.5f, 1, 0.5f);
}else {
break;
}
}else {
break;
}
}
loc.subtract(0, 1, 0);
}
}
}