Pesquisar na Comunidade
Mostrando resultados para as tags ''packet''.
Encontrado 1 registro
-
#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: 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!