Skocz do zawartości
  • 0

Config


maxcom1

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
https://skript.pl/temat/39916-config/
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

https://github.com/KarolekFM/karolekDrop/blob/master/src/main/java/net/karolek/drop/Config.java

Odnośnik do komentarza
https://skript.pl/temat/39916-config/#findComment-249905
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
https://skript.pl/temat/39916-config/#findComment-249906
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
https://skript.pl/temat/39916-config/#findComment-249909
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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