Ir para conteúdo

[API] TitleAPI


AstroCoder

Posts Recomendados

TitleAPI
 
Eu sempre fui o tipo de pessoa que gosta de deixar o servidor todo bonito, portanto para todos os meus servidores eu fiz esta api para que pudesse facilmente criar um title, title é uma feature da versão 1.8.
 
titleAPI.class (voce pode renomear como é obvio)
 
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.spigotmc.ProtocolInjector;

import net.minecraft.server.v1_7_R4.ChatSerializer;
import net.minecraft.server.v1_7_R4.IChatBaseComponent;

/* API criada por AstroCoder */
public class titleAPI {

	public static void sendTitleAndSubTo(Player p, String title, String subtitle)
	  {
	    if (((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() < 47) { 
	      return;
	    }
	    IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}");
	    ProtocolInjector.PacketTitle t = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TITLE, chatTitle);
	    IChatBaseComponent subTitle = ChatSerializer.a("{\"text\": \"" + subtitle + "\"}");
	    ProtocolInjector.PacketTitle sub = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.SUBTITLE, subTitle);
	    ProtocolInjector.PacketTitle time = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TIMES, 20, 120, 20);
	    ((CraftPlayer)p).getHandle().playerConnection.sendPacket(time);
	    ((CraftPlayer)p).getHandle().playerConnection.sendPacket(t);
	    ((CraftPlayer)p).getHandle().playerConnection.sendPacket(sub);
	  }
	  
	  public static void sendTitleTo(Player p, String title)
	  {
	    if (((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() < 47) { //ver a version do player
	      return;
	    }
	    IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}");
	    ProtocolInjector.PacketTitle t = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TITLE, chatTitle);
	    ProtocolInjector.PacketTitle time = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TIMES, 20, 120, 20);
	    ((CraftPlayer)p).getHandle().playerConnection.sendPacket(time);
	    ((CraftPlayer)p).getHandle().playerConnection.sendPacket(t);
	  }


	  
}

Como usar? (Exemplo num join event)

@EventHandler
	public void OnJoin(PlayerJoinEvent e) {
		Player p = e.getPlayer();
		e.setJoinMessage(null);
		titleAPI.sendTitleAndSubTo(p, "seu titulo", "seu subtitulo");
		titleAPI.sendTitleTo(p, "seu titulo"); //sem subtitulo
	} 
Atenção: Utilizei ProtocolHack para fazer esta api
 
Muito fácil de usar e eficiente.
O resto de um bom coding.
Editado por AstroCoder
Link para o comentário
Compartilhar em outros sites

Guest » MickCraft » xKizame »
ProtocolInjector.PacketTitle time = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TIMES, 20, 120, 20);

 

10 SEGUNDOS NA TELA? OUSH 

 

 

Boa e.e

Devia criar um PA nos <3

Link para o comentário
Compartilhar em outros sites

Devia criar um PA nos <3

	public void create(Player p, String title, String sub, int in, int time, int out) {
		IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}");
		PacketPlayOutTitle titled = new PacketPlayOutTitle(EnumTitleAction.TITLE, chatTitle);
		PacketPlayOutTitle length = new PacketPlayOutTitle(EnumTitleAction.TIMES, chatTitle, 20, 40, 20);
		
		IChatBaseComponent subt = ChatSerializer.a("{\"text\": \"" + sub + "\"}");
		PacketPlayOutTitle subp = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, subt);
		PacketPlayOutTitle subl = new PacketPlayOutTitle(EnumTitleAction.TIMES, subt, in, time, out);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(titled);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(length);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(subp);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(subl);
		
	}

Lembrando que o tempo e em MS 20 = 1 segundo

 

 

Esse ai e pra spigot 1.8

Editado por stalker112
Link para o comentário
Compartilhar em outros sites

Guest » MickCraft » xKizame »
public void create(Player p, String title, String sub, int in, int time, int out) {
		IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}");
		PacketPlayOutTitle titled = new PacketPlayOutTitle(EnumTitleAction.TITLE, chatTitle);
		PacketPlayOutTitle length = new PacketPlayOutTitle(EnumTitleAction.TIMES, chatTitle, 20, 40, 20);
		
		IChatBaseComponent subt = ChatSerializer.a("{\"text\": \"" + sub + "\"}");
		PacketPlayOutTitle subp = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, subt);
		PacketPlayOutTitle subl = new PacketPlayOutTitle(EnumTitleAction.TIMES, subt, in, time, out);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(titled);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(length);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(subp);
		((CraftPlayer) p).getHandle().playerConnection.sendPacket(subl);
		
	}
Lembrando que o tempo e em MS 20 = 1 segundo

 

 

Esse ai e pra spigot 1.8

Eu quero 1 pra 1.5 será que da?

Link para o comentário
Compartilhar em outros sites

ANÁLISE DE INATIVIDADE
 

Este tópico foi automaticamente arquivado devido à inatividade. Para manter a organização e fluidez das discussões na comunidade, tópicos que permanecem sem novas interações por um período prolongado são fechados automaticamente.
 

Se houver interesse em retomar o conteúdo, sinta-se à vontade para criar um novo tópico ou entre em contato com a equipe da comunidade para reabrir este tópico.


Equipe de Moderação
Gamer's Board
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...