Intrometimido Postado Agosto 17, 2018 Denunciar Compartilhar Postado Agosto 17, 2018 (editado) Galera, estou com uma grande duvida com relação a eventos com baus(chest, ender chest). Queria muito saber se da para manipular o evento de abertura deles(quando abrimos e a tampa tem aquela animação). Estou trabalhando em um plugin ai queria abri-lo, e mante-lo aberto até o evento do plugin terminar e só depois ele fechar, desde já agradeço.... Editado Agosto 17, 2018 por Intrometimido Erros de português, etc... Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 17, 2018 Denunciar Compartilhar Postado Agosto 17, 2018 Agora, Jheyson disse: @EventHandler public void onInventoryOpenEvent(InventoryOpenEvent e){ } Acho que não tem como, ele quer deixar a animação do baú, a tampa, aberta mesmo com o jogador "fechando" o inventário. Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 17, 2018 Autor Denunciar Compartilhar Postado Agosto 17, 2018 Mas para isso eu teria que pegar o bau e o invatario dele? explique isso melhor ;-; Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 17, 2018 Autor Denunciar Compartilhar Postado Agosto 17, 2018 1 minuto atrás, Mounton disse: Acho que não tem como, ele quer deixar a animação do baú, a tampa, aberta mesmo com o jogador "fechando" o inventário. Isso;-; Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 17, 2018 Autor Denunciar Compartilhar Postado Agosto 17, 2018 Man, eu quero apenas modificar o evento de abertura do bau(chest ou Ender_Chest), e queria saber como fazer isso. Tipo, quando um player clica em um bau ele abre(animação de abertura de bau) e abre o inventario do bau, Eu queria saber como modificar o evento da abertura do bau(animação) e nao do inventario do mesmo. Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 17, 2018 Autor Denunciar Compartilhar Postado Agosto 17, 2018 Ok, digamos que seja o evento PlayerInteractEvent, como eu pego a animação do chest e congelo ela por %tempo que eu quiser? essa é minha duvida Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 17, 2018 Autor Denunciar Compartilhar Postado Agosto 17, 2018 :-: Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Agosto 17, 2018 Denunciar Compartilhar Postado Agosto 17, 2018 (editado) É como o @Jheyson falou, você vai precisar usar um "packet" chamado "PacketPlayOutBlockAction". Protocol: https://wiki.vg/Protocol#Block_Action. Exemplo: //Animação de como estivesse abrindo o baú... Block block = ...; Packet packet = new PacketPlayOutBlockAction(new BlockPosition(block.getX(), block.getY(), block.getZ()), CraftMagicNumbers.getBlock(block), 1, 1); Editado Agosto 17, 2018 por bieel1503 Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 19, 2018 Autor Denunciar Compartilhar Postado Agosto 19, 2018 Man, meio que tentei isso mas quebra o bloco que eu refencio mesmo sendo um Bau Achei isso na net... @SuppressWarnings("deprecation") public static void changeChestState(Location loc, boolean open) { byte dataByte = (open) ? (byte) 1 : 0; // The byte of data used for the note and animation packet (1 if true, 0 if false) for (Player player : Bukkit.getOnlinePlayers()) { player.playNote(loc, (byte) 1, dataByte); // Play the sound BlockPosition position = new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); // Create the block position using loc // Instantiate animation packet, get NMS Block using getById() and loc.getBlock() (deprecated), the server version may vary PacketPlayOutBlockAction blockActionPacket = new PacketPlayOutBlockAction(position, net.minecraft.server.v1_8_R3.Block.getById(loc.getBlock().getTypeId()), (byte) 1, dataByte); ((CraftPlayer) player).getHandle().playerConnection.sendPacket(blockActionPacket); // Send animation packet to CraftPlayer } }[spoiler/] Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 19, 2018 Autor Denunciar Compartilhar Postado Agosto 19, 2018 Em 17/08/2018 em 18:35, bieel1503 disse: É como o @Jheyson falou, você vai precisar usar um "packet" chamado "PacketPlayOutBlockAction". Protocol: https://wiki.vg/Protocol#Block_Action. Exemplo: //Animação de como estivesse abrindo o baú... Block block = ...; Packet packet = new PacketPlayOutBlockAction(new BlockPosition(block.getX(), block.getY(), block.getZ()), CraftMagicNumbers.getBlock(block), 1, 1); Sabe me indicar um bom tutorial/uma boa aula de packets que nao seja em video? se sim agradeço.... Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Agosto 20, 2018 Denunciar Compartilhar Postado Agosto 20, 2018 23 horas atrás, Intrometimido disse: Sabe me indicar um bom tutorial/uma boa aula de packets que nao seja em video? se sim agradeço.... https://www.spigotmc.org/threads/nms-packets-in-minecraft.245190/ Desculpa, mas não sei nenhum HU3. Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 20, 2018 Denunciar Compartilhar Postado Agosto 20, 2018 Recomendo sempre procurar em inglês, use o link do @bieel1503 Aqui está, de uma lida neste tópico. https://bukkit.org/threads/chest-open-animation.333534/ Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 20, 2018 Autor Denunciar Compartilhar Postado Agosto 20, 2018 Ok galeea, já resolvi, tive que usar packets mesmo mas pode-se usar ProtocolLib, eu que não quis usar Agora só falta eu achar uma maneira de tirar o som da abertura do bau... Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 20, 2018 Denunciar Compartilhar Postado Agosto 20, 2018 10 minutos atrás, Intrometimido disse: Ok galeea, já resolvi, tive que usar packets mesmo mas pode-se usar ProtocolLib, eu que não quis usar Agora só falta eu achar uma maneira de tirar o som da abertura do bau... Procure alguns tópicos, https://www.spigotmc.org/threads/remove-sound.54990/ https://bukkit.org/threads/protocollib-disable-a-sound.433955/ De uma olhada, partiu curso, to atrasado, fui... Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 20, 2018 Autor Denunciar Compartilhar Postado Agosto 20, 2018 Ok, vou olhar, vlwzão ae galera, grande duvida retirada, vlw mesmo se alguém quiser saber o código que usei só deixar ae em baixo VLWS... Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Agosto 20, 2018 Denunciar Compartilhar Postado Agosto 20, 2018 33 minutos atrás, Intrometimido disse: Ok galeea, já resolvi, tive que usar packets mesmo mas pode-se usar ProtocolLib, eu que não quis usar Agora só falta eu achar uma maneira de tirar o som da abertura do bau... Não conseguiu usando o código que mandei? Você só precisaria fazer algo como: public void openChestAnimation(Player player, Block block){ ((CraftPlayer)player).getHandle().playerConnection.sendPacket(new PacketPlayOutBlockAction(new BlockPosition(block.getX(), block.getY(), block.getZ()), CraftMagicNumbers.getBlock(block), 1, 1)); } public void closeChestAnimation(Player player, Block block){ ((CraftPlayer)player).getHandle().playerConnection.sendPacket(new PacketPlayOutBlockAction(new BlockPosition(block.getX(), block.getY(), block.getZ()), CraftMagicNumbers.getBlock(block), 1, 0)); } Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 20, 2018 Autor Denunciar Compartilhar Postado Agosto 20, 2018 Nossa mano, isso simplifica tudo, codigo bem mais organizado e menor vou testar aqui.... OBS: estou na Spigot 1.8.8 Mas quero evoluir para a 1.11 e 1.12 logo ? Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 20, 2018 Autor Denunciar Compartilhar Postado Agosto 20, 2018 1 hora atrás, bieel1503 disse: Não conseguiu usando o código que mandei? Você só precisaria fazer algo como: public void openChestAnimation(Player player, Block block){ ((CraftPlayer)player).getHandle().playerConnection.sendPacket(new PacketPlayOutBlockAction(new BlockPosition(block.getX(), block.getY(), block.getZ()), CraftMagicNumbers.getBlock(block), 1, 1)); } public void closeChestAnimation(Player player, Block block){ ((CraftPlayer)player).getHandle().playerConnection.sendPacket(new PacketPlayOutBlockAction(new BlockPosition(block.getX(), block.getY(), block.getZ()), CraftMagicNumbers.getBlock(block), 1, 0)); } Man, tentei usar esse ae mas ele abre e fecha o chest rápido e da um som de bloco de notas, me ensina como colocar o código assim ae posto o que usei.... Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Agosto 21, 2018 Denunciar Compartilhar Postado Agosto 21, 2018 14 horas atrás, Intrometimido disse: Man, tentei usar esse ae mas ele abre e fecha o chest rápido e da um som de bloco de notas, me ensina como colocar o código assim ae posto o que usei.... Som de bloco de notas...? Que estranho. Você pode testar o código que mandei pegando um evento de interação, cancelando e mandando o packet. Assim: @EventHandler private void interact(PlayerInteractEvent event){ if(event.getClickedBlock().getType() == Material.CHEST){ event.setCancelled(true); openChestAnimation(event.getPlayer(), event.getClickedBlock()); } } Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 21, 2018 Autor Denunciar Compartilhar Postado Agosto 21, 2018 (editado) 2 horas atrás, bieel1503 disse: Som de bloco de notas...? Que estranho. Você pode testar o código que mandei pegando um evento de interação, cancelando e mandando o packet. Assim: @EventHandler private void interact(PlayerInteractEvent event){ if(event.getClickedBlock().getType() == Material.CHEST){ event.setCancelled(true); openChestAnimation(event.getPlayer(), event.getClickedBlock()); } } Eu consegui, eu estou pedindo para e ensinar como colocar o código desse jeito que você colocou ae em cima, como colocar o código desse jeito na gamers board, tipo [sla]código[/sla], é isso ae pego o código que usei e posto assim Editado Agosto 21, 2018 por Intrometimido Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 21, 2018 Denunciar Compartilhar Postado Agosto 21, 2018 http://prntscr.com/klasst Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Agosto 21, 2018 Denunciar Compartilhar Postado Agosto 21, 2018 1 hora atrás, Intrometimido disse: Eu consegui, eu estou pedindo para e ensinar como colocar o código desse jeito que você colocou ae em cima, como colocar o código desse jeito na gamers board, tipo [sla]código[/sla], é isso ae pego o código que usei e posto assim Ué, só clicar ali no ícone "</>". Link para o comentário Compartilhar em outros sites More sharing options...
Intrometimido Postado Agosto 21, 2018 Autor Denunciar Compartilhar Postado Agosto 21, 2018 (editado) public static void playChestAction(Location paramLocation, boolean open) { World world = ((CraftWorld) paramLocation.getWorld()).getHandle(); BlockPosition position = new BlockPosition(paramLocation.getX(), paramLocation.getY(), paramLocation.getZ()); TileEntityEnderChest tileChest = (TileEntityEnderChest) world.getTileEntity(position); world.playBlockAction(position, tileChest.w(), 1, open ? 1 : 0); } Pego a localização do bau(Chest/EnderChest), adiciono em paramLocation. Defino open como true para aberto, ou false para fechado. Não sei se usa packets mas acho que sim, mas funcionou perfeitamente. Testei com dois mines abertos para ver se envia a animação para os dois player e enviou de boas. Corrijam-me se o codigo estiver estupidamente ********;-; Editado Agosto 23, 2018 por Intrometimido Link para o comentário Compartilhar em outros sites More sharing options...
InVinicius Postado Dezembro 22, 2018 Denunciar Compartilhar Postado Dezembro 22, 2018 Sua dúvida foi marcada como resolvida pela nossa equipe. Caso sua dúvida não tenha sido sanada, crie outro tópico. OBS: Essa mensagem é automática Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados