public void startFishingTask(final boolean VIP) {
        final int time = VIP ? 30000 : 60000;
        cancelFishingTask();

        fishing = TimerManager.getInstance().register(new Runnable() {

            @Override
            public void run() {
                if (!haveItem(2300000, 1, false, true)) {
                    cancelFishingTask();
                    return;
                }
                MapleInventoryManipulator.removeById(client, MapleInventoryType.USE, 2300000, 1, false, false);

                final int randval = RandomRewards.getInstance().getFishingReward();

                switch (randval) {
                    case 0: // Meso
                        final int money = Randomizer.rand(10, 50000);
                        gainMeso(money, true);
                        //client.getSession().write(UIPacket.fishingUpdate((byte) 1, money));
                        break;
                    case 1: // EXP
                        final int experi = Randomizer.nextInt(ExpTable.getExpNeededForLevel(level) / 200);
                        gainExp(experi, true, false, true);
                        //client.getSession().write(UIPacket.fishingUpdate((byte) 2, experi));
                        break;
                    default:
                        MapleInventoryManipulator.addById(client, randval, (short) 1);
                        //client.getSession().write(UIPacket.fishingUpdate((byte) 0, randval));
                        break;
                }
                //map.broadcastMessage(UIPacket.fishingCaught(id));
            }
        }, time, time);
    }