Daftar tab

Tab daftar yang digunakan dalam Minecraft untuk menampilkan daftar pemain yang saat ini pada server. Yang SpongeAPI memungkinkan untuk manipulasi tab daftar pada per-pemutar dasar.

Untuk mendapatkan pemain TabList, anda hanya perlu menghubungi :javadoc:`Pemain#getTabList()` metode:

import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.entity.living.player.tab.TabList;

TabList tablist = player.getTabList();

Sekarang bahwa kita telah memperoleh TabList, kita dapat memodifikasi beberapa komponen itu. Misalnya, untuk mengatur header atau footer TabList, kita hanya perlu memanggil metode yang sesuai:

import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.format.TextColors;

tablist.setHeader(Text.of(TextColors.GOLD, "The tab list header"));
tablist.setFooter(Text.of(TextColors.RED, "The tab list footer"));

Kita dapat menyebut TabList#setHeaderAndFooter(Teks, Teks) metode jika kita ingin mengubah keduanya sekaligus:

tablist.setHeaderAndFooter(Text.of("header"), Text.of("footer"));

Catatan

Jika anda ingin mengubah tab daftar header dan footer, dianjurkan untuk menggunakan setHeaderAndFooter()` metode di atas secara individual memanggil TabList#setHeader(Teks) dan TabList#setFooter(Teks) metode, karena hanya mengirimkan satu paket, bukan dua paket terpisah untuk header dan footer.

Tab Entri Daftar

Sekarang bahwa kita memiliki set header dan footer dari TabList, kita juga dapat menambahkan entri ke daftar. contoh dari hal ini adalah yang ditunjukkan di bawah ini:

import org.spongepowered.api.entity.living.player.gamemode.GameModes;
import org.spongepowered.api.entity.living.player.tab.TabListEntry;
import org.spongepowered.api.profile.GameProfile;

TabListEntry entry = TabListEntry.builder()
    .list(tablist)
    .gameMode(GameModes.SURVIVAL)
    .profile(gameProfile)
    .build();
tablist.addEntry(entry);

Sekarang mari kita istirahat ini. Kami menetapkan daftar yang berhubungan dengan TabListEntry untuk kami yang telah ditentukan TabList menggunakan TabListEntry.Builder#daftar(TabList) metode. Kami kemudian mengatur mode permainan kami masuk ke GameModes#HIDUP. Mode permainan kami yang masuk digunakan untuk menentukan berbagai hal. Pada klien, hal ini digunakan untuk menentukan apakah seorang pemain kreatif atau mungkin penonton. Jika permainan mode penonton, maka nama mereka juga akan muncul abu-abu dan dicetak miring. Kemudian kita perlu menentukan GameProfile yang berkaitan dengan entri. GameProfile dapat dibangun menggunakan GameProfile#() metode, atau dapat diperoleh dari profil yang nyata, seperti seorang pemain. Untuk informasi lebih lanjut, lihat permainan-profil-manager artikel. Untuk menerapkan masuk ke tab daftar, kita hanya perlu memanggil TabList#addEntry(TabListEntry) metode.

Kita dapat menyempurnakan dasar contoh kita dengan menentukan hal-hal seperti nama tampilan atau latency entri:

TabListEntry entry = TabListEntry.builder()
    .list(tablist)
    .displayName(Text.of("Spongie"))
    .latency(0)
    .profile(gameProfile)
    .build();
tablist.addEntry(entry);

Di sini, kita mengatur tampilan nama yang masuk kita akan muncul di bawah untuk Spongie menggunakan TabListEntry.Builder#displayName(Teks) metode. Kami kemudian mengatur latency untuk kami TabListEntry untuk lima bar. Lihat TabListEntry#setLatency(int) metode untuk informasi lebih lanjut tentang bagaimana untuk menentukan jenis lain dari bar untuk kita masuk.

Memodifikasi strategi saat ini

Menggunakan TabList, kita dapat memperoleh entri saat ini di TabList untuk kami modifikasi sendiri. Untuk mendapatkan entri tertentu, gunakan TabList#getEntry(UUID) metode. Metode ini akan kembali Optional.kosong() jika ditentukan UUID tidak dapat ditemukan. Contoh ditunjukkan di bawah ini:

import java.util.Optional;

Optional<TabListEntry> optional = tablist.getEntry(uuid);
if (optional.isPresent()) {
    TabListEntry entry = optional.get();
}

Dengan ini, kita dapat menggunakan metode TabListEntry untuk mengubah modus permainan, latency, dan nama tampilan entri:

entry.setDisplayName(Text.of("Pretender Spongie"));
entry.setLatency(1000);
entry.setGameMode(GameModes.SPECTATOR);

Alternatif lain untuk mendapatkan masukan, kita juga dapat menghapus entri tertentu. Kami hanya harus memanggil TabList#removeEntry(UUID) metode, menentukan UUID dari entri yang ingin kita hapus. Seperti dengan getEntry(UUID), ini akan kembali Optional.kosong() jika ditentukan UUID tidak dapat ditemukan.

Jika kita tidak memiliki entri khusus untuk dimodifikasi , maka kita dapat iterate melalui semua `` TabListEntry`` s dalam `` TabList``. Kita hanya perlu memanggil metode : javadoc: TabList # getEntries () untuk mendapatkan `` Collection <TabListEntry> `` yang bisa kita iterasikan .