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

Помогите Как обратится к конфигу не в основном классе за границами конструктора ?

Метки:
Теги Теги
config конфиг

Fox120

Активный участник
Пользователь
Баллы
66
Как обратится к конфигу не в основном классе за границами конструктора ?
Помогите плз, буду очень благодарен)
хз как тут код писать в таком отдельном крадратике, поэтому вот:

Не мейн класс:

package pluginPackage;

public class Fishing implements Listener {

public JavaPlugin pl= main;
public Configuration cfg;

public Fishing( Main main){
this.pl = main;
this.cfg = pl.getConfig();// тут работает
}
this.cfg = pl.getConfig();// тут не работает
}

Мейн класс:


package pluginPackage;

public class Main extends JavaPlugin {

public static Main main;

@Override
public void onEnable() {

Bukkit.getPluginManager().registerEvents(new FishingEvent(this), this);

}
}
 
хз как тут код писать в таком отдельном крадратике, поэтому вот:
upload_2022-4-11_1-25-5.png


Попробуй как-то вот так

В главном классе пропиши:
Код:
private static Main instance;
 
  public static Main getInstance() {
    return instance;
  }


И для того чтобы взять конфиг из главного класса юзай:

FileConfiguration config = Main.getInstance().getConfig();
 
Как обратится к конфигу не в основном классе за границами конструктора ?
Помогите плз, буду очень благодарен)
хз как тут код писать в таком отдельном крадратике, поэтому вот:

Не мейн класс:

package pluginPackage;

public class Fishing implements Listener {

public JavaPlugin pl= main;
public Configuration cfg;

public Fishing( Main main){
this.pl = main;
this.cfg = pl.getConfig();// тут работает
}
this.cfg = pl.getConfig();// тут не работает
}

Мейн класс:


package pluginPackage;

public class Main extends JavaPlugin {

public static Main main;

@Override
public void onEnable() {

Bukkit.getPluginManager().registerEvents(new FishingEvent(this), this);

}
}
а в чем проблема? в классе Fishing в конструкторе ты инициализировал поле, теперь просто обратись к нему:
например this.cfg.getString(path), ты можешь делать это в классе Fishing в любом из его методов.
Кстати, вместо public JavaPlugin pl= main; используй Main pl = main
 
Спасибо ребята, и 1 и 2 способ работает, я просто немного глупый, и делал это просто посреди класса, а не внутри метода)

P.s так что если ты читаешь это - то проверь делаешь ли ты это внутри метода)
 
Класс Main (Главный класс):

Код:
    private static Main plugin;
    public static Main instance() { return plugin; }

     public void onEnable() {
            plugin = this;

}

Обращение к главному классу из другого класса:

Код:
Main.instance().saveDefaultConfig();
saveDefaultConfig(); - в качестве примера.
 
Я также пишу. Когда много геттеров и сеттеров, написание в одну строчку помогает быстро найти нужный метод
Да когда ты для себя пишешь то можно, но когда на публику нужно писать красивый код
 
Да когда ты для себя пишешь то можно, но когда на публику нужно писать красивый код
На публику желательно писать понятный код, а если он не соответствует чьим-то визуальным предпочтения - это не проблемы автора.
А вообще в этом куске кода про красоту говорить незачем, там два дефолтных метода. Я просто хотел сказать, что глупо докапываться до скобочек
 
На публику желательно писать понятный код, а если он не соответствует чьим-то визуальным предпочтения - это не проблемы автора.
Хорошо значит будем делать папки не вида com.company.main лучше же будет plugin.main.
будем класcы называть с маленькой буквы, а то плохо читается лучше же main.java

Я не против
 
Таким темпом лучше даже писать:
Код:
     public static Main plugin;

     public void onEnable() {
            plugin = this;
     }
 
А хотя стоп серьезно это же константа.. функция не нужна
Код:
    public static Main INSTANCE;
    
    public void onEnable() {
        INSTANCE = this;
    }
 

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

Назад
Верх