• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot Eigene Reload-Funktion

LuxLP

Minecrafter
Registriert
9 Februar 2016
Beiträge
8
Alter
24
Diamanten
300
Hallo,
Ich programmiere zurzeit ein eigenes System für einen Server und möchte, dass ich anhand eines Befehls ("/systemreload"), das Plugin neu laden kann, statt immer den ganzen Server neu zu laden. Wie kann ich dass nun in das System einbauen?
Bedanke mich bereits im Voraus für sämtliche Antworten zu diesem Thread.

Mit freundlichen Grüßen
- LuxLP
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Ist relative einfach
Code:
Main plugin = (Main) Bukkit.getServer().getPluginManager().getPlugin("Pluginname"); //Main = deine Mainklasse
plugin.getPluginLoader().disablePlugin(plugin);
plugin.getPluginLoader().enablePlugin(plugin);
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Ist relative einfach
Code:
Main plugin = (Main) Bukkit.getServer().getPluginManager().getPlugin("Pluginname"); //Main = deine Mainklasse
plugin.getPluginLoader().disablePlugin(plugin);
plugin.getPluginLoader().enablePlugin(plugin);
Und absoluter Bullshit.

Zuerst entspricht das nicht einem /reload, dieser instanziert nämlich die Plugininstanz neu. Desweiteren ist offensichtlich, dass @LuxLP keine Ahnung hat was dabei zu beachten ist, wenn man z.B. statische Felder nutzt, hat man ein Problem.

Die richtige Antwort ist daher eigentlich ziemlich simpel: Du musst ALLES was dein Plugin tut rückgängig machen. Jeden Task abbrechen, jeden Listener entfernen, etc. Vor allem wenn du irgendwo static benutzt, musst du dir genau überlegen, ob es schlimm ist, wenn beim nächsten Mal der Wert nicht neu gesetzt wird. Je nach dem wie groß dein Projekt zur Zeit ist, kannst du es ja vielleicht mal den Quellcode als Zip hochladen und dann kann man gucken, ob dir jemand alle Punkte aufzeigt, an denen du auf Probleme stößen wirst.

Das ganze korrekt zu implementieren ist überhaupt nicht trivial und erfordert eine saubere Softwarearchitektur. Aus diesem Grund ist der /reload Befehl auch so verhasst: Es gibt fast keine Plugins, die sauber entwickelt wurden und sich wirklich spurlos ausklinken. Bukkit/Spigot bekommt es ja schon selbst nicht hin...
 

LuxLP

Minecrafter
Registriert
9 Februar 2016
Beiträge
8
Alter
24
Diamanten
300
Je nach dem wie groß dein Projekt zur Zeit ist, kannst du es ja vielleicht mal den Quellcode als Zip hochladen und dann kann man gucken, ob dir jemand alle Punkte aufzeigt, an denen du auf Probleme stößen wirst.

Das Projekt ist nicht gerade das kleinste, denn es hat viele Klassen (mind. 25 Stück)
 
Oben