• 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!

Problem mit WorldGuard API

Evil995

Minecrafter
Registriert
19 Februar 2018
Beiträge
2
Alter
30
Diamanten
250
Guten Tag zusammen,



Ich habe ein kleines Problem mit der WorldGuard API. Im Prinzip möchte ich das ein Spieler die Möglichkeit hat ein Grundstück zu Verkaufen. So an sich funktioniert auch alles Prima. Das Problem vor dem ich jetzt stehe ist das natürlich ein normaler Spieler nur das Grundstück verkaufen kann welches er auch besitzt.

Ich habe also versucht mit rg(Region).getOwners().getPlayers() den Spieler zu bekommen. Welchen ich dann gerne in einer if Abfrage abfragen möchte.



Zur besseren Verständlichkeit ist hier der Code vlt hab ihr da eine Idee ich leider nicht
default_images_smilies_squint.png




Pastebin:

https://pastebin.com/u32DAbHA



Da es keine Fehler gibt kann ich zum Glück keine Posten.



Ps. Es wird immer die zweite Nachricht ausgegeben sprich die Datei wird nicht erstellt. Wen ich die if abfrage weglasse wird die Datei erstellt. Was natürlich schlecht ist weil sogesehen ein Spieler auch den Spawn verkaufen könnte
default_images_smilies_squint.png




Vielen Dank schonmal.
 

Evil995

Minecrafter
Registriert
19 Februar 2018
Beiträge
2
Alter
30
Diamanten
250
So ich hab mir jetzt mal die Owner ausgeben lassen von der Beispiel Region also gs_0
Wie man sieht wird mir unter /rg i gs_0 Der Owner ausgegeben
da drunter ist meine ausgabe jetz wundere ich mich stark das dort kein owner ausgegeben wird dann verstehe ich auch das man das gs nicht verkaufen kann.
 

Anhänge

  • 2018-02-19_15.38.46.png
    2018-02-19_15.38.46.png
    659,3 KB · Aufrufe: 268

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Code:
            Plugin worldGuard = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
            WorldGuardPlugin wg = (WorldGuardPlugin) worldGuard;
            String worldname = p.getWorld().getName();
            World world = Bukkit.getServer().getWorld(worldname);
            ProtectedRegion rg = wg.getRegionManager(world).getRegion(args[2]);
            Set<String> domain = rg.getOwners().getPlayers();
         
            LocalPlayer local = wg.wrapPlayer(p);
         
            local.getName().equalsIgnoreCase(p.getName());
Ich würde das vielleicht etwas schöner schreiben:
Code:
WorldGuardPlugin wg = WGBukkit.getPlugin();
World world = p.getWorld();
RegionManager manager = wg.getRegionManager(world);
if(manager == null) { ... } // solte die Welt nicht von WorldGuard unterstützt sein.
ProtectedRegion rg = manager.getRegion(args[2]);
if(rg == null) { ... } // Region nicht gefunden
LocalPlayer local = wg.wrapPlayer(p);
DefaultDomain domain = rg.getOwners();
if(rg.isOwner(local)) { ... }

Hast du den Command registriert? Also wird die erste Zeile im CommandExecutor ausgeführt? (Debug-Meldung einbauen)
 

joestr

Redstoneengineer
Registriert
5 November 2016
Beiträge
44
Alter
26
Diamanten
328
Besteht das Problem noch?

Wenn ja, hier mein Lösungsvorschlag.

Den Teil
Code:
if(rg.getOwners().getPlayers().toString().contains(p.getName())) { ... } else { ... }

würde ich abändern zu:
Code:
if(rg.getOwners().contains(p.getName())) { ... } else { ... }

Wenn man der Dokumentation (ein bisschen veraltet) nachsieht, gibt es für die Objekte der Klasse DefaultDomain eine Methode contains die auf den Spielernamen prüft.

http://docs.sk89q.com/worldguard/apidocs/com/sk89q/worldguard/domains/DefaultDomain.html
 
Oben