TinyProtocolAPI
TabAPI
BetterServerListPingEvent
TabAPI, BarAPI, HoloAPI for MC1.7 ? without addons ? Open src ? Check my first fun with packets (PacketAPI-opensrc "TinyProtocolAPI-PROTOTYPE") - HERE !
TabAPI:
- void refresh(Class<? extends Plugin> plugin, Player player, Preference priority, SettingAPI<TabModify> modify);
- void refresh(Class<? extends Plugin> plugin, Player player, SettingAPI<TabModify> modify);
- void setDefaultPreference(Class<? extends Plugin> plugin, Preference priority);
- void remove(Class<? extends Plugin> plugin, Player player);
- boolean hasAPI(Player player);
TabModify:
- void setMessage(int x, int y, String message);
- void set(int x, int y, String display, String texture);
- void set(int x, int y, String display, int ping);
- void set(int x, int y, String display, String texture, int ping);
- void setSignal(int x, int y, int signal);
- void setSignal(int ping);
- void setTexture(int x, int y, String texture);
- void setTexture(String texture);
- void setHeader(List<String> header);
- void setFooter(List<String> footer);
- void set(List<String> head, List<String> foot);
- String getMessage(int x, int y);
- String getTexture(int x, int y);
- int getSignal(int x, int y);
- List<String> getHeader();
- List<String> getFooter();
TitleAPI:
- void title(Player player, String title, int start, int stay, int end);
- void subtitle(Player player, String subtitle, int start, int stay, int end);
- void subtitle(Player player, String subtitle)
- void broadcast(Player player, String title, String subtitle, int start, int stay, int end);
- void hotbar(Player player, String msg);
- void clear(Player player);
CREATING and LISTENING PACKETS - EXAMPLE
¡ Example ! Warning - The code is only for example.
package com.gmail.zahusek.test;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.imageio.ImageIO;
import org.apache.commons.lang.StringUtils;
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 org.bukkit.scheduler.BukkitRunnable;
import ru.tehkode.permissions.bukkit.PermissionsEx;
import com.gmail.zahusek.test.listener.BetterServerListPingEvent;
import com.gmail.zahusek.tinyprotocolapi.TinyProtocolAPI;
import com.gmail.zahusek.tinyprotocolapi.api.Preference;
import com.gmail.zahusek.tinyprotocolapi.api.tab.TabAPI;
import com.gmail.zahusek.tinyprotocolapi.api.title.TitleAPI;
import com.gmail.zahusek.tinyprotocolapi.listener.PacketHandler;
import com.gmail.zahusek.tinyprotocolapi.listener.PacketListener;
import com.gmail.zahusek.tinyprotocolapi.listener.PacketPriority;
import com.google.gson.JsonObject;
public class TestTPAPI extends JavaPlugin implements Listener, PacketListener
{
@Override
public void onEnable()
{
TinyProtocolAPI.registerPackets(this, this);
TabAPI.setDefaultPreference(TestTPAPI.class, Preference.NORMAL);
getServer().getPluginManager().registerEvents(this, this);
new BukkitRunnable() {
@Override
public void run() {
for(Player player : getServer().getOnlinePlayers())
{
if(!TabAPI.hasAPI(player)) continue;
TabAPI.refresh(TestTPAPI.class, player, modify ->
{
modify.setMessage(2, 10, "§a" + getServer().getOnlinePlayers().size() + " §6/§c " + getServer().getMaxPlayers());
modify.setMessage(2, 12, "§d" + String.format("%tT", System.currentTimeMillis()));
modify.setMessage(2, 14, "§7" + String.format("%tF", System.currentTimeMillis()));
});
}
}
}.runTaskTimerAsynchronously(this, 0, 10);
}
@EventHandler(priority = EventPriority.MONITOR)
void join (PlayerJoinEvent e)
{
Player player = e.getPlayer();
TabAPI.refresh(TestTPAPI.class, player, modify ->
{
modify.setSignal(99999);
modify.setMessage(3, 0, "§6§l§m §6§lI#I");
modify.setMessage(0, 0, "§6§lI#I§6§l§m ");
for(int i = 1; i < 3; i++)
{
modify.setMessage(i, 0, "§6§l§m ");
modify.setMessage(i, 19, "§6§l§m ");
}
for(int i = 1; i < 19; i++)
{
modify.setMessage(0, i, "§6§lI#I");
modify.setMessage(3, i, " §6§lI#I");
}
modify.setMessage(0, 19, "§6§lI#I§6§l§m ");
modify.setMessage(3, 19, "§6§l§m §6§lI#I");
modify.setMessage(1, 2, "§a§oProfile: ");
modify.setMessage(2, 2, "§2" + player.getDisplayName());
modify.setMessage(1, 4, "§c§oIP: ");
modify.setMessage(2, 4, "§4" + player.getAddress().getAddress().getHostAddress());
modify.setMessage(1, 6, "§b§oFirst Played: ");
modify.setMessage(2, 6, "§3" + String.format("%tF", player.getFirstPlayed()));
modify.setMessage(1, 8, "§e§oOnline mode: ");
modify.setMessage(2, 8, getServer().getOnlineMode() == true ? "§aYeep" : "§cNope");
modify.setMessage(1, 10, "§9§oStatus o/m: ");
//status
modify.setMessage(1, 12, "§5§oTime: ");
//time
modify.setMessage(1, 14, "§8§oDate: ");
//date
modify.setMessage(1, 16, "§1§oGroup: ");
modify.setMessage(2, 16, "§f" + PermissionsEx.getUser(player).getGroupNames()[0]);
});
TitleAPI.broadcast(player, "§aTinyProtocilAPI", "§24.0", 0, 20*5, 0);
new BukkitRunnable()
{
@Override
public void run() {
TitleAPI.title(player, "§6Descriprtion:", 0, 20*12, 0);
TitleAPI.subtitle(player, "§bOptimization");
}
}.runTaskLaterAsynchronously(this, 20*3);
new BukkitRunnable()
{
@Override
public void run() {
TitleAPI.subtitle(player, "§bNew Methods");
}
}.runTaskLaterAsynchronously(this, 20*6);
new BukkitRunnable()
{
@Override
public void run() {
TitleAPI.subtitle(player, "§bCorrections");
}
}.runTaskLaterAsynchronously(this, 20*9);
new BukkitRunnable()
{
@Override
public void run() {
TitleAPI.subtitle(player, "§cDelete addon \"§5BarAPI§c\"");
}
}.runTaskLaterAsynchronously(this, 20*12);
}
@PacketHandler(priority = PacketPriority.LOWEST)
void status(BetterServerListPingEvent e) throws MalformedURLException, IOException
{
JsonObject deFault = e.getDefaultJson();
deFault.addProperty(e.motd(), "§6▓TinyProtocolAPI▓" + "\n" + "§9§k###§eVersion §5§n4.1§6§9§k###");
deFault.addProperty(e.icon(), e.faviconSerializer(
ImageIO.read(new URL("http://megaicons.net/static/img/icons_sizes/257/1552/64/fc-barcelona-icon.png"))));
JsonObject sample = e.getSampleJson();
sample.add(e.hoverList(), e.sampleList(IntStream.range(0, 20).mapToObj((i) -> {
if (i == 10) return "§9TinyProtocolAPI §e- §dBetterServerListPingEvent";
else return StringUtils.join(IntStream.range(0, 80).mapToObj((o) -> " ").toArray());
}).collect(Collectors.toList())));
JsonObject protocol = e.getProtocolJson();
protocol.addProperty(e.protocolVersion(), -1);
int online = sample.get(e.online()).getAsInt(), max = sample.get(e.maxOnline()).getAsInt();
protocol.addProperty(e.protocolName(), "§eLeftMotD" + StringUtils.join(IntStream.range(0, 72).mapToObj((i) -> " ").toArray()) +
"§7" + online + "§8/§7" + max);
e.saveJson();
}
}
¡ ServerListPingEvent !
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta