/ProtocolTab

Small, easy and fast in use api for managing tab list on your Minecraft server.

Primary LanguageJavaApache License 2.0Apache-2.0

ProtocolTab Build Status

ProtocolTab is a small, easy and fast in use api for managing tab list on your Minecraft server. Each player can see different tab list, and everything is limited to your imagination.

Example

Java

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import pl.kacperduras.protocoltab.ProtocolTabAPI;
import pl.kacperduras.protocoltab.manager.ProtocolTab;

import java.text.SimpleDateFormat;
import java.util.Date;

public final class ProtocolTabExample extends JavaPlugin {

    private final ThreadLocal<SimpleDateFormat> dateFormat = ThreadLocal.withInitial(
            () -> new SimpleDateFormat("HH:mm:ss"));

    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(new Listener() {

            @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
            public void onJoin(PlayerJoinEvent event) {
                Player player = event.getPlayer();

                for (int i = 0; i < 80; i++) {
                    ProtocolTabAPI.getTablist(player).setSlot(i, ProtocolTab.BLANK_TEXT);
                }

                ProtocolTabAPI.getTablist(player).setHeader("&cmd_5 is love!");
                ProtocolTabAPI.getTablist(player).setHeader("&6md_5 is life!");

                ProtocolTabAPI.getTablist(player).setSlot(0, "First slot.");
                ProtocolTabAPI.getTablist(player).setSlot(1, "&eSecond slot.");

                ProtocolTabAPI.getTablist(player).update();
                runTask(player);
            }

        }, this);
    }

    private void runTask(Player player) {
        this.getServer().getScheduler().runTaskTimerAsynchronously(this, () -> {
          if (player == null || player.isOnline()) {
            // do something
            return;
          }
          
          ProtocolTabAPI.getTablist(player).setSlot(3, "&a" + dateFormat.get().format(
              new Date(System.currentTimeMillis())));
          ProtocolTabAPI.getTablist(player).update();
        }, 20L, 20L);
    }

}

Skript

set %player%'s header to %string%
set %player%'s footer to %string%
set %player%'s slot number %integer% to %string%
update %player%'s tablist

The usage is similar to the Java API.

Configuration

# ProtocolTab basic configuration.

# Default ping on board.
default-ping: '0'

Requirements

Download

Stable releases: here
Development releases: here