Banne
Der BanService ist ein Dienst, der bereits in der SpongeAPI integriert ist. Dieser fügt die Funktionalität des Bannes und Begnadigens von Benutzer hinzu. Der BanService
bietet einige Methoden, um Benutzer zu bannen, zu begnadigen oder den Ban an sich und mit dem verbundene Informationen zu erhalten.
Tipp
Zum grundsätzlichen Verstehen von Services lies bitte zuerst Dienste.
Den BanService erhalten
Du musst dir erst den BanService
holen, um jemanden vom Server zu bannen. Glücklicherweise kann dies in der SpongeAPI genauso gemacht werden wie für andere Services auch:
import org.spongepowered.api.Sponge;
import org.spongepowered.api.service.ban.BanService;
BanService service = Sponge.serviceManager().provide(BanService.class).get();
Nun mit dem BanService
können wir zusätzliche Aktionen ausführen. Zum Beispiel, wenn wir prüfen wollen, ob ein bestimmter User bereits gebannt ist, können wir die BanService#isBanned(GameProfile) Methode verwenden. Möglicherweise wollen wir herausfinden, warum ein User
gebannt wurde, hierfür können wir die BanService#getBanFor(GameProfile) Methode verwenden. Ein Beispiel hierfür wird hier drunter gezeigt:
import java.util.Optional;
import net.kyori.adventure.text.Component;
import org.spongepowered.api.entity.living.player.User;
import org.spongepowered.api.util.ban.Ban;
if (service.isBanned(user.getProfile())) {
CompletableFuture<Optional<Ban.Profile>> optionalBanFuture = service.find(player.getProfile());
optionalBanFuture.thenAccept(optionalBan -> {
if (optionalBan.isPresent()) {
Ban.Profile profileBan = optionalBan.get();
Optional<Component> optionalReason = profileBan.getReason();
if (optionalReason.isPresent()) {
Component banReason = optionalReason.get();
}
}
});
}
Einen Bann erstellen
So nun können wir den BanService
und Informationen über Ban
ne abrufen, aber was ist, wenn wir unseren eigenen Ban
n aussprechen wollen? Wir können einen Ban.Builder verwenden, um unseren eigenen Ban
n zu erstellen. Um einen Ban.Builder
zu bekommen, müssen wir nur die Ban#builder() Methode aufrufen. Mit Hilfe des Builders, können wir angeben, welche Art von Bann wir aussprechen wollen, sowie den Grund dafür, als auch den User
, den wir bannen möchten. Das nachfolgende Beispiel zeigt all dies:
import org.spongepowered.api.util.ban.BanTypes;
Ban ban = Ban.builder().type(BanTypes.PROFILE).profile(user.getProfile())
.reason(Component.text("The Sponge Council has Spoken!")).build();
Alternativ kann du auch eine IP eines Spielers bannen, der gerade online ist:
Ban ban = Ban.builder().type(BanTypes.IP)
.address(player.getConnection().getAddress().getAddress())
.reason(Component.text("The Sponge Council has Spoken!")).build();
Note that if you wish to create a simple, indefinite ban on a User
, you can use the Ban#of(GameProfile)
method or the Ban#of(GameProfile, Component) method to quickly construct a ban.
Einen Bann hinzufügen
Nun, da wir unseren Ban erstellt haben, müssen wir ihn registrieren, damit Sponge ihn beachten kann. Mit dem BanService
von vorhin, müssen wir die BanService#addBan(Ban) aufrufen, damit dies geschieht. Bitte beachte, dass das Hinzufügen eines Bannes bereits existierende Banne entfernt.
Verzeihen
Nun, lass uns annehmen, dass wir den Bann eines Spielers aufheben wollen. Hierfür können wir die BanService#pardon(GameProfile) Methode nutzen. Diese Methode gibt einen Boolean zurück, der angibt, ob der Spieler zuvor gebannt war oder nicht.
Alles Zusammensetzen
Wir können einen Ban
n erstellen, indem wir einen Ban.Builder
verwenden, den wir von der Ban#builder()
Methode erhalten haben. Wir können die Art des Bannes, den zu bannenden User
und den Grund für den Bann angeben. Anschließend nehmen wir den BanService
und verwenden ihn, um unseren Bann hinzuzufügen. Hier ist der vollständige Code, um dies zu erreichen:
BanService service = Sponge.getServiceManager().provide(BanService.class).get();
Ban ban = Ban.builder().type(BanTypes.PROFILE).profile(user.getProfile())
.reason(Component.text("The Sponge Council has Spoken!")).build();
service.addBan(ban);