Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 20 июл 2016.

Статус темы:
Закрыта.
  1. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    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();

    Это у меня все есть, но проверку я не знаю, как сделать!
     
  2. Хостинг MineCraft
    <
  3. Larin

    Larin Старожил Пользователь

    Баллы:
    103
     
  4. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Эм?
    Вот так:

    p.getLocation.add(x, y, z)?
     
  5. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Нет
     
  6. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Так?

    int z = p.getLocation().locToBlock(r.nextInt(10) -5 + 10);
     
  7. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Это здесь не причём.Ошибка в 4-ом пункте.
     
  8. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Спавн сундука? А в нем-то что? Ларин выделил 2 пункт, а именно указать x и z[DOUBLEPOST=1469040727,1469040033][/DOUBLEPOST]
    Правда, а что с ним? Я ошибки не замечаю
     
  9. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Даю подсказку: созданные вами переменные надо использовать при спавне сундука.
     
  10. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Chest chest = (Chest)block.getState().getLocation(loc);\

    Допер?
     
  11. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    А теперь скинь ту часть кода где ты создаёшь loc
     
  12. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Код:
                            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();
     
  13. Derik

    Derik Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Derik
    Может я фигню смарожу. Ну с кажем если взять с server.properties Высоту мира в блоках. И через цикл их проверять на воздух. То Y будет равен тому блоку где воздух первым попался. Будь то пещера или просто поверхность.
     
  14. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    1) Ты получаешь высочайшую координату Y до прибавления координат игрока: где-то на X = -5 - 5 и Z = -5 - 5. Думаю, ты понял, что нужно сделать.
    2) Не критично, но всё же было бы неплохо заменить "+5-10" на "-5".
    3) Вот тут не особо уверен, сразу скажу. Вполне возможно, что ты добавляешь координаты к позиции игрока (если баккит не сделал защитку). Я бы вообще использовал что-то типо Location.clone(), дабы создался новый объект, с которым можно безопасно работать.
    4) В случае нахождения игрока в пещере getHighestBlockYAt(x, z) будет работать, пожалуй, не так, как хотелось бы. Возможно стоит проходиться по столбу "вручную" от высоты игрока вниз и на несколько блоков вверх. Лично я делал подобные проверки на уровне NMS, чтобы чуток повысить производительность.
     
    Последнее редактирование: 21 июл 2016
  15. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Нет, не понял.
     
  16. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    Ну я уж не знаю, как по-другому объяснить. Сам прикинь примерные координаты X и Z в которых ты получаешь высочайшую точку, а затем подумай, на каких координитах тебе нужно это делать на самом деле.
     
  17. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Может быть я так понял?

    Location loc = p.getLocation().add(x-5-5, 0, z-5-5);
     
  18. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    Да нет же.
    Ты получаешь координаты X и Z.
    Они равны от минус пяти до пяти. И на этих же координатах ты получаешь высочайшую точку мира. А тебе нужно получать там, где спаунится сундук, правильно?
    Сундук спаунится рядом с игроком. Соответственно тебе сначала нужно увеличить X и Z (или их Location), а уже затем получать высочайшую точку...
     
  19. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    ЧТА? Звучит, как типичный урок по квантовой физике, мозг плавится ![DOUBLEPOST=1469096268,1469096159][/DOUBLEPOST]Начало понял, но последнее никак не могу понять (Кличко)
     
  20. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    При написании кода всегда представляй, что конкретно будет происходить: чему будут равны объекты (переменные), какие проблемы (исключения) могут возникнуть. Так будет гораздо проще.
    Готовый код я тебе не предоставлю. Думай, соображай сам. К тому же вопрос ерундовый совершенно.
    И не забудь про другие пунты, которые указал выше.
     
  21. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Я не могу понять значение "увеличить"
     
Статус темы:
Закрыта.

Поделиться этой страницей