Problem beim Aufrufen, von Objektmethoden/ -variablen

Hallo,
ich habe ein Minecraft-Plugin geschrieben, das Problem liegt aber glaub ich an der Java-Syntax (nicht am Plugincode). Und zwar, habe ich eine Klasse namens CommandSlave und eine andere Klasse namens Slave. In der Klasse CommandSlave wird ein ObjektArray der KLasse Slave initialisiert. Von dem möchte ich später die Objektvariable Name mit cSlave.name abrufen. Genau hier kommt allerdings der Fehler.
Ich hab jetzt schon einiges ausprobiert und bin darauf gekommen, dass ich vielleicht einen Fehler bei der Initialisierung des Objektes gemacht habe, und das Objekt gar nicht existiert, bzw. dort, wo ich name abfragen will nicht mehr lebendig ist...
Hier ist mal der Code:

main.java:
Java:
package main;

import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.bukkit.plugin.java.JavaPlugin;

public class main extends JavaPlugin{
    @Override
    public void onEnable(){
        registerCommands();
        registerEvents();
        loadConfig();
    }
    @Override
    public void onDisable(){
       
    }
   
   
   
    public void loadConfig(){
        getConfig().options().copyDefaults(true);
        saveConfig();
    }
    public void registerEvents(){

    }
    public void registerCommands(){
        CommandSlave cSlaveCommand = new CommandSlave(this);
        getCommand("sklave").setExecutor(cSlaveCommand);
    }
}

CommandSlave.java:
Java:
package main;

import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;

public class CommandSlave implements CommandExecutor {

    // variables
    private main plugin;
    public int maxSlaveNumber;
    private static int slaveNumber = 0;    // How many slaves a player has created yet
    private static Slave[] cSlave;

    // constructor
    public CommandSlave(main plugin) {
        this.plugin = plugin;
    }

    // methods
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player p = (Player) sender;
       
        // initialize variables
        maxSlaveNumber = plugin.getConfig().getInt("Config.maxSlaveNumber");
        Slave[] cSlave = new Slave[maxSlaveNumber];
       
        String argument = args[0];
       
        //////////////////////
        // CREATE NEW SLAVE //
        //////////////////////
        if(argument.equalsIgnoreCase("new")){
            // check, if player is allowed to create one more slave
            if(slaveNumber < cSlave.length){
                // check, how many arguments the command has
                if(args.length == 1) {
                    cSlave[slaveNumber] = new Slave(p);
                   
                    slaveNumber ++;
                }
               
                if(args.length == 2) {        // create slave with individual name
                    String name = args[1];
                   
                    cSlave[slaveNumber] = new Slave(p, name);
                   
                    slaveNumber ++;
                }
            }
       
            else{    // if player has created too much slaves
                p.sendMessage("§4Du darfst nur " + maxSlaveNumber + " Sklafen erstellen!");
            }
        }
       
        ////////////////
        // MORE INFOS //
        ////////////////
        if(argument.equalsIgnoreCase("help")){
            p.sendMessage("§6/sklave new [name]§7: Erstellt einen neuen Sklaven. Der Name ist optional");
            p.sendMessage("§6/sklave help      §7: Mehr Infos über Befehle zum Plugin");
            p.sendMessage("§6/sklave list      §7: Listet alle Sklaven auf");
        }
       
        /////////////////////
        // LIST ALL SLAVES //
        /////////////////////
        if(argument.equalsIgnoreCase("list")){
            p.sendMessage("§e---------Liste mit allen Sklaven---------");
            p.sendMessage("§1§lID\tname");
           
            // list slaves
            for(int i = 0; i < slaveNumber; i++){
                p.sendMessage("§o§f" + i + "\t§r§f" + cSlave[i].getName());
            }
            p.sendMessage("§e-----------------------------------------");
        }
        return true;
    }

}

Slave.java:
Java:
package main;

import java.lang.annotation.Target;

import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;

public class Slave {
    // variables
    private Player p;
    private Location loc;
    public String name;
   
    Villager slave;
   
    // constructors
    public Slave(Player p) {    // create new standart slave
        // variables
        this.p = p;
        loc = p.getLocation();
        this.name = "noname";
       
        // create new villager
        Villager slave  = (Villager) p.getWorld().spawnEntity(loc, EntityType.VILLAGER);
        slave.setCustomName("§3" + p.getName() +"'s Sklave");
        slave.setCustomNameVisible(true);
        slave.setTarget(p);
       
        p.sendMessage("§2Ein Villager wurde erfolgreich versklavt!");
    }
    public Slave(Player p, String name) {    // create new slave with individual name
        // variables
        this.p = p;
        this.name = name;
        loc = p.getLocation();
       
        // create new villager
        slave  = (Villager) p.getWorld().spawnEntity(loc, EntityType.VILLAGER);
        slave.setCustomName("§3" + this.name);
        slave.setCustomNameVisible(true);
        slave.setTarget(p);
       
        p.sendMessage("§2Ein Villager wurde erfolgreich versklavt!");
    }
   
    // get the slave's name
    public String getName(){
        return name;
    }
   
    // settings
    /*public void setTarget(Target t) {        // change target
        this.t= t;
        slave.setTarget((LivingEntity) t);
    }*/
}


Vielen vielen Dank an alle die sich die Mühe machen, diesen Code durchzulesen!

Und damit es übersichtlicher wird bzw. man den Code auch ausprobieren kann, häng ich noch die .jar Dateien und das Projekt als .zip an.

Ich hoffe wirklich, dass mir jemand helfen kann!

Mfg
Typ
 

Anhänge

  • BewerbungsPlugin.zip
    8,1 KB · Aufrufe: 1
  • Bewerbung_1-1-5.jar
    3,9 KB · Aufrufe: 0
Zuletzt bearbeitet:
Ich habe jetzt mal ein Objekt von Slave erstellt, also kein Array, und das funktioniert ohne Probleme, d.h. das Problem muss irgendwo im Array liegen. Ich denke mal es ist irgendein kleiner Leichtsinnsfehler, z.B. dass ich auf ein Feld im Array zugreifen will, was ich noch gar nicht definiert habe... Ich finde ihn nur nicht
 

knilch

Bekanntes Mitglied
Hi,
Wie Thallius schon bemerkt hat...
Wenn du auf cSlave zugreifen möchtest, sollte mit deiner Implementation eigentlich eine NPE geworfen werden...
In der Klasse: CommandSlave.java hast du eine static Variable: Slave[] cSlave;
Dann in der Methode
Code:
onCommand(...) {
...
Slave[] cSlave = new Slave[maxSlaveNumber];
...
}
Die Variable, bzw. das slave-Array, das du in der Methode onCommand() erstellst, besteht nur innerhalb des Context von onCommand(). Sobald diese Methode abgeschlossen ist, ist Slave[] cSlave nicht mehr vorhanden.
Versuch es mal so:
Java:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        ...
        cSlave = new Slave[maxSlaveNumber];
        ...
}
 
Zuletzt bearbeitet:
Danke für die Antworten!
Eine Fehlermeldung in dem Sinne wird nicht ausgegeben, nur in Minecraft wird, wenn ich den Befehl /Sklave list eingebe, "An Error occurred while attempting to perform this command" angezeigt.

Ich hab das, was ihr gesagt habt mal umgesetzt, es funktioniert aber immer noch nicht. Aber es wird jetzt in der Console ein Fehlermeldung angezeigt, was vorher nicht war:
Code:
[13:06:31 INFO]: OPT_developer issued server command: /sklave list
[13:06:31 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'sklave' in plugin BewerbungsPlugin v1.1.5
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-3dc138d]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit.jar:git-Bukkit-3dc138d]
        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:624) ~[craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.PlayerConnection.handleCommand(PlayerConnection.java:1298) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1158) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(SourceFile:37) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-3dc138d]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_91]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_91]
        at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:679) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:361) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:635) [craftbukkit.jar:git-Bukkit-3dc138d]
        at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:539) [craftbukkit.jar:git-Bukkit-3dc138d]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]
Caused by: java.lang.NullPointerException
        at main.CommandSlave.onCommand(CommandSlave.java:80) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-3dc138d]
        ... 15 more
[13:10:12 WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 10302ms behind, skipping 206 tick(s)
>
 

knilch

Bekanntes Mitglied
[13:06:31 INFO]: OPT_developer issued server command: /sklave list
[13:06:31 ERROR]: null
Ändere den Code von:
Java:
cSlave = new Slave[maxSlaveNumber];
zu:
Java:
if(cSlave == null)
   cSlave = new Slave[maxSlaveNumber];
Sonst wird bei jedem Aufruf von public boolean onCommand() {...} ein neues cSlaveArray erstellt...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
D Selenium WebDriver HtmlUnitDriver Problem beim Automatisieren Allgemeine Java-Themen 1
F Problem beim Speichern eines Attachments Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
O Problem beim Auslesen einer Arraylist von JComboBoxen Allgemeine Java-Themen 2
GUI-Programmer JNI - Problem beim Erstellen der .dll Allgemeine Java-Themen 9
D Problem mit Referenzen beim Serialisieren Allgemeine Java-Themen 3
R Problem beim vCard Manipulieren Allgemeine Java-Themen 2
Rudolf Problem beim Visitorpattern Allgemeine Java-Themen 2
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
N iText Problem beim verlinken anderer PDFs Allgemeine Java-Themen 2
M Problem beim Drucken von PDFs Allgemeine Java-Themen 3
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
I Problem beim Ausführen von Shell Commandos Allgemeine Java-Themen 3
O Problem beim Ausgeben von Arrays Allgemeine Java-Themen 9
L Problem beim animieren von Bildern in Applet Allgemeine Java-Themen 23
C Problem beim einlesen bestimmter Seiten Allgemeine Java-Themen 5
Apo JNI-Problem beim erneuten Laden einer dll Allgemeine Java-Themen 28
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
S Problem beim Anlegen eines JDialogs! Allgemeine Java-Themen 4
A Problem mit ShutdownHook beim schließen Allgemeine Java-Themen 7
S Problem beim Löschen des Inhalts des Fensters Allgemeine Java-Themen 4
A Problem beim serialisieren/deserialisieren einer ArrayList Allgemeine Java-Themen 3
M Problem beim Umrechnen von Pixel in cm. Allgemeine Java-Themen 6
M Problem beim ausführen von Batchdateien Allgemeine Java-Themen 21
Escorter Problem beim starten von Batchfiles Allgemeine Java-Themen 4
A Problem beim Starten der H2-Datenbank Allgemeine Java-Themen 4
L WindowsTrayIcon in Java 1.4 - Problem beim ausführen der JAR Allgemeine Java-Themen 2
E Problem beim Anlegen einer Datei Allgemeine Java-Themen 4
E Problem beim Dateien kodieren ("Byte = Byte +1") Allgemeine Java-Themen 3
G Problem beim starten von eclipse product Allgemeine Java-Themen 2
M Problem beim Erstellen eines Objektes Allgemeine Java-Themen 3
M Problem beim laden von vielen Bildern Allgemeine Java-Themen 16
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
H Problem beim Malen auf ein Panel Allgemeine Java-Themen 2
G iText: Problem beim Drucken von AcroFormen Allgemeine Java-Themen 2
E Problem beim fertigen Programm die Hintergrundfarbe ändern Allgemeine Java-Themen 8
karambara Sonderzeichen-Problem beim Lesen und Speichern von Dateien Allgemeine Java-Themen 6
R Problem beim Datentransfer Allgemeine Java-Themen 19
C Problem beim Umstieg von Java1.4 auf 1.5 Allgemeine Java-Themen 5
K javax.comm Problem beim starten aus .jar heraus Allgemeine Java-Themen 3
S Problem beim Bearbeiten von Java-Dateien unter Linux Allgemeine Java-Themen 3
S Hab ein Problem! Bei Dame! Beim Umranden! Allgemeine Java-Themen 2
G Problem beim speichern von Dateien Allgemeine Java-Themen 8
M Problem mit PageFormat beim Drucken Allgemeine Java-Themen 2
Streeber Problem beim Kompilieren und Ausführen Allgemeine Java-Themen 20
E Problem beim Compilieren Allgemeine Java-Themen 6
O JNI Problem beim kompilieren Allgemeine Java-Themen 2
M Codepage Problem (Vertauscht Zeichen beim Lesen aus Datei) Allgemeine Java-Themen 3
P Problem beim "spliten" eine Textdatei Allgemeine Java-Themen 3
F Problem beim Drucken mit javax.print Allgemeine Java-Themen 2
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
bernd Problem beim kopieren! Allgemeine Java-Themen 2
B problem beim erstellen einer ausführbaren jar-datei Allgemeine Java-Themen 5
A Problem beim Aufruf von javac Allgemeine Java-Themen 7
J JFrame Problem beim schließen Allgemeine Java-Themen 2
S Problem beim Zugriff auf Internetseiten Allgemeine Java-Themen 4
R Problem beim speichern von eigenem objekt Allgemeine Java-Themen 6
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben