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

Помогите Отлов соприкосновения дропнутого предмета с игроком

Тема в разделе "Разработка плагинов для новичков", создана пользователем Timings, 14 окт 2014.

  1. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Здравствуйте, товарищи. Уже два часа мучаюсь над одним весьма непростым вопросом. Суть моей разработки в том, что игрок при нажатии правой кнопки мыши, держа в руке меч, начинает быстро стрелять огнем. То есть, пока игрок блокирует мечом, он дропает предмет, для этого предмета задается направление и велосити, и предмет летит прямо по направлению его глаз. Хорошо бы еще сделать так, чтобы при попадании этого дропнутого предмета в игрока игрок поджигался при помощи setFireTicks(). Я пробовал отлавливать соприкосновение итема с игроком через PlayerPickupItemEvent, но работает весьма криво. Есть ли другие идеи? Спасибо. Вот мой шедулер, отвечающий за "огненный пулемет".
    http://pastebin.com/0V5H8Su5
     
  2. Хостинг MineCraft
    <
  3. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну получается, что ваш предмет это энтити, и нужно определять когда энтити "врезалось" в другое энтити.
     
  4. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Это понятно. Я пробовал сравнивать позицию итема и игрока, и в случае, если они совпадают, поджигать игрока. Но, к сожалению, попытка не увенчалась успехом.
     
  5. unlimited

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

    Баллы:
    123
    Имя в Minecraft:
    infinity
    >>стрелять огнем
    Может тогда используете projectile файрбола?
    Ну как у гастов
     
    Последнее редактирование: 14 окт 2014
  6. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Да, тоже можно, но летящий дропнутый огонь выглядит намного реалистичней. Хотелось бы именно его использовать, как на Mineplex.
     
  7. rsod

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

    Баллы:
    68
    Кроме как использовать шедулер и отслеживать в течение некоторого времени координаты идей нету, но это будет слишком сильно грузить сервер
     
  8. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Я пробовал, но ничего хорошего не вышло, да. Возможно, кто-либо знает про метод getNearByEntities() ?
    Если да, то отпишите, пожалуйста.
     
  9. kirill2011s

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

    Баллы:
    103
    А чем не устроило ставнение по координатам? Приблизительно сравнение, между крайними значениями, по моему, тут самое то.
     
  10. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    А как ты сравнивал корды?
     
  11. kirill2011s

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

    Баллы:
    103
    Ну, судя по всему на прямую) float x1 = 1345.54468458, x2 = 1345.54468558;

    x1 == x2 - false
     
  12. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Получал координаты X,Y и Z итема, потом стандартное for(Player p: getServer().getOnlinePlayers()), а затем проверял, не совпадает ли XYZ (p) С итемом Item. Ну, чего-то не тащит. Есть другие идеи?
     
  13. kirill2011s

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

    Баллы:
    103
    То есть, вы проверяли на полное равенство числа с плавающей точкой?
     
  14. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Именно. По моей памяти, ничего хорошего не вышло. Но, если это единственный метод, придется его доработать. Хотя мне что-то подсказывает, что есть более разумное решение.
    @fromgate
    @serega6531
    @Bars
     
  15. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Числа с плавающей точкой следует проверять с учётом погрешности:
     
  16. kirill2011s

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

    Баллы:
    103
    Если вы будете проверять их на полное равенство, то вряд-ли они когда-нибудь станут равны. Разве, что, в момент их спавна на этих координатах.
     
  17. Автор темы
    Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Интересная идея, спасибо. Как только проверю - отпишусь.
     

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