Seite 1 von 1

TowerDefence Plugin 1.9.4- komme nicht weiter

BeitragVerfasst: So 7. Jan 2018, 14:46
von CertamenHD
Ja wie es schon im Betreff steht habe ich gerade ein kleines Problem.. bei mir ist schon alles soweit fertig aber ich komme mit den Monstern nicht so richtig zurecht.

Ich spawne als Beispiel ein Zombie (das hab ich gemacht mit CitizensAPI, da ich anscheinend zu blöd dafür sonst bin) und will ihn halt zu verschiedennen Locations laufen lassen. z.b. von Location 1 zu 2 und dann zu 3 usw
Habe es geschafft das er auf jedenfall zu einer Location läuft aber dann weiß ich einfach nicht weiter.

Hier ist meine Methode mit dem ich die Monster laufen lasse:
Code: Alles auswählen
  1. package td.methoden;
  2. import org.bukkit.Location;
  3. import net.minecraft.server.v1_9_R2.EntityInsentient;
  4. import net.minecraft.server.v1_9_R2.NavigationAbstract;
  5. import net.minecraft.server.v1_9_R2.PathEntity;
  6. public class EnemyMovement {
  7.    public static void walk (EntityInsentient entity, Location loc, double speed) {
  8.       NavigationAbstract navigation = entity.getNavigation();   
  9.       PathEntity pathEntity = navigation.a(loc.getX(), loc.getY(), loc.getZ());
  10.       navigation.a(pathEntity, speed);
  11.    }
  12. }


Und hier ist die SpawnMob Methode die ich begonnen hatte:
Code: Alles auswählen
  1. package td.methoden;
  2. import java.util.ArrayList;
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.Location;
  5. import org.bukkit.craftbukkit.v1_9_R2.entity.CraftEntity;
  6. import org.bukkit.entity.EntityType;
  7. import org.bukkit.entity.LivingEntity;
  8. import net.citizensnpcs.api.CitizensAPI;
  9. import net.citizensnpcs.api.npc.NPC;
  10. import net.citizensnpcs.api.npc.NPCRegistry;
  11. import net.minecraft.server.v1_9_R2.EntityInsentient;
  12. import td.main.main;
  13. public class EnemyManager {
  14.    public static ArrayList<NPC> enemies1 = new ArrayList<NPC>();
  15.     
  16.    public static void spawnMob(){
  17.       
  18.       final Location loc = new Location(Bukkit.getServer().getWorld("world"), -1238.500D, 4D, 46.500D);
  19.                
  20.       final Location loc1 = new Location(Bukkit.getServer().getWorld("world"), 1238D, 4D, 70.5D);      
  21.             
  22.             NPCRegistry registry = CitizensAPI.getNPCRegistry();
  23.             NPC npc = registry.createNPC(EntityType.ZOMBIE, "testNPC");
  24.             
  25.             npc.setProtected(false);
  26.             
  27.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(main.getPlugin(), new Runnable(){
  28.                @Override
  29.                public void run() {
  30.                   
  31.                   if(npc.getEntity().isValid()){
  32.                      ((LivingEntity) npc.getEntity()).setMaxHealth(40D);
  33.                      ((LivingEntity)npc.getEntity()).setHealth(40D);
  34.                   }
  35.                }
  36.                
  37.             } ,3L);
  38.             
  39.             npc.spawn(loc);
  40.             
  41.             EntityInsentient ei = ((EntityInsentient)((CraftEntity) npc.getEntity()).getHandle());
  42.             EnemyMovement.walk(ei, loc1, 1.0D);
  43.             
  44.             enemies1.add(npc);
  45.             
  46.    }
  47. }

Meine Idee war es Anfangs die Monster in eine Arraylist<NPC> zu packen aber wenn ich dann versuche alle zu erfassen geht es nicht.
Kann ja leider auch nicht immer bei jedem MobSpawn einen Scheduler starten der Abfragt ob das Mob bei einer gewissen Location ist, da die Spieler biszu 10 Monster gleichzeitig losschicken können und irgentwann das einwenig zuviel Leistung ziehen würde.

Würde mich freuen wenn jemand mir helfen könnte, sei es mit Ideen oder Schnipsel
Mfg Certamen