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