Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EntityMetadata packet issue

Tags:

java

bukkit

I am attempting to make a player appear like they are sneaking (crouching) on Minecraft 1.8.8 running Spigot, based on http://wiki.vg/Entities#Entity_Metadata_Format I have done the following:

Created a data watcher and mapped appropriate value for crouched from the wiki:

DataWatcher dw = new DataWatcher(null);
dw.a(0, (byte) 0x02);

Created the packet, where target is a Player object of the player that needs to appear sneaking:

PacketPlayOutEntityMetadata metadataPacket = new PacketPlayOutEntityMetadata(target.getEntityId(), dw, false);

Sent the packet to everyone online:

for (Player p : Bukkit.getOnlinePlayers()) {
    ((CraftPlayer) p).getHandle().playerConnection.sendPacket(metadataPacket);
}

This does not appear to be working though, how would be the appropriate way to go about this?

I attempted to use ProtocolLib too, though ideally I am looking for a solution that works using packets.

like image 562
maldahleh Avatar asked Jan 18 '26 13:01

maldahleh


1 Answers

The problem is that you use the wrong method for updating. There is a internal boolean in the datawatcher that checks for updates. There are 2 ways solving this problem.

Using DataWatcher#watch:

Player target = Bukkit.getPlayer("RandomGuy");
DataWatcher dw = ((CraftPlayer) target).getHandle().getDataWatcher();
dw.watch(0, (byte) 2);
PacketPlayOutEntityMetadata metadataPacket = new PacketPlayOutEntityMetadata(target.getEntityId(), dw, false);
//sending packet...

Skipping the internal boolean (not recommended):

Player target = Bukkit.getPlayer("RandomGuy");
DataWatcher dw = ((CraftPlayer) target).getHandle().getDataWatcher();
dw.a(0, (byte) 2);
PacketPlayOutEntityMetadata metadataPacket = new PacketPlayOutEntityMetadata(target.getEntityId(), dw, true);
//sending packet...

P.S. If that is a fake entity, I'd recommend instantiating a reference of an EntityPlayer for better packet control.

like image 158
Gabriel B. Avatar answered Jan 21 '26 03:01

Gabriel B.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!