@@ -45,29 +45,23 @@ public PacketHandlerCodec registerServerPacketHandlerCodec() {
4545 public static class GlowingEntityMetadataPacketHandler implements PacketHandler <ClientboundSetEntityDataPacket , ServerSession > {
4646 @ Override
4747 public ClientboundSetEntityDataPacket apply (final ClientboundSetEntityDataPacket packet , final ServerSession session ) {
48- ClientboundSetEntityDataPacket p = packet ;
4948 var metadata = packet .getMetadata ();
50- boolean edited = false ;
5149 for (int i = 0 ; i < metadata .size (); i ++) {
5250 final EntityMetadata <?, ?> entityMetadata = metadata .get (i );
5351 // https://minecraft.wiki/w/Minecraft_Wiki:Projects/wiki.vg_merge/Entity_metadata#Entity
54- if (entityMetadata .getId () == 0 && entityMetadata . getType () == MetadataTypes . BYTE ) {
55- ByteEntityMetadata byteMetadata = ( ByteEntityMetadata ) entityMetadata ;
52+ if (entityMetadata .getId () == 0 && entityMetadata instanceof ByteEntityMetadata byteMetadata ) {
53+ // found the metadata id we want to edit
5654 var newMetadata = new ByteEntityMetadata (0 , MetadataTypes .BYTE , (byte ) (byteMetadata .getPrimitiveValue () | 0x40 ));
55+ // copy to avoid mutating potentially cached data
5756 var newMetadataList = new ArrayList <>(metadata );
5857 newMetadataList .set (i , newMetadata );
59- p = packet .withMetadata (newMetadataList );
60- edited = true ;
61- break ;
58+ return packet .withMetadata (newMetadataList );
6259 }
6360 }
64- if (!edited ) {
65- var newMetadata = new ArrayList <EntityMetadata <?, ?>>(metadata .size () + 1 );
66- newMetadata .addAll (packet .getMetadata ());
67- newMetadata .add (new ByteEntityMetadata (0 , MetadataTypes .BYTE , (byte ) 0x40 ));
68- p = packet .withMetadata (newMetadata );
69- }
70- return p ;
61+ // metadata id wasn't present, so we need to add it
62+ var newMetadata = new ArrayList <>(packet .getMetadata ());
63+ newMetadata .addFirst (new ByteEntityMetadata (0 , MetadataTypes .BYTE , (byte ) 0x40 ));
64+ return packet .withMetadata (newMetadata );
7165 }
7266 }
7367}
0 commit comments