PixelEmpires
Kuhfänger
Hey, ich habe ein kleines Plugin programmiert, welches wenn man einen Befehl eingibt ein Skelet an einem zufälligen Ort spawnt. Wenn man es tötet soll noch ein weiteres spawnen, aber dies passiert nicht.
Ich habe diese 3 Klassen. Der Fehler muss in der Main oder in der Listener Klasse sein...
Wäre echt nett wenn mir einer helfen könnte..... Das Problem muss wie gesagt irgendwie beim Listener liegen, da das 1. Skelet gespawnt wird, aber wenn man es tötet passiert nichts.
Ich habe diese 3 Klassen. Der Fehler muss in der Main oder in der Listener Klasse sein...
Java:
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
public int level = 0;
public int leben = 5;
public void onEnable() {
}
public void onDisable() {
}
//warten bis Befehl ausgeführt wird
public boolean onCommand(CommandSender sender, Command befehl, String befehlsname, String [] args) {
if (sender instanceof Player){ //Sender muss ein Speiler sein
Player spieler = (Player) sender;
spieler.teleport(new Location(getServer().getWorld("Empires"),422,88,212)); //Speiler wird zur Arena teleportiert
spieler.sendMessage("§6[§eEmpires§6] §eMach die bereit für den Kampf! Es geht los in: ");
spieler.sendMessage("3");
spieler.sendMessage("2");
spieler.sendMessage("1");
//1. Gegner wird erstellt
Skeleton gegner1 = new Skeleton(leben , spieler, level);
level = level + 1;
leben = leben + 10;
gegner1.GegnerErstellen(); //
spieler.sendMessage("§6[§eEmpires§6] §eDer Gegner wurde gespawnt! Vernichte ihn und alle weiteren!");
//Event regestriern
PluginManager pluginManager = this.getServer().getPluginManager();
SkeletonDamageListener listener = new SkeletonDamageListener();
pluginManager.registerEvents(listener, this);
if (listener.skeletonHealth == true) {
spieler.sendMessage("Du hast den Gegner Level " + level + "vernichtet!");
//Neuer Gegner erstellen
Skeleton gegner2 = new Skeleton(leben, spieler, level);
gegner2.GegnerErstellen();
if (listener.skeletonHealth == true) { //prüfen ob 2. Geggner noch lebt
spieler.sendMessage("Du hast beide Gegner vernichtet! Herzlichen Glückwunsch!");
}
}
}
return true;
}
}
Java:
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
public class SkeletonDamageListener implements Listener{
boolean skeletonHealth;
public SkeletonDamageListener() {
}
@EventHandler
public boolean EntityDamageEvent(EntityDamageEvent event) { //Wenn ein Entity Schaden zugefügt wird
//Nun wird geprüft ob das Entity auch ein Skellet ist (vlt später überprüfen ob das Entity auch das richtige Level hat!)
if (event.getEntityType() == EntityType.SKELETON) {
if (event.getCause() == DamageCause.ENTITY_ATTACK) {
if (event.getEntity().isDead() == true) {
skeletonHealth = true;
}
}
}
return skeletonHealth;
}
}
Java:
import java.util.Random;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
public class Skeleton {
public int leben;
public int level;
public Player spieler;
public Location gegnerSpawn;
public Skeleton() {
}
//Eigenschaften
public Skeleton(int leben, Player spieler, int level) {
this.leben = leben;
this.spieler = spieler;
this.level = level;
}
public void GegnerErstellen() {
Random zufallsgenerator = new Random();
World welt = spieler.getServer().getWorld("Empires");
Location [] gegner = new Location [5];
// 5 Orte wo Gegner spawnen können
gegner [0] = new Location(welt,414,90,201);
gegner [1] = new Location(welt,415,90,221);
gegner [2] = new Location(welt,426,88,225);
gegner [3] = new Location(welt,435,85,218);
gegner [4] = new Location(welt,424,88,205);
gegnerSpawn = gegner[zufallsgenerator.nextInt(gegner.length)]; // Ein Ort wird zufällig ausgewählt
LivingEntity entity = (LivingEntity)welt.spawnEntity(gegnerSpawn, EntityType.SKELETON); //Gegner wird erstellt (Sekellet)
//Eiegntchaften des Gegners:
entity.setCustomName("§eLevel: §c" + level);
entity.setHealth(leben);
entity.isCustomNameVisible();
entity.setCanPickupItems(false);
}
}
Wäre echt nett wenn mir einer helfen könnte..... Das Problem muss wie gesagt irgendwie beim Listener liegen, da das 1. Skelet gespawnt wird, aber wenn man es tötet passiert nichts.