PlayerRespawn Problem

04/30/2014 21:24 .cryptex#1
Hey Community,

ich habe vor One in the Chamber nach zu programmieren, aber ich habe ein Problem, wenn ich auf Respawn klicke, wird der wo mich getötet hat an den
punkt teleportiert, den ich in teleport(); gemacht habe.
Momentan weiß ich nicht wieso ich nicht dahin teleportiert werde.

PHP Code:
@EventHandler
    
public void onRespawn(PlayerRespawnEvent e) {
    final 
Player player e.getPlayer();
    
    
ItemStack bow = new ItemStack(Material.BOW1);
    
player.getInventory().addItem(new ItemStack[] { bow });
    
    
ItemStack arrow = new ItemStack(Material.ARROW1);
    
player.getInventory().addItem(new ItemStack[] { arrow });
    
    
ItemStack help = new ItemStack(Material.GOLD_AXE1);
    
player.getInventory().addItem(new ItemStack[] { help });
    
    
teleport();
    } 
04/30/2014 22:05 False#2
Erstmal bräuchten wir die Funktion "teleport", sonst können wir dir schlecht sagen wieso..
04/30/2014 23:20 ComputerBaer#3
Ich würde sogar sagen die gesamte Klasse wäre interessant, weil sich mir zurzeit völlig entzieht woher teleport() seinen Spieler kennen soll.
04/30/2014 23:56 False#4
Quote:
Originally Posted by ComputerBaer View Post
Ich würde sogar sagen die gesamte Klasse wäre interessant, weil sich mir zurzeit völlig entzieht woher teleport() seinen Spieler kennen soll.
genau das hab ich mir auch gedacht^^
05/02/2014 07:20 lordsill#5
Quote:
Originally Posted by ComputerBaer View Post
Ich würde sogar sagen die gesamte Klasse wäre interessant, weil sich mir zurzeit völlig entzieht woher teleport() seinen Spieler kennen soll.
Ich denke davon müssen wir nichtmal den Inhalt kennen, um zu sagen, dass die auch nicht korrekt funktionieren kann.

1. Die Spielervariable wird ja nur innerhalb der Methode onRespawn definiert, aber nicht global für die Klasse, sodass teleport nie wissen kann, welcher Spieler teleportiert werden soll.
@TE
Um das Problem zu lösen, speicher entweder die Variable player global in der Klasse, oder besser:
Übergebe sie als Argument der Methode teleport.
So hast du dann in onRespawn in der letzten Zeile stehen:
Code:
teleport(player);
sowie in der in der Zeile der Methode:
Code:
public void teleport(Player player)
{
//Den Teleport Code hier einfügen
}
Da sonst der teleport Funktion nie mitgeteilt wird, welchen Spieler er denn nun iwo hin teleportieren soll.
05/02/2014 12:34 False#6
Quote:
Originally Posted by LordSill View Post
Ich denke davon müssen wir nichtmal den Inhalt kennen, um zu sagen, dass die auch nicht korrekt funktionieren kann.

1. Die Spielervariable wird ja nur innerhalb der Methode onRespawn definiert, aber nicht global für die Klasse, sodass teleport nie wissen kann, welcher Spieler teleportiert werden soll.
@TE
Um das Problem zu lösen, speicher entweder die Variable player global in der Klasse, oder besser:
Übergebe sie als Argument der Methode teleport.
So hast du dann in onRespawn in der letzten Zeile stehen:
Code:
teleport(player);
sowie in der in der Zeile der Methode:
Code:
public void teleport(Player player)
{
//Den Teleport Code hier einfügen
}
Da sonst der teleport Funktion nie mitgeteilt wird, welchen Spieler er denn nun iwo hin teleportieren soll.
Spielverderber, das wir es nicht wissen brauchen ist eigentlich klar ;)
Aber dennoch würde mich es interessieren wie er es machen wollte :D