Hier ist mein Problem (hilfe!):
In einer Methode will ich jeden Spieler der online ist zu einem bestimmten Block teleportieren.
Angenommen es gibt 4 Spieler, darunter ein Spieler (Ich) welcher auf einen besonderen Block kommt. In einer Schleife werden zuerst alle Spieler der Collection
in ein Array gegeben. In der nächsten Schleife ist der Iterator j auch gleichzeitig die "Sitznummer" oder die Nummer der "Location/Position" auf die der Spieler teleportiert werden soll. z.B. j = 3 und Sitzplatz 3. Wenn der Spieler jedoch "Sumo_ow" (in dem Fall) heißt, kommt er auf einen Sitzt welcher nicht im Array der Locations/Positionen ist, sondern auf einen anderen speziellen. Wenn also j = 0 -> Platz 0.
j = 1 -> Platz 1, in einem Fall würde dann z.b. "Sumo_ow" im Array sein und dementsprechend ist der boolean "xFound" auf true gesetzt worden. Wenn dann also j = 2 -> "Sumo_ow" -> "customLocation" und danach würde j = 3 keinen Platz bekommen, weil es nur 3 Plätze inkl. einen besonderen für "Sumo" gibt. [Platz 0, Platz 1, Platz 2] und "customLocation", dafür die Abfrage ob "xFound" true ist.
In der Konsole kommt der Fehler: "java.lang.ArrayIndexOutOfBoundsException: 2"
Und im Mc-Chat steht: "An internal error occured while attempting to perform this command"
Code:
Ich hab schon versucht, Werte ausgeben zu lassen. Länge von "playerArray" entspricht der Anzahl der online Spieler und enthält sie.
"locationArray"'s Länge auch.
Die Umformung von der Collection zu dem Array funktioniert auch. Ich habe erstmal 3 [0, 1, 2] Locations testweise eingetragen für ein Maximum von 4 Spielern.
In einer Methode will ich jeden Spieler der online ist zu einem bestimmten Block teleportieren.
Angenommen es gibt 4 Spieler, darunter ein Spieler (Ich) welcher auf einen besonderen Block kommt. In einer Schleife werden zuerst alle Spieler der Collection
Java:
Bukkit.getOnlinePlayers()
j = 1 -> Platz 1, in einem Fall würde dann z.b. "Sumo_ow" im Array sein und dementsprechend ist der boolean "xFound" auf true gesetzt worden. Wenn dann also j = 2 -> "Sumo_ow" -> "customLocation" und danach würde j = 3 keinen Platz bekommen, weil es nur 3 Plätze inkl. einen besonderen für "Sumo" gibt. [Platz 0, Platz 1, Platz 2] und "customLocation", dafür die Abfrage ob "xFound" true ist.
In der Konsole kommt der Fehler: "java.lang.ArrayIndexOutOfBoundsException: 2"
Und im Mc-Chat steht: "An internal error occured while attempting to perform this command"
Code:
Java:
Location locationArray[] = new Location[players];
locationArray[0] = new Location(world, 2.5, 150.0, 2.5);
locationArray[1] = new Location(world, -1.5, 150.0, 0.5);
locationArray[2] = new Location(world, 0.5, 150.0, -1.5);
Location customLoc = new Location(world, 0.5, 150.0, 0.5); //<-- Sumo_ow
Player playerArray[] = new Player[players];
for (int i = 0; i <= players; i++) {
playerArray[i] = Iterables.get(Bukkit.getOnlinePlayers(), i);
}
for(int j = 0; j <= players; j++) {
if(playerArray[j].getName() == "Sumo_ow") {
playerArray[j].teleport(customLoc);
xFound = true;
} else {
if(xFound) {
playerArray[j].teleport(locationArray[j-1]);
} else {
playerArray[j].teleport(locationArray[j]);
}
}
}
Ich hab schon versucht, Werte ausgeben zu lassen. Länge von "playerArray" entspricht der Anzahl der online Spieler und enthält sie.
"locationArray"'s Länge auch.
Die Umformung von der Collection zu dem Array funktioniert auch. Ich habe erstmal 3 [0, 1, 2] Locations testweise eingetragen für ein Maximum von 4 Spielern.
Java:
for (int i = 0; i <= players; i++) {
playerArray[i] = Iterables.get(Bukkit.getOnlinePlayers(), i);
}