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

Помогите Подключить класс

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Доброго времени суток, форумчане.

    Наверное глупый вопрос, но инфы довольно мало.

    Как правильнее всего подключить класс и запихнуть в него JavaPlugin plugin

    я сейчас использую не очень правильный (как я думаю) метод

    В главном классе
    Код:
    Bukkit.getPluginManager().registerEvents(new File(this), this);
    
    И соответственно в файле
    Код:
    public class File implements Listener {
        private static Main plugin;
    
        public File(Main plugin) {
            File.plugin = plugin;
        }
        //что то что мне нужно, но не ивенты
    }
    
    Как мне представляется, регистрировать листенеры на лево и на право не лучшее решение, однако если я этого не делаю, то у меня plugin оказывается null => никакого plugin.что то

    Как сделать все правильно?

    Заранее спасибо
     
  2. Хостинг MineCraft
    <
  3. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    File file = new File(this);
     
  4. kirill2011s

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

    Баллы:
    103
    1. Не нужно делать поле plugin статическим.
    2. Ничего плохого в создании листенеров нет.[DOUBLEPOST=1481364056,1481363872][/DOUBLEPOST]Но я, на самом деле, не понял точно, что тебе нужно. Если тебе нужно что-то реализовать в другом классе, то в чем проблема? Возможно ты просто не понимаешь сути программирования на джаве, либо я не понимаю, что тебе нужно.
     
  5. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Это не файл а класс, просто для примера использовал название File


    У эклипса на этот счет другое мнение.
    Ниже идут методы public static в которых идет обращение к полю plugin

    Ну в классе лежат методы, которые я вызываю из определенного места кода.
    В методах есть обращение к полю plugin
    Если я не закину этот файл как listener или что то из этой же оперы, то поле plugin получается null => как следствие я не могу достучаться до конфигов\подключенных плагинов и т.п.

    Но повторюсь


    Можете объяснить почему? Они же должны нагружать сервер, а это не приветствуется вроде как
     
  6. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Вы, товарищ, туповат. Почитай про создание экземляров класса...
     
  7. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    вообще все было бы проще если бы я знал что искать, но когда не знаешь даже как называется то что тебе надо, то с гуглом возникают трудности, поэтому попрошу воздержаться от оскорблений, они меня бесят
     
  8. kirill2011s

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

    Баллы:
    103
    Тогда вам нужно сделать так:
    Код:
    public class File {
            public static Main plugin;
    
            // Тут методы
    }
    
    И в Main классе нужно сделать так:
    Код:
    File.plugin = this;
    
    В вашем случае нужно сделать, как я написал выше и не городить огород с регистрацией слушателей, которые ничего не слушают.
    Но если делать большой плагин, который слушает различные события и реакция на эти события занимает огромный кусок кода с некоторыми вынесенными методами, то имеет смысл разделить слушатели на различные классы. И будет даже лучше, если они будут как-то вынесены осмысленно.
     
  9. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    В зависимости от названия класса, создавай его экземпляр -
    Код:
    File (класс) file (переменная) = new (новый экземпляр) File(аргументы);
    //Теперь можно выполнять нестатические методы из него, например
    file.imNotStatic();
    Терпи[DOUBLEPOST=1481365614,1481365577][/DOUBLEPOST]
    Он тупо забьет ими хендлерлист, если будет их регистрировать
     
  10. kirill2011s

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

    Баллы:
    103
    Если будет делать так же, как сейчас, то забьет.
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну все правильно делаешь. Не парься.
     
  12. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Вот я и говорю
     
  13. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Спасибо

    Неа, это классы вообще не с Event'ами, просто зарегестрировать их как листенеры был единственный вариант который я знал, чтобы не выхватить null в поле plugin
     
  14. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    А то, что он регистрирует евенты в классе, где слушателей и не будет для тебя не имеет значения?[DOUBLEPOST=1481366056,1481366021][/DOUBLEPOST]
     
  15. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Сколько людей, столько и мнений. В конечном итоге я начинаю сомневаться еще больше вообще во всем.
     
  16. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Погоди, если тебе просто нужен констуктор без ивентов, тогда так.

    Код:
    public class File {
        private Main plugin;
        public File(Main plugin) {
            File.plugin = plugin;
        }
        //что то что мне нужно, но не ивенты
    }
     
  17. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    но тогда я выхватываю null в поле plugin
     
  18. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    А подключаешь его так new File(this);[DOUBLEPOST=1481366421,1481366365][/DOUBLEPOST]
    А ты его точно подключил правилно? Через new File(this);
     
  19. kirill2011s

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

    Баллы:
    103
    Замени свое
    Код:
    Bukkit.getPluginManager().registerEvents(new File(this), this);
    
    на
    Код:
    new File(this);
    
     
  20. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    я ему уже написал это но он туповат капельку.

    ClassName name = new ClassName(this);
    либо просто new ClassName(this), если ничего не надо доставать в главном классе из того класса.
     
  21. Автор темы
    Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Спасибо
    просто это выглядело как регистрация нового файла, не стоило мне брать такое имя как пример


    Всем спасибо
    Закрываю тред
     
Статус темы:
Закрыта.

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