Hey Leute,
heute möchte ich vorführen, wie man per Bukkit bzw Worldguard herausfindet, ob ein Spieler in einer Region ist. Das kann nützlich sein, zB. für Minigames o.ä
Was braucht ihr:
Ich will heute eine Methode basteln, die herausfindet, ob ein Spieler in einer Region ist, oder nicht.
Der Player p ist der betreffende Spieler und der String region ist der Name der Region, in der der Spieler sein könnte.
Als erstes brauchen wir Worldguard:
Mithilfe von Worldguard können wir auf verschiedene Objekte und Methoden, wie die Regions, die es gibt, zugreifen.
Danach brauchen wir alle Regions des betreffenden Spielers:
Das ApplicableRegionSet ars enthält nun alle Regionen, die "anwendbar" sind, welche gefunden wurden.
Eine Methode wäre, es die Regionen mit einem Iterator durchzugehen:
Eine Protectedregion ist, wie der Name schon sagt, eine geschütze Region, die gelegt wurde.
Und überprüfen, ob der name stimmt:
Solange noch etwas in der Datenliste enthalten ist, nimmt die while-Schleife sich das nächste Objekt und prüft, ob die ID der Region, die gerade geprüft wird, unserer Wunschregion, bzw. deren Namen entspricht.
Insgesamt würde das dann so aussehen:
Hier nochmal eine kürzere Variante, die mir erst hinterher eingefallen ist:
Viel Spaß damit!
heute möchte ich vorführen, wie man per Bukkit bzw Worldguard herausfindet, ob ein Spieler in einer Region ist. Das kann nützlich sein, zB. für Minigames o.ä
Was braucht ihr:
- Bukkit als Library
- WorldGuard in eurem Plugin eingebunden
- Eine IDE eurer Wahl
Ich will heute eine Methode basteln, die herausfindet, ob ein Spieler in einer Region ist, oder nicht.
Code:
public boolean isInRegion(Player p, String region) {
return false;
}
Der Player p ist der betreffende Spieler und der String region ist der Name der Region, in der der Spieler sein könnte.
Als erstes brauchen wir Worldguard:
Code:
public boolean isInRegion(Player p, String region) {
WorldGuardPlugin wgp = WorldGuardPlugin.inst();
return false;
}
Danach brauchen wir alle Regions des betreffenden Spielers:
Code:
public boolean isInRegion(Player p, String region) {
WorldGuardPlugin wgp = WorldGuardPlugin.inst();
ApplicableRegionSet ars = wgp.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
return false;
}
Eine Methode wäre, es die Regionen mit einem Iterator durchzugehen:
Code:
Iterator<ProtectedRegion> r = ars.iterator();
Und überprüfen, ob der name stimmt:
Code:
while (r.hasNext()) {
ProtectedRegion protR = r.next();
if (protR.getId().equals(region)) {
//return true;
}
}
Insgesamt würde das dann so aussehen:
Code:
public boolean isInRegion(Player p, String region) {
WorldGuardPlugin wgp = WorldGuardPlugin.inst();
ApplicableRegionSet ars = wgp.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
Iterator<ProtectedRegion> r = ars.iterator();
while (r.hasNext()) {
ProtectedRegion protR = r.next();
if (protR.getId().equals(region)) {
return true;
}
}
return false;
}
Hier nochmal eine kürzere Variante, die mir erst hinterher eingefallen ist:
Code:
public boolean isInRegion(Player p, String region) {
WorldGuardPlugin wgp = WorldGuardPlugin.inst();
ApplicableRegionSet ars = wgp.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
for(ProtectedRegion prg : ars){
if(prg.getId().equals(region))
return true;
}
return false;
}
Viel Spaß damit!
Zuletzt bearbeitet: