ServerPlugin NPCs bewegen sich falsch

Dieses Thema im Forum "Programmierung" wurde erstellt von Basti07711, 21. Oktober 2015.

  1. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Hallo Leute,
    ich arbeite schon etwas länger an einem Plugin, welches neue Traits zu Citizens hinzufügt. Momentan hänge ich jedoch an einer Stelle.
    Ich habe einen NPC mit meiner Trait, soweit geht das. Nun soll dieser NPC die Blöcke um sich herum scannen und nach Feldern suchen und sich dorthin bewegen. Das klappt auch, aber das Problem liegt darin, dass der NPC nicht in dem von mir vorgeschriebenen Radius sucht (3 Blöcke), sondern auch Felder nimmt, die gute 50 Blöcke weg sind. Wo liegt also mein Fehler in diesem Code:

    Code (Javascript):
    1.                     Location pos1 = new Location(loc.getWorld(), loc.getX()+3, loc.getY()+3, loc.getZ()-3);
    2.                     Location pos2 = new Location(loc.getWorld(), loc.getX()-3, loc.getY()-3, loc.getZ()+3);
    3.                    
    4.                    
    5.                     for(int x = pos2.getBlockX(); x < pos1.getBlockX(); x++){
    6.                         for(int y = pos2.getBlockY(); y < pos1.getBlockY(); y++){
    7.                             for(int z = pos1.getBlockZ(); z < pos2.getBlockZ(); z++){
    8.                                
    9.                                 Block b = pos1.getWorld().getBlockAt(x, y, z);
    10.            
    11.                                 if(b.getType() == Material.SOIL){
    12.                                    
    13.                                     Location eloc = new Location(pos1.getWorld(), x, y+1, z);
    14.                                     plants.add(eloc);
    15.                                 }
    16.                                
    17.                             }
    18.                         }
    19.                     }
    20.                    
    21.                     Navigator n = npc.getNavigator();
    22.                    
    23.                     int c = r.nextInt(plants.size());
    24.                    
    25.                     Location tloc = plants.get(c);
    26.                    
    27.                     n.setTarget(tloc);
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Ich sehe am gegebenen code kein Fehler.
    Hast du daran gedacht plants nach dem ausführen zu leeren?
     
    #2
  3. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Ja eig. schon. Was meine Überlegung noch war, ist dass jeder NPC beim geben der Trait den selben Namen erhält und das selbe Equipment, vielleicht kommt citizens damit nicht zurecht. Kennt sowas jemand?
     
    #3