public static PacketPlayOutEntityMetadata getMetadataPacket(DataWatcher watcher) {
    PacketPlayOutEntityMetadata metaPacket = new PacketPlayOutEntityMetadata();

    Field a = ReflectionUtil.getDeclaredField(metaPacket.getClass(), "a");
    a.setAccessible(true);
    try {
      a.set(metaPacket, (int) ENTITY_ID);
    } catch (IllegalArgumentException e1) {
      e1.printStackTrace();
    } catch (IllegalAccessException e1) {
      e1.printStackTrace();
    }

    try {
      Field b = PacketPlayOutEntityMetadata.class.getDeclaredField("b");
      b.setAccessible(true);
      b.set(metaPacket, watcher.c());
    } catch (Exception e) {
      e.printStackTrace();
    }

    return metaPacket;
  }