Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Błąd w pluginie...


Rekomendowane odpowiedzi

Opublikowano

Błąd:

[22:10:11] [Server thread/ERROR]: Could not load 'plugins\MineSBanS.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.IllegalArgumentException: Plugin already initialized!
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:133) ~[craftbukkit.jar:git-Spigot-1649]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:341) ~[craftbukkit.jar:git-Spigot-1649]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:263) [craftbukkit.jar:git-Spigot-1649]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.java:369) [craftbukkit.jar:git-Spigot-1649]
at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.java:152) [craftbukkit.jar:git-Spigot-1649]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:458) [craftbukkit.jar:git-Spigot-1649]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Spigot-1649]
Caused by: java.lang.IllegalArgumentException: Plugin already initialized!
at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:122) ~[craftbukkit.jar:git-Spigot-1649]
at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[craftbukkit.jar:git-Spigot-1649]
at pl.interia.mati5559.MineSBanS.Main.<init>(Main.java:13) ~[?:?]
at pl.interia.mati5559.MineSBanS.config.GetValues.<init>(GetValues.java:11) ~[?:?]
at pl.interia.mati5559.MineSBanS.Main.<init>(Main.java:15) ~[?:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_65]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_65]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_65]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.7.0_65]
at java.lang.Class.newInstance(Unknown Source) ~[?:1.7.0_65]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[craftbukkit.jar:git-Spigot-1649]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129) ~[craftbukkit.jar:git-Spigot-1649]
... 6 more
Caused by: java.lang.IllegalStateException: Initial initialization
at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:125) ~[craftbukkit.jar:git-Spigot-1649]
at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[craftbukkit.jar:git-Spigot-1649]
at pl.interia.mati5559.MineSBanS.Main.<init>(Main.java:13) ~[?:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_65]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_65]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_65]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.7.0_65]
at java.lang.Class.newInstance(Unknown Source) ~[?:1.7.0_65]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[craftbukkit.jar:git-Spigot-1649]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129) ~[craftbukkit.jar:git-Spigot-1649]
... 6 more
 

Kod klasy Main.java:

package pl.interia.mati5559.MineSBanS;

import java.util.Calendar;

import org.bukkit.plugin.java.JavaPlugin;

import pl.interia.mati5559.MineSBanS.commands.*;
import pl.interia.mati5559.MineSBanS.config.GetValues;
import pl.interia.mati5559.MineSBanS.listeners.JoinListener;
import pl.interia.mati5559.MineSBanS.util.Time;
import pl.interia.mati5559.MineSBanS.util.Util;

public class Main extends JavaPlugin {
	
	public GetValues getValues = new GetValues();
	
	public Calendar cal; 
	
	public Time time;
	
	public Util util;
	
	@Override
	public void onEnable()
	{
		this.util = new Util();
		this.time = new Time();
		this.cal = Calendar.getInstance();
		this.saveDefaultConfig();
		this.getCommand("kick").setExecutor(new Kick());
		this.getCommand("ban").setExecutor(new Ban(this));
		this.getCommand("unban").setExecutor(new Unban());
		this.getCommand("tempban").setExecutor(new TempBan());
		this.getCommand("checkban").setExecutor(new CheckBan());
		this.getCommand("warn").setExecutor(new Warn());
		getServer().getPluginManager().registerEvents(new JoinListener(), this);
	}
	
	@Override
	public void onDisable()
	{
		this.saveConfig();
	}
}

Kod klasy GetValues.java:

package pl.interia.mati5559.MineSBanS.config;

import pl.interia.mati5559.MineSBanS.Main;

public class GetValues {
	
	public final Main getPlugin;
	
	public GetValues()
	{
		 getPlugin = new Main();
	}
	
	public String message(String message2)
	{
		getPlugin.reloadConfig();
		String aabbcc = getPlugin.getConfig().getConfigurationSection("messages").getString(message2);
		return aabbcc;
	}
}

Wiem że jest masakra w kodzie bo to mój pierwszy plugin i inaczej nie umiem tego zrobić i nie hejtujcie mnie z tego powodu. Jeśli zły dział to proszę moda o przeniesienie i nie piszcie mi tego...

Opublikowano
	public GetValues()
	{
		 getPlugin = new Main();
	}
	

nie możesz tworzyć nowej intancji klasy głównej, jak chcesz mieć dostęp do instancji klasy głównej są 2 wygodne rozwiązania

 

1. (działa wszedzie, więc jest jak dla mnie lepszy, ale część zasad podaje że nie powinno tak sie robić)

W klasie Main tworzysz:

private static Main inst;

w onEnable w pierwszej linijce dajesz:

inst = this;

I dodajesz metode:

public static Main getInstance()
{
    return inst;
}

I od teraz masz wszędzie dostęp do instancji pluginu za pomocą Main.getInstance()

 

 

 

2. poprawie zrobiony konstruktor

Zamiast:

	public GetValues()
	{
		 getPlugin = new Main();
	}
	

musisz dać

	public GetValues(Main main)
	{
		 getPlugin = main;
	}
	

tutaj niestety jest problem -> bo żeby stworzyć ten obiekt potrzebujesz instancji głównej klasy, dlatego pierwsza metoda jest wygodniejsza, bo nie trzeba robić żadnych konstruktorów itd :P

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...