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

(Решено)Передать игрока в другой класс

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

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

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

    Баллы:
    76
    Всем привет. У меня есть игрок, которого я получаю из команды в классе 1, но мне нужно использовать этого игрока еще и в другом классе (2). У меня сразу возник вопрос: Как я могу по тру-хацкерски это реализовать?
    P.S. Извиняюсь за довольно-таки глупый вопрос
     
  2. alexandrage

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

    Баллы:
    173
    Getters and Setters
     
  3. the3dester

    the3dester Новичок Пользователь

    Баллы:
    6
    Можно конструктором.
     
  4. Автор темы
    reZero

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

    Баллы:
    76
    Хм, Скорее всего я чего-то не понимаю из азов java.

    PHP:
    private int second;
    private 
    Player player;
    private 
    boolean isComing;

    public 
    TestClass(int secondPlayer playerboolean isComing)
    {
          
    this.second second;
          
    this.player player;
          
    this.isComing isComing;
    }

    public 
    Player getPlayer()
    {
         return 
    this.player;
    }
    Как мне достать getPlayer, если при создании экземпляра TestClass мне придется передавать туда игрока?
    P.S Я чего-то не догоняю в ЯП. Не кидайтесь овощами, помогите разобраться =(
     
  5. _TheZit445_

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

    Баллы:
    76
    Skype:
    kirik2425
    Имя в Minecraft:
    _TheZit445_
    @reZero
    То, что ты сейчас написал, можно приравнять к объекту, у которого в качестве одного параметра есть Player. И метод getPlayer возвращает игрока, принадлежащего к данному объекту. Возможно не ясно, если что могу где-нибудь в другом месте объяснить. А по теме, что ты вообще хочешь реализовать, начнём с этого?
     
  6. alexandrage

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

    Баллы:
    173
    TestClass test = new TestClass(second,player,isComing);
    test.getPlayer();
     
  7. Автор темы
    reZero

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

    Баллы:
    76
    У меня есть класс с таймером, который в потом нужно будет отменять. Конструктор выше является конструктором моего таймера, но у меня есть еще одна строка - this.runTaskTimer, которая и запускпет таймер.
    При выходе определенного игрока, мне нужно получать игрока, у которого идет таймер и соответственно отменять его
     
  8. Автор темы
    reZero

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

    Баллы:
    76
    В том то и проблема, что я не могу так сделать, т.к не имею игрока
     
  9. alexandrage

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

    Баллы:
    173
    Так заимей.
     
  10. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Хранить соответствие таймеров игрокам в глобальном ассоциативном массиве (HashMap<Player, TestClass>). По событию выхода игрока (PlayerQuitEvent или как оно там) забирать таймер из мапы и отменять.
     
  11. Автор темы
    reZero

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

    Баллы:
    76
    Смешно
     
  12. Автор темы
    reZero

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

    Баллы:
    76
    Не получится. Например есть игрок 1 и игрок 2. У игрока 1 работает таймер. Если из игры выйдет игрок 2, нужно отменить таймер игрока 1
     
  13. alexandrage

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

    Баллы:
    173
    Код:
    package Example;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    
    public class Timer {
        String playername;
    
        Timer(String playername) {
            this.playername = playername;
        }
    
        public Player getPlayer() {
            return Bukkit.getPlayerExact(this.playername);
        }
    }
    Код:
            Map<String, Timer> timers = new HashMap<String, Timer>();
            timers.put("player2", new Timer("player1"));
            timers.get("player2").getPlayer();
     
  14. Автор темы
    reZero

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

    Баллы:
    76
    Это конечно не то что мне нужно, я плохо объяснил скорее всего, но этот код натолкнул меня на решение, сделал немного иначе и получилось.

    Всем спасибо за объяснения!
     
Статус темы:
Закрыта.

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