Jump to content

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
Link zu diesem Kommentar
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
Link zu diesem Kommentar
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

Link zu diesem Kommentar
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
Link zu diesem Kommentar
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
×
×
  • Neu erstellen...
B
B