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

Подключение апи

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

  1. Автор темы
    Akultist

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

    Баллы:
    46
    У меня есть апи созданное мной. (Просто набор метод полезных для создания, например регистрация команд без plugin.yml и.т.д). Так-же есть обычный плагин.
    Так вот, подключаю я всё это вот так:
    ГЛАВНЫЙ КЛАСС МОЕГО ПЛАГИНА:
    Код:
    public final class MainClass extends JavaPlugin {
    
        private static Main mainAPIClass = (Main) Bukkit.getServer().getPluginManager().getPlugin("DefaultAPI"); //Главный класс плагина API
        private static MainAPI api; //Главный класс API
        private static ConfigManager cfgManager; //Конфиг мэнеджер который находится в API
        private static boolean mysql; //неважно
        private static ConnectionManager cm; //Управление MySQL
    
        @Override
        public void onEnable() {
            mainAPIClass.loadApi(this); //Регистрирую этот плагин (это понадобится в далнейшем, например при создания конфига)
            api = mainAPIClass.getApi(); //Получаю API
            cfgManager = new ConfigManager(); //Создаю новый ConfigManager
            FileSetting.fillFiles(); //Неважно
            if (cfgManager.get("config").get().getBoolean("mysql")) { //MySQL, (Загрузка, создавание нужных таблиц (так-же с помощью API))
                mysql = true;
                CustomConfig config = cfgManager.get("config");
                api.loadMysql(config.get().getString("host"), config.get().getString("port"), config.get().getString("database"), config.get().getString("table"), config.get().getString("username"), config.get().getString("password"), "&7p&cRank&7] &4ERROR MYSQL!",
                        "CREATE TABLE IF NOT EXISTS " + config.get().getString("table_rank") + " (Rank VARCHAR(20),PathPermissions VARCHAR(50),Default BOOLEAN,Prefix_Chat VARCHAR(50),Prefix_Tab VARCHAR(16)" ,this);
                cm = api.getMysql();
                cm.update("CREATE TABLE IF NOT EXISTS " + config.get().getString("table") + " (UUID VARCHAR(50),Prefix_Chat VARCHAR(50),Prefix_Tab VARCHAR(16),Rank VARCHAR(20)");
            }
        }
    
        @Override
        public void onDisable() {
            
        }
    
        public static MainAPI getApi() {
            return api;
        }
    
        public static ConfigManager getCfgManager() {
            return cfgManager;
        }
    
        public static boolean isMysql() {
            return mysql;
        }
    
        public ConnectionManager getConnectionManager() {
            return cm;
        }
    }

    Главный класс API:

    Код:
    public final class Main extends JavaPlugin {
    
        private static JavaPlugin main; //Главный класс регистрируемого плагина
        private MainAPI api; //Апи
        
        public void onEnable() {
            api = new MainAPI();
        }
        
        public void onDisable() {
            
        }
        
        public void loadApi(JavaPlugin plugin) {
            main = plugin;
        }
    
        public static JavaPlugin getMain() {
            return main;
        }
        
        public MainAPI getApi() {
            return api;
        }
        
    }
    

    Так вот, в итоге вот такая вот ошибочка:

    Код:
    java.lang.NullPointerException: null
            at com.rankplugin.name.MainClass.onEnable(MainClass.java:22) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:382) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:331) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:753) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.Bukkit.reload(Bukkit.java:525) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:649) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:635) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at java.lang.Thread.run(Thread.java:844) [?:?]
    22 строка:
    Код:
    mainAPIClass.loadApi(this);
    Оба плагина присутствуют на сервере, так-же все библиотеки подключены. В итоге api грузится а плагин rank нет. Я так понимаю он даже найти его не может. P.S с апи первый раз работаю, не судите строго.
     
  2. Автор темы
    Akultist

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

    Баллы:
    46
    Вопрос решен. Я просто mainAPIClass обозначил в onEnable();

    P.S -
    Код:
    private Main mainAPIClass;
    
    public void onEnable() {
      mainAPIClass = (Main) Bukkit.getServer().getPluginManager().getPlugin("DefaultAPI");
    }
    А так-же в plugin.yml написал: depend: [DefaultAPI]
     
    Последнее редактирование: 6 июн 2018

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