Skocz do zawartości
  • 0

Config


maxcom1
 Udostępnij

Pytanie

Hej.

Chciałem dodać do pluginu mojego pluginu config, ale wyskoczyło kilka błędów.

[11:04:39 ERROR]: Error occurred while enabling ppl v0.1 (Is it up to date?)
java.lang.IllegalArgumentException: Plugin already initialized!
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:187) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:60) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at pl.maxcom1.ppl.Config.<init>(Config.java:9) ~[?:?]
        at pl.maxcom1.ppl.FirstPlugin.onEnable(FirstPlugin.java:16) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:808) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.Bukkit.reload(Bukkit.java:559) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:55) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:648) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:463) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_251]
Caused by: java.lang.IllegalStateException: Initial initialization
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:190) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:60) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at pl.maxcom1.ppl.FirstPlugin.<init>(FirstPlugin.java:10) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_251]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_251]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_251]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_251]
        at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_251]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:94) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.java:318) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:806) ~[Paper-1.12.2-b1618.jar:git-Paper-1618]
        ... 10 more

Klasa główna ("FirstPlugin"):

package pl.maxcom1.ppl;

import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class FirstPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        System.out.println("Ładowanie...");
        this.getCommand("help").setExecutor(new HelpCommand());
        this.getCommand("configingo").setExecutor(new Config());
        getServer().getPluginManager().registerEvents(this,this);
    }

    @EventHandler
    public void onEntityExplode(EntityExplodeEvent event){
        event.setCancelled(true);
        getServer().getConsoleSender().sendMessage(ChatColor.RED+"Anulowano eksplozje!");
    }
}




Klasa odpowiedzialna za config ("Config"):

package pl.maxcom1.ppl;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Config extends JavaPlugin
{
    @Override
    public void onEnable() {
        getConfig().options().copyDefaults();
        saveDefaultConfig();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equalsIgnoreCase("configinfo")) {
            Player player = (Player) sender;
            Boolean load = getConfig().getBoolean("enable");
            player.sendMessage(ChatColor.DARK_PURPLE + "Config: " + load);
        }
        return false;
    }
}

Nie wiem czym to jest spowodowane.

Proszę o pomoc!

Odnośnik do komentarza
Udostępnij na innych stronach

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
6 minut temu, maxcom1Games napisał:

A, a w drugiej coś dodać zamiast tego?

 

klasa Config powinna być klasą gdzie będą zapisywane wszystkie zmienne z configu (jakieś Stringi z wiadomościami itd), mogą być one odczytywane statycznie ale nie tylko.

Pamiętaj, że java opiera się na programowaniu obiektowym.

 

Masz tu przykład od karolka

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
package pl.maxcom1.ppl;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public final class Config
{
    @Override
    public void onEnable() {
        this.getConfig().options().copyDefaults(true);
        getConfig().addDefault("enable", true);
        this.saveDefaultConfig();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equalsIgnoreCase("configinfo")) {
            Player player = (Player) sender;
            Boolean load = getConfig().getBoolean("enable");
            player.sendMessage(ChatColor.DARK_PURPLE + "Config: " + load);
        }
        return false;
    }
}

Coś takiego?

saveDefaultConfig();

oraz getConfig()

wyświetla na czerwono

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
31 minut temu, maxcom1Games napisał:
package pl.maxcom1.ppl;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public final class Config
{
    @Override
    public void onEnable() {
        this.getConfig().options().copyDefaults(true);
        getConfig().addDefault("enable", true);
        this.saveDefaultConfig();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equalsIgnoreCase("configinfo")) {
            Player player = (Player) sender;
            Boolean load = getConfig().getBoolean("enable");
            player.sendMessage(ChatColor.DARK_PURPLE + "Config: " + load);
        }
        return false;
    }
}

Coś takiego?

saveDefaultConfig();

oraz getConfig()

wyświetla na czerwono

ehh po co ci onEnable ???

zrób prywatny konstruktor private Config() {}

metode public static void loadConfig() (potem w klasie głównej przy metodzie onEnable załadujesz config tak: Config.loadConfig())

i w niej rób wszystko

jak robisz saveDefaultConfig nie musisz dawać    

 this.getConfig().options().copyDefaults(true);

no i po co masz Boolean jako obiekt ? wystarczy zwykły boolean z małej litery

 

Dodatkowo zauważ jak to jest u karolka

 KarolekDrop.getPlugin().saveDefaultConfig();

Odwołał się do głównej klasy

W swojej klasie głównej możesz to zrobić np. tak

public static Klasa getInstance() {
	return getPlugin(Klasa.class);
}

A w klasie Config coś takiego. 

FirstPlugin.getInstance().saveDefaultConfig();

Bierzesz się za rzeczy trudniejsze a nie masz totalnie pojęcia o podstawach, za szybko idziesz do przodu.

Edytowane przez kerpson
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...