Помогите Спавн сундука в случайную позицию

Статус
Закрыто для дальнейших ответов.
1. Получаешь позицию игрока
2. Получаешь 2 случайных числа x и z ОТНОСИТЕЛЬНО позиции игрока
3. Получаешь y с помощью метода getHighestBlockYAt
4. Спавнишь сундук

1. p.getLocation
2. int x = nextInt(10) + 5 - 10; int z = nextInt(10) + 5 -10;
3. int y = p.getLocation.getWorld().getHighestBlockYAt(x, z)

4. p.getLocation.getBlock().setType(Material.Chest);
Chest chest = (Chest)p.getLocation.getBlock.getState();

Это у меня все есть, но проверку я не знаю, как сделать!
 
1. p.getLocation
2. int x = nextInt(10) + 5 - 10; int z = nextInt(10) + 5 -10;
3. int y = p.getLocation.getWorld().getHighestBlockYAt(x, z)

4. p.getLocation.getBlock().setType(Material.Chest);
Chest chest = (Chest)p.getLocation.getBlock.getState();

Это у меня все есть, но проверку я не знаю, как сделать!
1. Получаешь позицию игрока
2. Получаешь 2 случайных числа x и z ОТНОСИТЕЛЬНО позиции игрока
3. Получаешь y с помощью метода getHighestBlockYAt
4. Спавнишь сундук
 
Эм?
Вот так:

p.getLocation.add(x, y, z)?
 
Так?

int z = p.getLocation().locToBlock(r.nextInt(10) -5 + 10);
 
Спавн сундука? А в нем-то что? Ларин выделил 2 пункт, а именно указать x и z

Правда, а что с ним? Я ошибки не замечаю
Даю подсказку: созданные вами переменные надо использовать при спавне сундука.
 
Chest chest = (Chest)block.getState().getLocation(loc);\

Допер?
 
JavaScript:
                        int x = r.nextInt(10) + 5 - 10;
                        int z = r.nextInt(10) + 5 - 10;
                        int y = p.getLocation().getWorld().getHighestBlockYAt(x, z);
                       
                        Location loc = p.getLocation().add(x, 0, z);
                        loc.setY(y);
                       
                        Block block = loc.getBlock();
                        loc.getBlock().setType(Material.CHEST);
                        Chest chest = (Chest)block.getState().getLocation(loc);
                        Inventory inv = chest.getInventory();
 
Может я фигню смарожу. Ну с кажем если взять с server.properties Высоту мира в блоках. И через цикл их проверять на воздух. То Y будет равен тому блоку где воздух первым попался. Будь то пещера или просто поверхность.
 
1) Ты получаешь высочайшую координату Y до прибавления координат игрока: где-то на X = -5 - 5 и Z = -5 - 5. Думаю, ты понял, что нужно сделать.
2) Не критично, но всё же было бы неплохо заменить "+5-10" на "-5".
3) Вот тут не особо уверен, сразу скажу. Вполне возможно, что ты добавляешь координаты к позиции игрока (если баккит не сделал защитку). Я бы вообще использовал что-то типо Location.clone(), дабы создался новый объект, с которым можно безопасно работать.
4) В случае нахождения игрока в пещере getHighestBlockYAt(x, z) будет работать, пожалуй, не так, как хотелось бы. Возможно стоит проходиться по столбу "вручную" от высоты игрока вниз и на несколько блоков вверх. Лично я делал подобные проверки на уровне NMS, чтобы чуток повысить производительность.
 
Последнее редактирование:
Ну я уж не знаю, как по-другому объяснить. Сам прикинь примерные координаты X и Z в которых ты получаешь высочайшую точку, а затем подумай, на каких координитах тебе нужно это делать на самом деле.
 
Может быть я так понял?

Location loc = p.getLocation().add(x-5-5, 0, z-5-5);
 
Может быть я так понял?

Location loc = p.getLocation().add(x-5-5, 0, z-5-5);
Да нет же.
Ты получаешь координаты X и Z.
Они равны от минус пяти до пяти. И на этих же координатах ты получаешь высочайшую точку мира. А тебе нужно получать там, где спаунится сундук, правильно?
Сундук спаунится рядом с игроком. Соответственно тебе сначала нужно увеличить X и Z (или их Location), а уже затем получать высочайшую точку...
 
Да нет же.
Ты получаешь координаты X и Z.
Они равны от минус пяти до пяти. И на этих же координатах ты получаешь высочайшую точку мира. А тебе нужно получать там, где спаунится сундук, правильно?
Сундук спаунится рядом с игроком. Соответственно тебе сначала нужно увеличить X и Z (или их Location), а уже затем получать высочайшую точку...
ЧТА? Звучит, как типичный урок по квантовой физике, мозг плавится !
Начало понял, но последнее никак не могу понять (Кличко)
 
последнее никак не могу понять
При написании кода всегда представляй, что конкретно будет происходить: чему будут равны объекты (переменные), какие проблемы (исключения) могут возникнуть. Так будет гораздо проще.
Готовый код я тебе не предоставлю. Думай, соображай сам. К тому же вопрос ерундовый совершенно.
И не забудь про другие пунты, которые указал выше.
 
Я не могу понять значение "увеличить"
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх