1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Установка сообщения о смерти игрока

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

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

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

    Баллы:
    103
    Прошу небольшой подсказки по коду
    Вот собственно сам код:
    Код:
    event.getPlayer().setDeathMessage("Игрок" + event.getPlayer() + " умер во все.");
    event.getPlayer().setHealth(0);
    setDeathMessage должен устанавливать сообщение о смерти игрока
    event.getPlayer() думаю, понятно, что делает.

    Так вот у меня Eclipse ругается на setDeathMessage - "The method setDeathMessage(String) is undefined for the type Player". Не знаю прям, как исправить, многое перепробовал. :fu: Возможно, перед setDeathMessage нужно что-то другое или что-то ещё поставить. Помогите пожалуйста :why:
     
  2. limito

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

    Баллы:
    103
    LeftMyHouse и Gate нравится это.
  3. Автор темы
    Gate

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

    Баллы:
    103
    Спасибо большое, сейчас попробую
     
  4. Автор темы
    Gate

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

    Баллы:
    103
    Код:
    public void PlayerBedEnterEvent(PlayerBedEnterEvent event) {
       
    getServer().broadcastMessage(ChatColor.GRAY + "Игрок " + ChatColor.GOLD + event.getPlayer().getName() + " лёг поспать :)");
    event.getDeathMessage("Игрок" + event.getPlayer() + " умер во все.");
    event.getPlayer().setHealth(0);
    }
    Вот в чем тут ошибка, что опять ругается?
     
  5. limito

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

    Баллы:
    103
    event.setDeathMessage
     
  6. Автор темы
    Gate

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

    Баллы:
    103
    Все равно ругается - The method setDeathMessage(String) is undefined for the type PlayerBedEnterEvent
     
    ВремяПриключений нравится это.
  7. limito

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

    Баллы:
    103
    DeathMessage относится только к событию смерти (PlayerDeathEvent). И DeathMessage можно задать только в обработчике события смерти.
    А событие смерти никак не относится к событию лежания на кровати.
     
  8. Автор темы
    Gate

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

    Баллы:
    103
    То есть я должен создать public void ещё, туда впихнуть это сообщение?
     
  9. Автор темы
    Gate

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

    Баллы:
    103
    Сейчас попытаюсь
     
  10. limito

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

    Баллы:
    103
    Надо запомнить, лежит ли игрок на кровати, или нет.
    А в onPlayerDeath(PlayerDeathEvent event) в зависимости от этого установить сообщение о смерти.
     
    МиднайтЖелаетВамДобра и Gate нравится это.
  11. limito

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

    Баллы:
    103
    И не стоит методы называть, как классы. Желательно, чтобы название метода начиналось с маленькой буквы, каждое новое слово начиналось с большой буквы. Например, onPlayerDeath.
     
  12. Автор темы
    Gate

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

    Баллы:
    103
    Вот я сделал событие смерти
    Код:
    public void onPlayerDeath(PlayerDeathEvent event) {
     
    event.setDeathMessage("Тут сообщение о смерти");
     
    }
    Правильно ли? Да, и как запомнить, лежит ли игрок на кровати? Записать в переменную (boolean)?
     
    slavik123123123 нравится это.
  13. limito

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

    Баллы:
    103
    Да, верно.
    Да, записать в переменную типа boolean.
     
  14. limito

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

    Баллы:
    103
    Возможно, что как-то можно узнать, лежит ли игрок на кровати, или нет, не следя за ивентами. Но я не знаю, как.
     
  15. limito

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

    Баллы:
    103
    Только надо следить за всеми игроками, а не за одним. Поэтому понадобится хранить для каждого игрока свое boolean-значение (для этого нужна структура ключ-значение, java.util.Map, реализуется java.util.HashMap). Или же хранить множество (java.util.Set, реализуется java.util.HashSet) спящих игроков.
     
  16. Автор темы
    Gate

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

    Баллы:
    103
    Я тогда сейчас, что не было этого гемороя, быстро накалякаю плагин убийства игрока командой /killer Имя_игрока

    Просто я новичок в плагинах, вот решил научится менять сообщение при смерти, т.к. есть много идей, где это пригодится:)
     
  17. Автор темы
    Gate

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

    Баллы:
    103
    Урааа у меня получилось :):):)
     
  18. Автор темы
    Gate

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

    Баллы:
    103
    А вот ещё один вопрос. Как передать переменную из одного события в другое?
    Вот например, из public boolean onCommand() нужно передать переменную target в public void onPlayerDeath()
     
  19. limito

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

    Баллы:
    103
    Через поле(поле-переменная класса) какого-либо класса.
     
  20. limito

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

    Баллы:
    103
    Например, если и onCommand, и onPlayerDeath в одном классе.

    Код:
    public class SomeClass extends JavaPlugin implements Listener
    {
      private Object target;
     
     
     @EventHandler
      public void onPlayerDeath(...)
      {
        // Используем target
      }
      public boolean onCommand(...)
      {
        // Some code
        target = ...;
        // Some code
      }
    }
     
    Gate нравится это.

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