Daftar tab
Tab lists are used in Minecraft to display the list of players currently on a server. SpongeAPI allows for manipulation of the tab list on a per-player basis.
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);
Now let's break this down. We set the list associated with the TabListEntry to our specified TabList
using the TabListEntry.Builder#list(TabList) method. We then set the game mode of our entry to
GameModes#SURVIVAL. The game mode of our entry is used to determine various things. On the client, it is
used to determine if a player is in creative or perhaps a spectator. If the game mode is spectator, then their name
will also appear gray and italicized. We then need to specify the GameProfile
that the entry is associated with.
The GameProfile
may be constructed using the GameProfile#of()
method, or it can be obtained from a real
profile, such as a player. For more information, see the Manajer profil game article. To apply the entry to the
tab list, we simply need to call the TabList#addEntry(TabListEntry) method.
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);
As an alternative to getting entries, we can also remove a specified entry. We must simply call the
TabList#removeEntry(UUID) method, specifying the UUID
of the entry that we wish to remove. As with
getEntry(UUID)
, this will return Optional.empty()
if the specified UUID cannot be found.
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 .