Jump to content

Hast du schon das Minecraftforum.de-Gütesiegel gesehen? Hier kommst du dorthin!

SpiCrafter

Fehler mit teleport(location) [Bukkit/Spigot]

Empfohlene Beiträge

Hallo,

ich bin noch ein Anfänger, was Plugin Programmierung angeht. Ich habe zwei Klassen: Main und JoinQuitEvents. Main ließt die Config und registriert die Events aus der JoinQuitEvents Klasse. Wenn der Spieler den Server betritt, soll er an eine bestimmte Position teleportiert werden.

// Main Klasse
public class Main extends JavaPlugin{

  @override
  public void onEnable() {
  
    getServer().getPluginManager().registerEvents(new JoinQuitEvents(this), this);
    loadConfig();
  
  }
  
  public void loadConfig() {
  
    getConfig().addDefault("Spawns.Lobby.w", "Lobby");	
		getConfig().addDefault("Spawns.Lobby.x", 0);
		getConfig().addDefault("Spawns.Lobby.y", 50);
		getConfig().addDefault("Spawns.Lobby.z", 0);
		getConfig().addDefault("Spawns.Lobby.yaw", 0);
		getConfig().addDefault("Spawns.Lobby.pitch", 0);
		getConfig().options().copyDefaults(true);
		saveConfig();
    
    	lw = getConfig().getString("Spawns.Lobby.w");			
		lx = getConfig().getInt("Spawns.Lobby.x");	
		ly = getConfig().getInt("Spawns.Lobby.y");	
		lz = getConfig().getInt("Spawns.Lobby.z");	
		lyaw = getConfig().getInt("Spawns.Lobby.yaw");
		lpitch = getConfig().getInt("Spawns.Lobby.pitch");
  
  }
  
}

// JoinQuitEvents Klasse

public class JoinQuitEvents implements Listener{

	Main pl;
	
	public JoinQuitEvents(Main pl) {
		
		this.pl = pl;
		
	}
  
    @EventHandler
	public void onJoin(PlayerJoinEvent e) {
		
		e.setJoinMessage("");
      
        Player p = e.getPlayer();
  
  		Location loc = new Location(pl.getServer().getWorld(pl.lw), pl.lx, pl.ly, pl.lz); 
52:		p.teleport(loc);
    }
}
  
  

Wenn ich dann auf meinen Testserver joine, kommt dan diese Fehlermeldung:

[01:21:20 ERROR]: Could not pass event PlayerJoinEvent to Lobby v0.0.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.PlayerList.onPlayerJoin(PlayerList.java:327) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.PlayerList.a(PlayerList.java:160) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.LoginListener.b(LoginListener.java:147) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.LoginListener.F_(LoginListener.java:57) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.NetworkManager.a(NetworkManager.java:233) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.ServerConnection.c(ServerConnection.java:140) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:842) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.NullPointerException
        at org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer.teleport(CraftPlayer.java:497) ~[spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at org.bukkit.craftbukkit.v1_11_R1.entity.CraftEntity.teleport(CraftEntity.java:260) ~[spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        at me.spicrafter.events.JoinQuitEvents.onJoin(JoinQuitEvents.java:52 (p.teleport(loc)) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_121]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
        ... 14 more

Weiß jemand, was ich falsch gemacht habe? :huh::)

bearbeitet von SpiCrafter

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 10.4.2017 um 01:42 schrieb SpiCrafter:

INIT pl;

Was ist denn INIT? Diese Variablenart ist mir unbekannt. Was kann das denn?

Also ich hätte anstelle von INIT "Plugin" eingesetzt. Das kannst du ja mal probieren.

 

Freundliche Grüße

BloodSKreaper

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

INIT war der name der Main Klasse. Ich hab es jetzt wieder auf Main umgeändert.

P.S. Ich habe ein bisschen rumprobiert und herausgefunden, dass keine Exception auftritt, wenn ich die Standartwelten (world, world_nether, world_the_end) in Location reinschreibe.

bearbeitet von SpiCrafter

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo SpiCrafter,

Wie du schon geschrieben hast, tritt der Fehler nicht auf, wenn du die Welt manuel einträgst.
Somit weißt du woher der Fehler kommt. Ist die Config Datei richtig aufgebaut? Woher kommt "lw"?

Außerdem solltest

e.setJoinMessage("");

zu

e.setJoinMessage(null);

ersetzten.
Dadurch wird keine leere Box beim Server beitritt angezeigt.

 

Mit freundlichen Grüßen,
ludgart

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

An der Config kann es nicht liegen. Wenn ich dort world reinschreibe bekomme ich keine Exception. World ist auch der Standartname, die ich in den server.propeties festgelegt habe. Schreibe ich aber den Namen einer anderen Welt rein, die aber im Serverordner drin ist z.B. Lobby, funkioniert das nicht. Muss ich die Welt irgendwie bei Bukkit registrieren oder importieren wie bei Multiverse?

bearbeitet von SpiCrafter

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hast du die Welt geladen bzw ist die aktiv?

 

Einfach ne Karte in den Serverordner packen bringt nichts.

Versuch sie mal mit Multiverse zu importieren

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ok, alles funktioniert. Ich dachte, man braucht kein Multiverse, wenn man den Code selber schreibt.

Vielen Dank für eure Antworten. :)

 

LG

SpiCrafter

bearbeitet von SpiCrafter

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden


×