@SuppressWarnings("deprecation")
    public static PacketPlayOutSpawnEntityLiving getMobPacket(String text, Location loc) {
        PacketPlayOutSpawnEntityLiving mobPacket = new PacketPlayOutSpawnEntityLiving();

        try {
            Field a = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "a");
            a.setAccessible(true);
            a.set(mobPacket, (int) ENTITY_ID);

            Field b = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "b");
            b.setAccessible(true);
            b.set(mobPacket, (byte) EntityType.WITHER.getTypeId());

            Field c = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "c");
            c.setAccessible(true);
            c.set(mobPacket, (int) Math.floor(loc.getBlockX() * 32.0D));

            Field d = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "d");
            d.setAccessible(true);
            d.set(mobPacket, (int) Math.floor(loc.getBlockY() * 32.0D));

            Field e = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "e");
            e.setAccessible(true);
            e.set(mobPacket, (int) Math.floor(loc.getBlockZ() * 32.0D));

            Field f = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "f");
            f.setAccessible(true);
            f.set(mobPacket, (byte) 0);

            Field g = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "g");
            g.setAccessible(true);
            g.set(mobPacket, (byte) 0);

            Field h = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "h");
            h.setAccessible(true);
            h.set(mobPacket, (byte) 0);

            Field i = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "i");
            i.setAccessible(true);
            i.set(mobPacket, (byte) 0);

            Field j = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "j");
            j.setAccessible(true);
            j.set(mobPacket, (byte) 0);

            Field k = ReflectionUtil.getDeclaredField(mobPacket.getClass(), "k");
            k.setAccessible(true);
            k.set(mobPacket, (byte) 0);

        } catch (IllegalArgumentException e1) {
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        }

        DataWatcher watcher = getWatcher(text, 300);

        try {
            Field t = PacketPlayOutSpawnEntityLiving.class.getDeclaredField("l");
            t.setAccessible(true);
            t.set(mobPacket, watcher);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return mobPacket;
    }