WorldGuard und dessen Flags

Dieses Thema im Forum "Programmierung" wurde erstellt von Pappi, 16. April 2014.

  1. Pappi
    Offline

    Pappi Gesperrt

    Registriert seit:
    28. Oktober 2012
    Beiträge:
    141
    Ort:
    H.a.S/NRW/Germany
    Minecraft:
    Pappi / PapaHarni
    Hallo zusammen,

    ich möchte gerne aus den WorldGuard Regionen die Teleport Flag auslesen um diese zu verwenden soweit wie vorhanden.

    Hab mir den Code nun wie folgt zusammen gestellt , allerdings scheint die Flag abfrage nicht zu Funktionieren da immer nur kommt das keine GS vorhanden sind.

    Code (Text):
    1.  
    2. HashMap<String, Location> tmp = new HashMap<>();
    3. for(World w: Bukkit.getWorlds()) {
    4.   RegionManager rm = wg.getGlobalRegionManager().get(w);
    5.   for (Map.Entry<String, ProtectedRegion> e : rm.getRegions().entrySet()) {
    6.     //Prüfe ob Region mit dem angegebenen String startet.
    7.     if(!e.getKey().startsWith(args[0]))
    8.       continue;
    9.                    
    10.     ProtectedRegion pr = e.getValue();
    11.     //Prüfe ob Region schon Member oder Owner hat
    12.     if(pr.hasMembersOrOwners())
    13.       continue;
    14.  
    15.     //Hole Object aus Flag DefaultFlag.TELE_LOC
    16.     Object o = rm.getApplicableRegions(pr).getFlag(DefaultFlag.TELE_LOC);
    17.     if(o == null)
    18.       continue;
    19.    
    20.     //Prüfe ob Object o keine Location              
    21.     if(!(o instanceof Location))
    22.       continue;
    23.  
    24.     //Cast Object zu Location
    25.     Location loc = (Location) o;
    26.     tmp.put(e.getKey(), loc);
    27. }
    28.  
    29. //Arbeite weiter mit tmp....
    30.  
    Weiss jemand wie ich die Flags abrufe so das diese auch anerkannt werden?
    Leider bleibt tmp leer.

    EDIT:
    Ok bei dem Objekt handelt es sich um die WorldEdit Location.

    Somit schaut es so aus :
    Code (Text):
    1. HashMap<String, Location> tmp = new HashMap<>();
    2. for(World w: Bukkit.getWorlds()) {
    3.   RegionManager rm = wg.getGlobalRegionManager().get(w);
    4.   for (Map.Entry<String, ProtectedRegion> e : rm.getRegions().entrySet()) {
    5.     //Prüfe ob Region mit dem angegebenen String startet.
    6.     if(!e.getKey().startsWith(args[0]))
    7.       continue;
    8.  
    9.     ProtectedRegion pr = e.getValue();
    10.     //Prüfe ob Region schon Member oder Owner hat
    11.     if(pr.hasMembersOrOwners())
    12.       continue;
    13.  
    14.     //Hole Object aus Flag DefaultFlag.TELE_LOC
    15.     Object o = rm.getApplicableRegions(pr).getFlag(DefaultFlag.TELE_LOC);
    16.     if(o == null)
    17.       continue;
    18.  
    19.     //Prüfe ob Object o keine Location
    20.     if(!(o instanceof com.sk89q.worldedit.Location))
    21.       continue;
    22.  
    23.     com.sk89q.worldedit.Location loc = (com.sk89q.worldedit.Location) o;
    24.     Location l = new Location(Bukkit.getWorld(loc.getWorld().getName()), loc.getPosition().getX(), loc.getPosition().getY(), loc.getPosition().getZ(), loc.getYaw(), loc.getPitch());
    25.     tmp.put(e.getKey(), l);
    26.   }
    27. }
     
    #1
  2. games6471
    Online

    games6471

    Zunächst einmal der Hinweis, dass du nicht wirklich den Typ der Rückgabe bei getFlag() überprüfen musst. Du wirst sowieso ein Location-Objekt bekommen (oder null), da Generics verwendet wurden.

    Könntest du bitte angeben, wie du den Command eingeben hast, da ich gerade deinen Code getestet habe und er einwandfrei funktioniert hat.
     
    #2
  3. Pappi
    Offline

    Pappi Gesperrt

    Registriert seit:
    28. Oktober 2012
    Beiträge:
    141
    Ort:
    H.a.S/NRW/Germany
    Minecraft:
    Pappi / PapaHarni
    Ja danke das Edit sollte nichts anderes heissen als das man es nun weiss und der 2te Code sollte nur die Lösung sein. ;-)
    Da man nun einmal bei Fragen zu einem Problem auch die Lösung des Problemes reinstellt sobald man eine hat. ;-)



    EDIT :
    #close
     
    #3