• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

WorldGuard und dessen Flags

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
41
Diamanten
0
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:
HashMap<String, Location> tmp = new HashMap<>();
for(World w: Bukkit.getWorlds()) {
  RegionManager rm = wg.getGlobalRegionManager().get(w);
  for (Map.Entry<String, ProtectedRegion> e : rm.getRegions().entrySet()) {
    //Prüfe ob Region mit dem angegebenen String startet.
    if(!e.getKey().startsWith(args[0]))
      continue;
                    
    ProtectedRegion pr = e.getValue();
    //Prüfe ob Region schon Member oder Owner hat
    if(pr.hasMembersOrOwners())
      continue;

    //Hole Object aus Flag DefaultFlag.TELE_LOC
    Object o = rm.getApplicableRegions(pr).getFlag(DefaultFlag.TELE_LOC);
    if(o == null)
      continue;
    
    //Prüfe ob Object o keine Location               
    if(!(o instanceof Location))
      continue;

    //Cast Object zu Location
    Location loc = (Location) o;
    tmp.put(e.getKey(), loc);
}

//Arbeite weiter mit tmp....

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:
HashMap<String, Location> tmp = new HashMap<>();
for(World w: Bukkit.getWorlds()) {
  RegionManager rm = wg.getGlobalRegionManager().get(w);
  for (Map.Entry<String, ProtectedRegion> e : rm.getRegions().entrySet()) {
    //Prüfe ob Region mit dem angegebenen String startet.
    if(!e.getKey().startsWith(args[0]))
      continue;

    ProtectedRegion pr = e.getValue();
    //Prüfe ob Region schon Member oder Owner hat
    if(pr.hasMembersOrOwners())
      continue;

    //Hole Object aus Flag DefaultFlag.TELE_LOC
    Object o = rm.getApplicableRegions(pr).getFlag(DefaultFlag.TELE_LOC);
    if(o == null)
      continue;

    //Prüfe ob Object o keine Location
    if(!(o instanceof com.sk89q.worldedit.Location))
      continue;

    com.sk89q.worldedit.Location loc = (com.sk89q.worldedit.Location) o;
    Location l = new Location(Bukkit.getWorld(loc.getWorld().getName()), loc.getPosition().getX(), loc.getPosition().getY(), loc.getPosition().getZ(), loc.getYaw(), loc.getPitch());
    tmp.put(e.getKey(), l);
  }
}
 
Zuletzt bearbeitet:
G

games6471

Guest
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.
 

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
41
Diamanten
0
Minecraft
Pappi / PapaHarni
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.

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
 
Zuletzt bearbeitet:
Oben