Larang

BanService adalah layanan yang dibangun ke dalam SpongeAPI yang menambahkan fungsionalitas untuk melarang atau mengampuni pengguna dalam plugin anda. BanService menyediakan beberapa metode untuk melakukan hal seperti pelarangan pengguna, pengampunan pengguna, atau bahkan mendapatkan Ban dan informasi pada Ban.

Tip

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

Mendapatkan BanService

Anda akan perlu untuk mendapatkan BanService untuk benar-benar menambahkan larangan untuk server. Untungnya, hal ini dapat dilakukan demikian pula untuk layanan lain di Spons API:

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