Baneos

El BanService es un servicio integrado en la SpongeAPI que agrega la funcionalidad para que pueda banear o perdonar usuarios en su complemento. El BanService proporciona varios métodos para hacer cosas como prohibir a los usuarios, perdonar a los usuarios o incluso obtener un :javadoc:`Baneo` y la información sobre el Baneo.

Truco

Para una comprensión básica de los servicios, asegúrese de leer primero Servicios.

Obtener el BanService

Necesitará obtener el BanService para realmente agregar baneos al servidor. Afortunadamente, esto puede hacerse de manera similar a otros servicios en la Sponge API:

import org.spongepowered.api.Sponge;
import org.spongepowered.api.service.ban.BanService;

BanService service = Sponge.getServiceManager().provide(BanService.class).get();

Ahora con el BanService, podemos realizar operaciones adicionales. Por ejemplo, si queremos verificar si un :javadoc:`Usuario` suministrado ya está baneado, podemos utilizar el método BanService#isBanned(GameProfile). O tal vez si queremos obtener información sobre un baneo de un Usuario, podemos utilizar el método BanService#getBanFor(GameProfile). Un ejemplo de esto es mostrado a continuación:

import java.util.Optional;

import org.spongepowered.api.entity.living.player.User;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.util.ban.Ban;

if (service.isBanned(user.getProfile())) {
    Optional<Ban.Profile> optionalBan = service.getBanFor(player.getProfile());
    if (optionalBan.isPresent()) {
        Ban.Profile profileBan = optionalBan.get();
        Optional<Text> optionalReason = profileBan.getReason();
        if (optionalReason.isPresent()) {
            Text banReason = optionalReason.get();
        }
    }
}

Creación de un Baneo

Así que ahora podemos obtener el BanService y la información sobre un Baneo, pero ¿qué si queremos crear nuestros propios baneos? Podemos utilizar un Ban.Builder para crear nuestro propio Baneo. Para obtener un Ban.Builder, simplemente llame al método Ban#builder(). Utilizando nuestro constructor, podemos especificar cosas como el tipo de baneo, la razón para el baneo o el Usuario que deseamos banear. Un ejemplo de todas estas cosas es mostrado a continuación:

import org.spongepowered.api.util.ban.BanTypes;

Ban ban = Ban.builder().type(BanTypes.PROFILE).profile(user.getProfile())
    .reason(Text.of("The Sponge Council has Spoken!")).build();

Alternativamente, puede especificar un baneo de IP a un jugador en línea:

Ban ban = Ban.builder().type(BanTypes.IP)
    .address(player.getConnection().getAddress().getAddress())
    .reason(Text.of("The Sponge Council has Spoken!")).build();

Tenga en cuenta que si desea crear un simple e indefinido baneo sobre un Usuario, puede utilizar el método Ban#of(GameProfile) o el método Ban#of(GameProfile, Text) para construir rápidamente un baneo.

Agregar un Baneo

Ahora que tenemos creado nuestro baneo, podemos registrarlo ahora para ser utilizado en Sponge. Utilizando desde antes nuestro BanService, podemos utilizar el método BanService#addBan(Ban) para lograrlo. Tenga en cuenta que al agregar un baneo se eliminará cualquier baneo previamente existente.

Perdonar

Ahora vamos a decir que queríamos eliminar un baneo de un usuario. Podemos utilizar el método BanService#pardon(GameProfile). Este método devuelve un boolean, que especifica si el usuario tenía un baneo previamente en el lugar.

Colocándolo Todo Junto

Podemos crear un Baneo utilizando un Ban.Builder que es obtenido usando el método Ban#builder(). Podemos especificar cosas como el tipo, el Usuario a ser baneado, o la razón por la que se banea. Entonces, simplemente tome nuestro BanService y utilícelo para agregar nuestro Baneo. Aquí está el código completo para hacer esto:

BanService service = Sponge.getServiceManager().provide(BanService.class).get();
Ban ban = Ban.builder().type(BanTypes.PROFILE).profile(user.getProfile())
    .reason(Text.of("The Sponge Council has Spoken!")).build();
service.addBan(ban);