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

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

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

Метки:
  1. Автор темы
    Fox120

    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);

    }
    }
     
  2. Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    artcart
    upload_2022-4-11_1-25-5.png


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

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

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

    FileConfiguration config = Main.getInstance().getConfig();
     
  3. Zuif

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

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

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

    Баллы:
    66
    Спасибо ребята, и 1 и 2 способ работает, я просто немного глупый, и делал это просто посреди класса, а не внутри метода)

    P.s так что если ты читаешь это - то проверь делаешь ли ты это внутри метода)
     
  5. Автор темы
    Fox120

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

    Баллы:
    66
    Хех, теперь некст проблемка dsfes.png
    Screenshot_13.png
     
  6. Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    artcart
  7. Sturm_PT

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

    Баллы:
    76
  8. Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Черт, забыл об этом, надо было сказать
     
  9. Zlodey_duo

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

    Баллы:
    66
    Имя в Minecraft:
    _X_ZLODEY_X_
    Класс Main (Главный класс):

    Код:
        private static Main plugin;
        public static Main instance() { return plugin; }
    
         public void onEnable() {
                plugin = this;
    
    }
    Обращение к главному классу из другого класса:

    Код:
    Main.instance().saveDefaultConfig();
    saveDefaultConfig(); - в качестве примера.
     
  10. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Крутой код уважуха только так не пишут
     
  11. Zlodey_duo

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

    Баллы:
    66
    Имя в Minecraft:
    _X_ZLODEY_X_
    Почему?
     
  12. Sturm_PT

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

    Баллы:
    76
    Я также пишу. Когда много геттеров и сеттеров, написание в одну строчку помогает быстро найти нужный метод
     
  13. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Да когда ты для себя пишешь то можно, но когда на публику нужно писать красивый код
     
  14. Sturm_PT

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

    Баллы:
    76
    На публику желательно писать понятный код, а если он не соответствует чьим-то визуальным предпочтения - это не проблемы автора.
    А вообще в этом куске кода про красоту говорить незачем, там два дефолтных метода. Я просто хотел сказать, что глупо докапываться до скобочек
     
  15. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Хорошо значит будем делать папки не вида com.company.main лучше же будет plugin.main.
    будем класcы называть с маленькой буквы, а то плохо читается лучше же main.java

    Я не против
     
  16. alexandrage

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

    Баллы:
    173
    Компилятору пофиг. А если не нравится, иде отформатирует под выбранный стиль.
     
  17. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Таким темпом лучше даже писать:
    Код:
         public static Main plugin;
    
         public void onEnable() {
                plugin = this;
         }
     
  18. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    А хотя стоп серьезно это же константа.. функция не нужна
    Код:
        public static Main INSTANCE;
        
        public void onEnable() {
            INSTANCE = this;
        }
     
  19. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    А в каком месте это константа?)
     
  20. Автор темы
    Fox120

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

    Баллы:
    66
    Хех, всем пасиб, все работает)
     

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