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:
CommandSlave.java:
Slave.java:
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
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
Zuletzt bearbeitet: