Baneos

The BanService is a service built into SpongeAPI that adds the functionality for you to ban or pardon users in your plugin. The BanService provides several methods to do things such as banning users, pardoning users, or even getting a Ban and the information on the Ban.

Truco

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

Obtener el BanService

You will need to get the BanService to actually add bans to the server. Fortunately, this can be done similarly to other services in SpongeAPI:

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);