set/home Befehl funktioniert nicht?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo

Ich habe das Problem gefunden:

In der Klasse HomeCommand, wo du die World definierst, machst du

Bukkit.getWorld(/* pfad in der Config */);

Dies sollte aber etwa so aussehen:

Bukkit.getWorld(configuration.getString(/* pfad in der Config */));

So hat es bei mir funktioniert.

Zudem empfehle ich dir, keine leerzeichen um die YAML-Punkte zu machen, da dies nur der Struktur schadet.

Dann solltest du, wie von Toni erwähnt, noch ein Try/Catch um den teleport machen, falls etwas in der Config nicht stimmt.

Lg Oliver

PS: Wenn du willst, kann ich dir meine Änderungen schicken.

Woher ich das weiß:Studium / Ausbildung

antxn774 
Beitragsersteller
 03.02.2021, 12:00

Das geht jetzt, dafür vielen Dank, aber wenn ich das Home setzt muss ich den Server erstmal reloaden, damit ich mich auch zu dem neu gesetzten Home teleportieren kann. Weißt du wie ich den File, in dem die Homes gespeichert werden, laden kann, ohne, dass der Server reloaded oder neu gestartet werden muss?

0
AlwaysDarkTheme  03.02.2021, 21:42
@antxn774

Ich würde es sowieso so machen, dass du die Datei nicht die ganze Zeit speicherst und ladest, weil das verschwendete Zeit ist, die während des Zugriffs auf eine (langsame) Festplatte verloren geht.

Meine lösung würde etwa so aussehen:

  • In deiner Hauptklasse eine public static FileConfiguration, welche du in der onEnable()-Methode initialisierst.
  • Bei den Commands benutzt du dann diese Configuration, anstatt immer eine neue zu initialisieren.
  • In der onDisable()-Methode speicherst du dann diese Configuration.

In Code würde das ungefähr so aussehen:

public class WasAuchImmer extends JavaPlugin {
    
    // Variable definieren
    public static FileConfiguration CONFIGURATION;
    
    @Override
    public void onEnable() {
        // Configuration laden
        CONFIGURATION = YamlConfiguration.loadConfiguration(new File("plugins/config.yml"));
    }
    
    @Override
    public void onDisable() {
        try {
            // Configuration speichern
            CONFIGURATION.save(new File("plugins/config.yml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Dann kannst du von den anderen klassen ganz einfach mit:

WasAuchImmer.CONFIGURATION;

Auf die Configuration zugreifen.

PS: Ich habe diesen code nicht getestet. Zudem ist er auch nicht sehr schön.

0

Ich würde bei dem teleport zum Home ein Try/Catch machen, da die Position ja erstmal gesetzt werden muss und nicht Standartmäßig gestetzt ist. Wenn es dann nicht funktioniert und man nicht teleportiert wird, liegt es an der Config. Wenn diese Position nicht gefunden wird, kann man da ja auch niemanden hin teleportieren oder ;)

MFG

Woher ich das weiß:Hobby – Spiele 5 Jahre Minecraft | Bauen | Programmieren | PVP