Larang

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.

Tip

Untuk pemahaman dasar mengenai layanan, pastikan anda telah membaca Layanan.

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

Sekarang dengan BanService, kita dapat melaksanakan operasi-operasi tambahan. Contoh, jika kita ingin memeriksa User yang disediakan telah dilarang, kita dapat menggunakan metode BanService#isBanned(GameProfile). Atau mungkin jika kita ingin mendapatkan informasi larangan dari User, kita dapat menggunakan metode BanService#getBanFor(GameProfile). Contoh ditunjukkan di bawah ini:

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

Membuat larangan

Jadi sekarang kita dapat memperoleh BanService dan informasi pada Ban, tetapi bagaimana jika kita ingin membuat larangan milik kita sendiri? Kita dapat menggunakan Ban.Builder untuk membuat Ban milik kita sendiri. Untuk mendapatkan Ban.Builder, hanya dengan memanggil metode Ban#builder(). Dengan menggunakan pembangun kita, kita dapat menetapkan hal-hal seperti jenis larangan, alasan larangan, atau User yang ingin kita larang. Contoh ini semua ditunjukkan di bawah ini:

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

Jika tidak, anda dapat menentukan ip yang dilarang pada pengguna:

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

Catatan bahwa jika ingin membuat yang sederhana, larangan tak terbatas pada User, anda dapat menggunakan metode Ban#of(GameProfile) atau metode Ban#of(GameProfile, Text) untuk mengkonstruksi larangan dengan cepat.

Penambahan larangan

Sekarang kita telah membuat larangan kita, kita dapat mendaftarkannya untuk digunakan dalam Sponge. Dengan menggunakan BanService kita sebelumnya, kita dapat menggunakan metode BanService#addBan(Ban) untuk menyelesaikannya. Catatan bahwa menambahkan larangan akan menghapus larangan yang ada sebelumnya.

Pengampunan

Sekarang katakanlah kita ingin menghapus larangan dari satu pengguna. Kita dapat menggunakan metode BanService#pardon(GameProfile). Metode ini mengembalikan nilai boolean, yang menetapkan jika pengguna telah memiliki larangan di tempat sebelumnya.

Meletakkan Semuanya Bersamaan

Kita dapat membuat sebuah Larangan menggunakan Ban.Pembangun yang diperoleh dengan menggunakan Ban#builder() metode. Kita dapat menentukan hal-hal seperti jenis, User yang akan dilarang, atau alasan untuk melarang. Kemudian kita cukup ambil kami BanService dan menggunakannya untuk menambahkan Larangan. Berikut ini adalah kode lengkap untuk melakukan hal ini:

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