Ir para conteúdo

[BukkitAPI] Como criar PACKET


Lüigi!

Posts Recomendados

#OLDBUTGOLD2

 

Olá pessoal, tudo bem?
 Neste tutorial, irei ensinar como modificar e mandar packets! Eu estarei utilizando a build path do spigot mas você consegue com toda .jar que tem acesso a package net.minecraft.server
  AVISO! Esse tutorial é destinado para pessoas que já tem certa experiência com programação do bukkit!
 
Let's get started, primeiramente, você tem que achar o packet que você quer modificar, cada packet é uma situação, nesse caso, eu quero spawnar um zombie em determinada coordenada via packet, é claro que já existe evento para isso, então só estou fazendo isso para exemplificar como é útil modificar packet's. Vamos lá, primeiramente, precisamos achar o packet para nossa situação, e como fazemos isso?
 
  Simples, teremos que olhar as classes do net.minecraft.server e achar o packet adequado, você pode procurar aqui: https://github.com/Bukkit/mc-dev/tree/c1627dc9cc7505581993eb0fa15597cb36e94244/net/minecraft/server para nosso tutorial, precisamos criar o packet para spawnar um entity, e como quero que seja um zombie, creio que o packet mais adequado é o  PacketPlayOutSpawnEntityLiving (os nomes dos packet's são explicatórios, packet para spawnar um living entity), vamos ver a classe dele: https://github.com/Bukkit/mc-dev/blob/c1627dc9cc7505581993eb0fa15597cb36e94244/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java se você entrou no link, pode-se ver as fields declaradas da classe:(int a, int b etc..), se você olhar para o construtor, pode-se ver que não é muito difícil o que a field faz, mas para termos certeza, temos esse link: http://wiki.vg/Protocol, ele contém todas as informações de todos os packets, nosso packet nessa lista é o  Spawn mob (http://wiki.vg/Protocol#Spawn_Mob), vamos olhar as características:
 Ehy1Uja.png
 Como vocês podem ver, eles dão informações dos fields para nós, e provavelmente elas estão em ordem, eu traduzi um pouco as fields para vocês, por exemplo, a ID do entity é o a na classe do packet.
 
 Agora vem a parte divertida! Vamos mudar o ID do entity! Assim spawnaremos um zombie, vamos ao código? 
 Primeiramente, iremos criar um método chamado spawnZombiePacket:

	public void spawnZombiePacket(){
		
	}

Agora, é só criar o packet com o zombie, precisaremos pegar o livingentity:

	public void spawnZombiePacket(EntityLiving s){
		PacketPlayOutSpawnEntityLiving packet = new PacketPlayOutSpawnEntityLiving(s);
		
	}

 E pronto, agora é só mandar o packet a todos os players, assim eles poderão ver o mob! :

	public void spawnZombiePacket(EntityLiving s){
		PacketPlayOutSpawnEntityLiving packet = new PacketPlayOutSpawnEntityLiving(s);
		for(Player p : Bukkit.getOnlinePlayers()){
			((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);//Você manda o packet por este método!
		}
	}

Pronto, tutorial acaba por aqui, espero seu feedback e sua opinião, se gostou, de um like!

Editado por Lüigi!
Link para o comentário
Compartilhar em outros sites

E na 1.5.2?

 Err se quiser voltar ao tempo... Na pagina do protocol tem uma opção de ver as versões antigas da pagina.. Assim você pode ver como era na 1.5

 

 Da 1.5 pra 1.7 os packets mudaram de nomes.. Você pode achar os nomes dos packets da 1.5 aqui:

 

 https://bukkit.org/threads/info-1-7-x-protocol-changes-find-the-new-packet-names-here.201574/

Link para o comentário
Compartilhar em outros sites

desculpa ingnorancia e que eu queria saber para que serve estes packet ?

 Packets são pequenos dados (dados não deve ser a melhor palavra) que são enviadas do servidor para o jogador, e vice versa, eles fazem coisas especificas do Minecraft, tanto pro servidor tanto por client, por exemplo, se o server manda um packet de spawnar um creeper pro client, o client le esse packet e spawna o zumbi no jogo

 

 Uma explicação mais detalhada em inglês:

   

 

 

A packet is a bit of data (hence the name packet) sent from the server (Bukkit) to client (The person playing minecraft on the server) or vice versa. Some even can go both ways. But either way, they do specific things with minecraft and the client, like potions, teleports, stuff like that. But like bukkit, it has limitations to exactly (no more no less) what you can do with minecraft.
Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...