Sekme listeleri
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.
Bir oyuncunun :javadoc:`TabList`ini almak için sadece :javadoc:`Player#getTabList ()`yöntemini çağırmanız yeterlidir:
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.entity.living.player.tab.TabList;
TabList tablist = player.getTabList();
Artık TabList
i elde ettik, onun birkaç bileşenini değiştirebiliriz. Örneğin, ``TabList`’in başlığını veya altbilgisini ayarlamak için, yalnızca uygun yöntemlerini çağırmamız yeterlidir:
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"));
Tek seferde her ikisini de değiştirmek istersek TabList#setHeaderAndFooter(Text, Text) yöntemini çağırabiliriz:
tablist.setHeaderAndFooter(Text.of("header"), Text.of("footer"));
Not
Tab başlığı üstbilgisini * ve * altbilgiyi değiştirmek istiyorsanız, ayrı olarak :javadoc: TabList # setHeader (Text) ve :javadoc: TabList’i çağırmak için setHeaderAndFooter () `yöntemini kullanmanız önerilir. #setFooter (Text) `yöntemlerini kullanır, çünkü yalnızca üstbilgi ve altbilgi için iki ayrı paket yerine bir paket gönderir.
Sekme Listesi Girdileri
Şimdi, TabList
’in üstbilgi ve altbilgisini ayarladığımıza göre, kendi girişlerimizi de listeye ekleyebiliriz. Buna bir örnek aşağıda gösterilmiştir:
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 Oyun Profili Yöneticisi article. To apply the entry to the
tab list, we simply need to call the TabList#addEntry(TabListEntry) method.
Giriş örneğini veya gecikme süresini belirterek temel örneğimizi inceleyebiliriz:
TabListEntry entry = TabListEntry.builder()
.list(tablist)
.displayName(Text.of("Spongie"))
.latency(0)
.profile(gameProfile)
.build();
tablist.addEntry(entry);
Burada girdimizin TabListEntry.Builder#displayName(Text) yöntemini kullanan Spongie nin altında gözükeceği bir görüntüleme adı ayarlarız. Sonra ``TabListEntry``miz için gecikme süresini beş çizgiye ayarlarız. Girdiniz için diğer tür çizgileri nasıl belirleyeceğinize dair daha fazla bilgi için TabListEntry#setLatency(int) tekniğine bakın.
Geçerli Girdileri Değiştirme/Düzeltme
TabList
kullanarak kendi düzenlememiz için an itibariyle ``TabList``te olan girdiler elde edebiliriz. Belirli bir girdiyi elde etmek için TabList#getEntry(UUID) yöntemini kullanın. Bu yöntem eğer belirtilmiş UUID bulunamazsa ``Optional.empty()``ye geri dönecektir. Aşağıda bir örnek gösterilmiştir:
import java.util.Optional;
Optional<TabListEntry> optional = tablist.getEntry(uuid);
if (optional.isPresent()) {
TabListEntry entry = optional.get();
}
Bununla birlikte, oyun modunu, gecikme süresini ve girişin görünen adını değiştirmek için TabListEntry
yöntemlerini kullanabiliriz:
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.
Değiştirilecek belirli bir girdiye sahip değilsek, `` TabList`` içindeki bütün `` TabListEntry``’i yineleyebiliriz. Tekrarlayabileceğimiz bir `` Collection<TabListEntry> `` elde etmek için TabList # getEntries () metodunu çağırmamız yeterlidir.