Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Gate

Старожил
Пользователь
Баллы
103
Имя в Minecraft
Gate
Прошу небольшой подсказки по коду
Вот собственно сам код:
Java:
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:
 
Спасибо большое, сейчас попробую
 
Java:
public void PlayerBedEnterEvent(PlayerBedEnterEvent event) {
   
getServer().broadcastMessage(ChatColor.GRAY + "Игрок " + ChatColor.GOLD + event.getPlayer().getName() + " лёг поспать :)");
event.getDeathMessage("Игрок" + event.getPlayer() + " умер во все.");
event.getPlayer().setHealth(0);
}
Вот в чем тут ошибка, что опять ругается?
 
DeathMessage относится только к событию смерти (PlayerDeathEvent). И DeathMessage можно задать только в обработчике события смерти.
А событие смерти никак не относится к событию лежания на кровати.
 
Надо запомнить, лежит ли игрок на кровати, или нет.
А в onPlayerDeath(PlayerDeathEvent event) в зависимости от этого установить сообщение о смерти.
 
И не стоит методы называть, как классы. Желательно, чтобы название метода начиналось с маленькой буквы, каждое новое слово начиналось с большой буквы. Например, onPlayerDeath.
 
Вот я сделал событие смерти
Java:
public void onPlayerDeath(PlayerDeathEvent event) {
 
event.setDeathMessage("Тут сообщение о смерти");
 
}
Правильно ли? Да, и как запомнить, лежит ли игрок на кровати? Записать в переменную (boolean)?
 
Возможно, что как-то можно узнать, лежит ли игрок на кровати, или нет, не следя за ивентами. Но я не знаю, как.
 
Только надо следить за всеми игроками, а не за одним. Поэтому понадобится хранить для каждого игрока свое boolean-значение (для этого нужна структура ключ-значение, java.util.Map, реализуется java.util.HashMap). Или же хранить множество (java.util.Set, реализуется java.util.HashSet) спящих игроков.
 
Я тогда сейчас, что не было этого гемороя, быстро накалякаю плагин убийства игрока командой /killer Имя_игрока

Просто я новичок в плагинах, вот решил научится менять сообщение при смерти, т.к. есть много идей, где это пригодится:)
 
Урааа у меня получилось :):):)
 
А вот ещё один вопрос. Как передать переменную из одного события в другое?
Вот например, из public boolean onCommand() нужно передать переменную target в public void onPlayerDeath()
 
Через поле(поле-переменная класса) какого-либо класса.
 
Например, если и onCommand, и onPlayerDeath в одном классе.

Java:
public class SomeClass extends JavaPlugin implements Listener
{
  private Object target;
 
 
 @EventHandler
  public void onPlayerDeath(...)
  {
    // Используем target
  }
  public boolean onCommand(...)
  {
    // Some code
    target = ...;
    // Some code
  }
}
 

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

Назад
Верх