Ganz einfach:
ArrayIndexOutOfBoundsException heißt, dass du versuchst, auf einen Entry des Arrays zuzugreifen, allerdings ist der Index den du angegeben hast zu hoch. In diesem Fall wäre es 1. Das heißt, dass das jeweilige Array nur eine Größe von 1 hat und somit array[1] auf einen Entry im Array zugreifen will, der einen höheren Index hat, als die Größe deines Arrays. In diesem Fall könnte es vlt. so sein, dass dein SchildArray nur eine Zeile hat, also die BukkitAPI nur ein Array der Größe 1 initialisiert.
Und BITTE markiert, wenn ihr code postet immer die Fehlerzeile (z.B. mit //Hier ist der Fehler laut Stacktrace), dies macht die Fehlerfindung um einiges einfacher.-.
Ok Danke
PHP:
package net.blockbreaker.serversigns;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.Sign;
public class StatusSign {
private Location location;
private Sign sign;
private String name, ip;
private int port;
public StatusSign(Location location, String name, String ip, int port) {
this.location = location;
this.sign = (Sign) location.getBlock().getState();
this.name = name;
this.ip = ip;
this.port = port;
}
public Location getLocation() {
return location;
}
public String getName() {
return name;
}
public String getIP() {
return ip;
}
public int getPort() {
return port;
}
public void update() {
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, port), 1 * 1000);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());
out.write(0xFE);
StringBuilder str = new StringBuilder();
int b;
while ((b = in.read()) != -1) {
if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
str.append((char) b);
}
}
/*
<Name>
<IP>
<Current/Max>
<MOTD>
*/
String[] data = str.toString().split("§");
String motd = data[0];
int onlinePlayers = Integer.valueOf(data[1]); //Hier ist der Fehler laut StackTrace
int maxPlayers = Integer.valueOf(data[2]);
sign.setLine(0, name);
sign.setLine(1, ip);
sign.setLine(2, onlinePlayers + "/" + maxPlayers);
sign.setLine(3, motd);
socket.close();
} catch (Exception e) {
e.printStackTrace();
sign.setLine(0, name);
sign.setLine(1, ip);
sign.setLine(2, ChatColor.RED + "Error.");
}
sign.update();
}
}
Hier ist der Code. Eigentlich sollte dieser Index aber existieren.
@Datenstau Habe den Fehler laut StackTrace im Code makiert.
Zuletzt bearbeitet: