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

Помогите отловить кого ударил плеер

Discussion in 'Разработка плагинов для новичков' started by energy455, Jul 29, 2015.

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

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

    Trophy Points:
    78
    Skype:
    vlad_street
    Всем привет)

    Есть команда, игроки друг друга бить не могут(setAllowFriendlyFire(false)).
    Как можно отловить, кого ударил игрок который в той же команде?

    Через EntityDamageByEntityEvent все работает, если setAllowFriendlyFire(true). Иначе он просто не срабатывает)
    Подскажите пожалуйста.



    И еще) Как можно узнать кто поставил табличку, админ или игрок)
     
  2. Хостинг MineCraft
    <
  3. leonmark061

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

    Trophy Points:
    76
    Есть еще событие PlayerInteractEntityEvent.

    Используйте BlockPlaceEvent.
    BlockPlaceEvent#getPlayer().isOp().
     
  4. Автор темы
    energy455

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

    Trophy Points:
    78
    Skype:
    vlad_street
    Спасибо. Как его можно вызвать с метода PlayerInteractEvent ?

    игрок кликнул по табличке, если табличку поставил админ, то гуд
     
  5. leonmark061

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

    Trophy Points:
    76
    Если табличка уже стоит, то вы не сможете узнать кто ее поставил. Надо заранее добавлять поставленной табличке мета-данные, чтобы по клику узнавать, какой игрок ее поствил.[DOUBLEPOST=1438154374,1438154310][/DOUBLEPOST]И вообще, эта тема отличается от той, которая указана в заголовке.
     
  6. Автор темы
    energy455

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

    Trophy Points:
    78
    Skype:
    vlad_street
    понял спасибо, теперь вернемся к теме заголовка.


    этим методом слушать?
    нужно отловить, если игрок из моей же команды бьет меня, то..
     
  7. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Trophy Points:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Лол, это эвент клика ПКМ по Entity.
     
  8. Автор темы
    energy455

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

    Trophy Points:
    78
    Skype:
    vlad_street
    я уже догнал xD
     
  9. leonmark061

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

    Trophy Points:
    76
    Хм. Раз он только клик ПКМ отлавливает, тогда все же вам надо слушать EntityDamageByEntityEvent и разрешить френдлифаер.
    Дальше далайте проверки и просто отменяйте событие(EntityDamageByEntityEvent#setCancelled(true)), чтобы игрок не нанес урон по своему.
     
  10. Автор темы
    energy455

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

    Trophy Points:
    78
    Skype:
    vlad_street
    раз другого выхода нет, так и сделаю) Спасибо :)[DOUBLEPOST=1438171102,1438169073][/DOUBLEPOST]
    Code:
    e.getBlockPlaced().setMetadata
    добавить мета данные, как я понял так, но что передавать в параметр metaDataValue?
     
  11. leonmark061

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

    Trophy Points:
    76
    new FixedMetadataValue((Plugin) plugin, (Object) value).
     
  12. Автор темы
    energy455

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

    Trophy Points:
    78
    Skype:
    vlad_street
  13. leonmark061

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

    Trophy Points:
    76
    Лучше бы вам не класть указатель на Player в конструктор FixedMetadataValue.
    Делайте так: e.getBlockPlaced().setMetadata(this, e.getPlayer().getUniqueId().toString());//или e.getPlayer().getName()

    Надеюсь, вы знаете как потом получить игрока по его uuid или по имени?
     
  14. Автор темы
    energy455

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

    Trophy Points:
    78
    Skype:
    vlad_street
    я чуть ошибся, использовал this в статик методе)

    спасибо большое.
    да, знаю))
     

Share This Page