Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
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:
@HerrDosHD @v_f_1 Wisst ihr was hier falsch ist?

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.
 
Code (Text):
  1. EntityPlayer nmsPlayer = ((CraftPlayer) player).getHandle();
  2. nmsPlayer.playerConnection.sendPacket(new Packet24MobSpawn(nmsPlayer));


    Ist das alles Bukkit, oder ProtocolLib?
 
Weiß jemand wie das Packet24MobSpawn in Spigot 1.8.3 heißt? =D

EDIT: Hab PacketPlayOutNamedEntitySpawn verwendet, friert nur den Spieler ein aber Crasht nix :(
 
Zuletzt bearbeitet von einem Moderator:
Hallö
Ich brauche immernoch hilfe bei diesem code:
http://pastebin.com/PiH8PxH1

Es soll beim Befehl ein TNT in die Luft schießen, beim hochfliegen des TNT´s sollen Lav Partikel hinterfliegen.
Dann später soll das TNT in der Luft explodieren und wie ein Feuerwerk aufgehen.
Leider explodiert es einfach nur und es kommen keine Particles... Woran liegt es?

Das ist mein Problem :)
 
  • Like
Reaktionen: codex01
Versuch mal die Methode:

Code:
void fillCircle(Location l, Effect e, int radius) {
        for (int x = -radius; x <= radius; x++) {
            for (int z = -radius; z <= radius; z++) {
                if ((x * x) + (z * z) <= (radius * radius)) {
                    l.getWorld().playEffect(l, e, null);
                }
            }
        }
    }
 
  • Like
Reaktionen: 3LaF
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop