Помогите Runnable евенты

CreeperPro35

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
_SEVENTYNINE_
Есть проблема с BukkitRunnable

Сам метод, который я пытаюсь загрузить:
Код:
public void runnabledelayed() {
        new BukkitRunnable() {

            @Override
            public void run() {
                for (LivingEntity e : Bukkit.getServer().getWorld("world").getLivingEntities()) {
                    e.setCustomName(ChatColor.DARK_RED + e.getType().getName() + " | " + e.getHealth());
                }
            }
          
        }.runTaskTimer(this, 0, 40);
    }

Код:
public static void runnabledelayed() {
        new BukkitRunnable() {

            @Override
            public void run() {
                for (LivingEntity e : Bukkit.getServer().getWorld("world").getLivingEntities()) {
                    e.setCustomName(ChatColor.DARK_RED + e.getType().getName() + " | " + e.getHealth());
                }
            }
          
        }.runTaskTimer(new Main(), 0, 40);
    }

В случае, если я использую метод в onEnable через главный класс (с использованием this), всё работает, как надо
Если я использую метод с другого класса, в консоль выводит ошибку
Код:
[21:47:19 ERROR]: Error occurred while enabling EffectLibTestPlugin v1.0 (Is it up to date?)
java.lang.IllegalArgumentException: Plugin already initialized!
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:98) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:60) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at ru.mascarpone.seventy.Main.<init>(Main.java:25) ~[?:?]
        at ru.mascarpone.seventy.utils.RunnableEvents.runnabledelayed(RunnableEvents.java:22) ~[?:?]
        at ru.mascarpone.seventy.Main.onEnable(Main.java:33) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:401) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:360) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:321) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:722) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:621) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:607) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:407) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:371) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:650) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:554) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
Caused by: java.lang.IllegalStateException: Initial initialization
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:101) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:60) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at ru.mascarpone.seventy.Main.<init>(Main.java:25) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_191]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_191]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_191]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_191]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_191]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:52) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:325) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:248) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.java:296) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:720) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]
        ... 10 more

Как использовать метод не из главного класса, но чтобы он не выдавал ошибку?
 
Ну тк ты не можешь создать новый экземпляр мейн класса. Передавай его через конструкторы.
 
вызывай Main через конструкторы:
private Main plugin;
public classname(Main instance){
plugin = instance;
}
В последствии вызывай не через. this. А через plugin.getInstance();
 
Внимание ща будет костыль😆
Bukkit.getPluginManager().getPlugin("nameplugin")
 
Откуда у него экземпляр main-класса из static'а?
Он предлагает ему передать мейн класс через конструктор и сохранить в переменную.
Код:
private Main plugin;

public classname(Main instance){
    plugin = instance;
}
Затем он при необходимости советует юзать "plugin.getInstance()", вопрос, зачем вызывать "getInstance()" если у него уже сохранен мейн класс в качестве переменной?

Да и так, передавать именно Main не нужно, достаточно передать Plugin.
 
Гавно ваши getInstance'ы, нормальные костыльщики используют JavaPlugin.getPlugin(Main.class);
UPD: А вот и секретные документы подъехали..
 
Последнее редактирование:
И чем это отличается от getInstance?)
Шо то кал, шо это кал.
Ну ты шо, ты понимаешь что костыльщикам нужно меньше костылить, костыль уже сделан за них.. Чувствуешь запах прогресса?

P.S. Сам знаю про инжуктор зависимостей, и в этом случае лучше всего использовать его

​
 
Назад
Верх