Trying to alter packet with ProtocolLib

Discussion in 'Plugin Development' started by Joshuaknight1998, Dec 16, 2017.

Thread Status:
Not open for further replies.
  1. Hey. I've been trying to mess around with ProtocolLib to alter a packet being sent to a player, but I'm having issues. The "PASSED" message IS broadcasting when what seems to be the correct conditions are met, but I'm not having any luck altering this sound packet. Here's what I have:

    CODE (open)

    Code:
           manager.addPacketListener(new PacketAdapter(this, ListenerPriority.HIGH, PacketType.Play.Server.NAMED_SOUND_EFFECT) {
                @Override
                public void onPacketSending(PacketEvent event) {
                    if(event.getPacketType() == PacketType.Play.Server.NAMED_SOUND_EFFECT) {
                        if(event.getPacket().getSoundEffects().getValues().get(0) == Sound.BLOCK_METAL_STEP && event.getPlayer().getWorld().getBlockAt(new Location(event.getPlayer().getWorld(), (event.getPacket().getIntegers().read(0)/8) + 0.5,(event.getPacket().getIntegers().read(1)/8)-0.5,(event.getPacket().getIntegers().read(2)/8) + 0.5)).getType() == Material.IRON_BLOCK) {
                            Bukkit.broadcastMessage("PASSED");
                            event.getPacket().getSoundEffects().getValues().set(0, Sound.BLOCK_ANVIL_PLACE);
                            Random r = new Random();
                            event.getPacket().getFloat().getValues().set(1, (r.nextFloat() * (0.95f - 0.5f)));
                    }
                }
            });


    The sound is not being converted to BLOCK_ANVIL_PLACE, and I can tell by just listening to the audio as a player walks across an iron block. It sounds normal (BLOCK_METAL_STEP). Any ideas? Thanks in advance!
     
Thread Status:
Not open for further replies.

Share This Page