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

Статус
Закрыто для дальнейших ответов.

Fenix78563

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

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

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

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

В главном классе
Java:
Bukkit.getPluginManager().registerEvents(new File(this), this);
И соответственно в файле
Java:
public class File implements Listener {
    private static Main plugin;

    public File(Main plugin) {
        File.plugin = plugin;
    }
    //что то что мне нужно, но не ивенты
}

Как мне представляется, регистрировать листенеры на лево и на право не лучшее решение, однако если я этого не делаю, то у меня plugin оказывается null => никакого plugin.что то

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

Заранее спасибо
 
1. Не нужно делать поле plugin статическим.
2. Ничего плохого в создании листенеров нет.
Но я, на самом деле, не понял точно, что тебе нужно. Если тебе нужно что-то реализовать в другом классе, то в чем проблема? Возможно ты просто не понимаешь сути программирования на джаве, либо я не понимаю, что тебе нужно.
 
Это не файл а класс, просто для примера использовал название File


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

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

Но повторюсь
Как мне представляется, регистрировать листенеры на лево и на право не лучшее решение



Ничего плохого в создании листенеров нет.
Можете объяснить почему? Они же должны нагружать сервер, а это не приветствуется вроде как
 
Вы, товарищ, туповат. Почитай про создание экземляров класса...
вообще все было бы проще если бы я знал что искать, но когда не знаешь даже как называется то что тебе надо, то с гуглом возникают трудности, поэтому попрошу воздержаться от оскорблений, они меня бесят
 
Ну в классе лежат методы, которые я вызываю из определенного места кода.
В методах есть обращение к полю plugin
Если я не закину этот файл как listener или что то из этой же оперы, то поле plugin получается null => как следствие я не могу достучаться до конфигов\подключенных плагинов и т.п.
Тогда вам нужно сделать так:
Java:
public class File {
        public static Main plugin;

        // Тут методы
}
И в Main классе нужно сделать так:
Java:
File.plugin = this;
Можете объяснить почему? Они же должны нагружать сервер, а это не приветствуется вроде как
В вашем случае нужно сделать, как я написал выше и не городить огород с регистрацией слушателей, которые ничего не слушают.
Но если делать большой плагин, который слушает различные события и реакция на эти события занимает огромный кусок кода с некоторыми вынесенными методами, то имеет смысл разделить слушатели на различные классы. И будет даже лучше, если они будут как-то вынесены осмысленно.
 
вообще все было бы проще если бы я знал что искать, но когда не знаешь даже как называется то что тебе надо, то с гуглом возникают трудности, поэтому попрошу воздержаться от оскорблений, они меня бесят
В зависимости от названия класса, создавай его экземпляр -
Код:
File (класс) file (переменная) = new (новый экземпляр) File(аргументы);
//Теперь можно выполнять нестатические методы из него, например
file.imNotStatic();
Терпи
Тогда вам нужно сделать так:
Java:
public class File {
        public static Main plugin;

        // Тут методы
}
И в Main классе нужно сделать так:
Java:
File.plugin = this;

В вашем случае нужно сделать, как я написал выше и не городить огород с регистрацией слушателей, которые ничего не слушают.
Но если делать большой плагин, который слушает различные события и реакция на эти события занимает огромный кусок кода с некоторыми вынесенными методами, то имеет смысл разделить слушатели на различные классы. И будет даже лучше, если они будут как-то вынесены осмысленно.
Он тупо забьет ими хендлерлист, если будет их регистрировать
 
В главном классе

  1. Bukkit.getPluginManager().registerEvents(new File(this), this);
И соответственно в файле
  1. public class File implements Listener {
  2. private static Main plugin;

  3. public File(Main plugin) {
  4. File.plugin = plugin;
  5. }
  6. //что то что мне нужно, но не ивенты
  7. }
Ну все правильно делаешь. Не парься.
 
Тогда вам нужно сделать так:
Java:
public class File {
        public static Main plugin;

        // Тут методы
}
И в Main классе нужно сделать так:
Java:
File.plugin = this;

В вашем случае нужно сделать, как я написал выше и не городить огород с регистрацией слушателей, которые ничего не слушают.
Но если делать большой плагин, который слушает различные события и реакция на эти события занимает огромный кусок кода с некоторыми вынесенными методами, то имеет смысл разделить слушатели на различные классы. И будет даже лучше, если они будут как-то вынесены осмысленно.
Спасибо

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


Неа, это классы вообще не с Event'ами, просто зарегестрировать их как листенеры был единственный вариант который я знал, чтобы не выхватить null в поле plugin
В зависимости от названия класса, создавай его экземпляр -
Код:
File (класс) file (переменная) = new (новый экземпляр) File(аргументы);
//Теперь можно выполнять нестатические методы из него, например
file.imNotStatic();

Терпи

Он тупо забьет ими хендлерлист, если будет их регистрировать
 
Сколько людей, столько и мнений. В конечном итоге я начинаю сомневаться еще больше вообще во всем.
 
Сколько людей, столько и мнений. В конечном итоге я начинаю сомневаться еще больше вообще во всем.
Погоди, если тебе просто нужен констуктор без ивентов, тогда так.

Код:
public class File {
    private Main plugin;
    public File(Main plugin) {
        File.plugin = plugin;
    }
    //что то что мне нужно, но не ивенты
}
 
Погоди, если тебе просто нужен констуктор без ивентов, тогда так.

Код:
public class File {
    private Main plugin;
    public File(Main plugin) {
        File.plugin = plugin;
    }
    //что то что мне нужно, но не ивенты
}
но тогда я выхватываю null в поле plugin
 
А подключаешь его так new File(this);

А ты его точно подключил правилно? Через new File(this);
я ему уже написал это но он туповат капельку.

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

А ты его точно подключил правилно? Через new File(this);
Спасибо
я ему уже написал это но он туповат капельку.

ClassName name = new ClassName(this);
либо просто new ClassName(this), если ничего не надо доставать в главном классе из того класса.
просто это выглядело как регистрация нового файла, не стоило мне брать такое имя как пример


Всем спасибо
Закрываю тред
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх