Example usage for org.joda.time DateTime now

List of usage examples for org.joda.time DateTime now

Introduction

In this page you can find the example usage for org.joda.time DateTime now.

Prototype

public static DateTime now() 

Source Link

Document

Obtains a DateTime set to the current system millisecond time using ISOChronology in the default time zone.

Usage

From source file:com.aionemu.gameserver.dataholders.InstanceCooltimeData.java

License:Open Source License

private long getUpdateHours(String[] days, int hour) {
    DateTime now = DateTime.now();
    DateTime repeatDate = new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), hour, 0, 0);
    int curentDay = now.getDayOfWeek();
    for (String name : days) {
        int day = getDay(name);
        if (day < curentDay) {
            continue;
        }//from w  ww  .  j  a v a  2s .co  m
        if (day == curentDay) {
            if (now.isBefore(repeatDate)) {
                return repeatDate.getMillis();
            }
        } else {
            repeatDate = repeatDate.plusDays(day - curentDay);
            return repeatDate.getMillis();
        }
    }
    return repeatDate.plusDays((7 - curentDay) + getDay(days[0])).getMillis();
}

From source file:com.aionemu.gameserver.model.gameobjects.UseableItemObject.java

License:Open Source License

@Override
public void onUse(final Player player) {
    if (!usingPlayer.compareAndSet(null, player)) {
        // The same player is using, return. It might be double-click
        if (usingPlayer.compareAndSet(player, player)) {
            return;
        }//from   w  w w.  ja v a  2s  .c  om
        PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_OCCUPIED_BY_OTHER);
        return;
    }

    boolean isOwner = getOwnerHouse().getOwnerId() == player.getObjectId();
    if (getObjectTemplate().isOwnerOnly() && !isOwner) {
        warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_IS_ONLY_FOR_OWNER_VALID);
        return;
    }

    boolean cdExpired = player.getHouseObjectCooldownList().isCanUseObject(getObjectId());
    if (!cdExpired) {
        if (getObjectTemplate().getCd() != null && getObjectTemplate().getCd() != 0) {
            warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_CANNOT_USE_FLOWERPOT_COOLTIME);
            return;
        }
        if (getObjectTemplate().isOwnerOnly() && isOwner) {
            warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_CANT_USE_PER_DAY);
            return;
        }
    }

    final UseItemAction action = getObjectTemplate().getAction();
    if (action == null) {
        // Some objects do not have actions; they are test items now
        warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_ALL_CANT_USE);
        return;
    }

    if (getObjectTemplate().getPlacementLimit() == LimitType.COOKING) {
        // Check if player already has an item
        if (player.getInventory().getItemCountByItemId(action.getRewardId()) > 0) {
            int nameId = DataManager.ITEM_DATA.getItemTemplate(action.getRewardId()).getNameId();
            SM_SYSTEM_MESSAGE msg = SM_SYSTEM_MESSAGE.STR_MSG_CANNOT_USE_ALREADY_HAVE_REWARD_ITEM(nameId,
                    getObjectTemplate().getNameId());
            warnAndRelease(player, msg);
            return;
        }
    }

    final Integer useCount = getObjectTemplate().getUseCount();
    int currentUseCount = 0;

    if (useCount != null) {
        // Counter is for both, but could be made custom from configs
        currentUseCount = getOwnerUsedCount() + getVisitorUsedCount();
        if (currentUseCount >= useCount && !isOwner || currentUseCount > useCount && isOwner) {
            // if expiration is set then final reward has to be given for owner only
            // due to inventory full. If inventory was not full, the object had to be despawned, so
            // we wouldn't reach this check.
            if (!mustGiveLastReward || !isOwner) {
                warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_ACHIEVE_USE_COUNT);
                return;
            }
        }
    }

    final Integer requiredItem = getObjectTemplate().getRequiredItem();

    if (mustGiveLastReward && !isOwner) {
        // Expired, waiting owner
        int descId = DataManager.ITEM_DATA.getItemTemplate(requiredItem).getNameId();
        warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_DELETE_EXPIRE_TIME(descId));
        return;
    } else if (requiredItem != null) {
        int checkType = action.getCheckType();
        if (checkType == 1) { // equip item needed
            List<Item> items = player.getEquipment().getEquippedItemsByItemId(requiredItem);
            if (items.size() == 0) {
                int descId = DataManager.ITEM_DATA.getItemTemplate(requiredItem).getNameId();
                warnAndRelease(player,
                        SM_SYSTEM_MESSAGE.STR_MSG_CANT_USE_HOUSE_OBJECT_ITEM_EQUIP(new DescriptionId(descId)));
                return;
            }
        } else if (player.getInventory().getItemCountByItemId(requiredItem) < action.getRemoveCount()) {
            int descId = DataManager.ITEM_DATA.getItemTemplate(requiredItem).getNameId();
            warnAndRelease(player,
                    SM_SYSTEM_MESSAGE.STR_MSG_CANT_USE_HOUSE_OBJECT_ITEM_CHECK(new DescriptionId(descId)));
            return;
        }
    }

    if (player.getInventory().isFull()) {
        warnAndRelease(player, SM_SYSTEM_MESSAGE.STR_WAREHOUSE_TOO_MANY_ITEMS_INVENTORY);
        return;
    }

    final int delay = getObjectTemplate().getDelay();
    final int ownerId = getOwnerHouse().getOwnerId();
    final int usedCount = useCount == null ? 0 : currentUseCount + 1;
    final ItemUseObserver observer = new ItemUseObserver() {
        @Override
        public void abort() {
            PacketSendUtility.sendPacket(player, new SM_USE_OBJECT(player.getObjectId(), getObjectId(), 0, 9));
            player.getObserveController().removeObserver(this);
            warnAndRelease(player, null);
        }

        @Override
        public void itemused(Item item) {
            abort();
        }
    };

    player.getObserveController().attach(observer);
    PacketSendUtility.sendPacket(player,
            SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_USE(getObjectTemplate().getNameId()));
    PacketSendUtility.sendPacket(player, new SM_USE_OBJECT(player.getObjectId(), getObjectId(), delay, 8));
    player.getController().addTask(TaskId.HOUSE_OBJECT_USE,
            ThreadPoolManager.getInstance().schedule(new Runnable() {
                @Override
                public void run() {
                    try {
                        PacketSendUtility.sendPacket(player,
                                new SM_USE_OBJECT(player.getObjectId(), getObjectId(), 0, 9));
                        if (action.getRemoveCount() != null && action.getRemoveCount() != 0) {
                            player.getInventory().decreaseByItemId(requiredItem, action.getRemoveCount());
                        }

                        UseableItemObject myself = UseableItemObject.this;
                        int rewardId = 0;
                        boolean delete = false;

                        if (useCount != null) {
                            if (action.getFinalRewardId() != null && useCount + 1 == usedCount) {
                                // visitors do not get final rewards
                                rewardId = action.getFinalRewardId();
                                ItemService.addItem(player, rewardId, 1);
                                delete = true;
                            } else if (action.getRewardId() != null) {
                                rewardId = action.getRewardId();
                                ItemService.addItem(player, rewardId, 1);
                                if (useCount == usedCount) {
                                    PacketSendUtility.sendPacket(player,
                                            SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_FLOWERPOT_GOAL(
                                                    myself.getObjectTemplate().getNameId()));
                                    if (action.getFinalRewardId() == null) {
                                        delete = true;
                                    } else {
                                        myself.setMustGiveLastReward(true);
                                        myself.setExpireTime((int) (System.currentTimeMillis() / 1000));
                                        myself.setPersistentState(PersistentState.UPDATE_REQUIRED);
                                    }
                                }
                            }
                        } else if (action.getRewardId() != null) {
                            rewardId = action.getRewardId();
                            ItemService.addItem(player, rewardId, 1);
                        }
                        if (usedCount > 0) {
                            if (!delete) {
                                if (player.getObjectId() == ownerId) {
                                    myself.incrementOwnerUsedCount();
                                } else {
                                    myself.incrementVisitorUsedCount();
                                }
                            }
                            PacketSendUtility.broadcastPacket(player,
                                    new SM_OBJECT_USE_UPDATE(player.getObjectId(), ownerId, usedCount, myself),
                                    true);
                        }
                        if (rewardId > 0) {
                            int rewardNameId = DataManager.ITEM_DATA.getItemTemplate(rewardId).getNameId();
                            PacketSendUtility.sendPacket(player,
                                    SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_REWARD_ITEM(
                                            myself.getObjectTemplate().getNameId(), rewardNameId));
                        }
                        if (delete) {
                            selfDestroy(player, SM_SYSTEM_MESSAGE.STR_MSG_HOUSING_OBJECT_DELETE_USE_COUNT_FINAL(
                                    getObjectTemplate().getNameId()));
                        } else {
                            Integer cd = myself.getObjectTemplate().getCd();
                            DateTime repeatDate;
                            if (cd == null || cd == 0) {
                                // use once per day
                                DateTime tomorrow = DateTime.now().plusDays(1);
                                repeatDate = new DateTime(tomorrow.getYear(), tomorrow.getMonthOfYear(),
                                        tomorrow.getDayOfMonth(), 0, 0, 0);
                                cd = (int) (repeatDate.getMillis() - DateTime.now().getMillis()) / 1000;
                            }
                            player.getHouseObjectCooldownList().addHouseObjectCooldown(myself.getObjectId(),
                                    cd);
                        }
                    } finally {
                        player.getObserveController().removeObserver(observer);
                        warnAndRelease(player, null);
                    }
                }
            }, delay));
}

From source file:com.aionemu.gameserver.network.aion.serverpackets.SM_HOUSE_OWNER_INFO.java

License:Open Source License

@Override
protected void writeImpl(AionConnection con) {
    PacketLoggerService.getInstance().logPacketSM(this.getPacketName());
    if (activeHouse == null) {
        writeD(0);/*from   w ww .  j  a v  a2s  .  co m*/
        writeD(player.isBuildingInState(PlayerHouseOwnerFlags.BUY_STUDIO_ALLOWED) ? 355000 : 0); // studio building id
    } else {
        writeD(activeHouse.getAddress().getId());
        writeD(activeHouse.getBuilding().getId());
    }
    writeC(player.getBuildingOwnerStates());
    int townLevel = 1;
    if (activeHouse != null && activeHouse.getAddress().getTownId() != 0) {
        Town town = TownService.getInstance().getTownById(activeHouse.getAddress().getTownId());
        townLevel = town.getLevel();
    }
    writeC(townLevel);
    // Maintenance bill weeks left ?, if 0 maintenance date is in red
    if (activeHouse == null || !activeHouse.isFeePaid() || activeHouse.getHouseType() == HouseType.STUDIO) {
        writeC(0);
    } else {
        Timestamp nextPay = activeHouse.getNextPay();
        float diff;
        if (nextPay == null) {
            // See MaintenanceTask.updateMaintainedHouses()
            // all just obtained houses have fee paid true and time is null;
            // means they should pay next week
            diff = MaintenanceTask.getInstance().getPeriod();
        } else {
            long paytime = activeHouse.getNextPay().getTime();
            diff = paytime - ((long) MaintenanceTask.getInstance().getRunTime() * 1000);
        }
        if (diff < 0) {
            writeC(0);
        } else {
            int weeks = (int) (Math.round(diff / MaintenanceTask.getInstance().getPeriod()));
            if (DateTime.now().getDayOfWeek() != 7) // Hack for auction Day, client counts sunday to new week
            {
                weeks++;
            }
            writeC(weeks);
        }
    }
    writeH(0); // unk

    // Second house info ?
    writeD(0);
    writeD(0);
    writeC(0);
    writeC(0);
    writeC(0); // 3.5
    writeH(0); // 3.5 unk

}

From source file:com.aionemu.gameserver.services.HousingBidService.java

License:Open Source License

public boolean isBiddingAllowed() {
    DateTime now = DateTime.now();
    DateTime auctionEnd = new DateTime(((long) getRunTime() + timeProlonged * 60) * 1000);
    if (now.getDayOfWeek() == auctionEnd.getDayOfWeek() && auctionEnd.minusDays(1).isAfterNow()) {
        // Auction is unavailable from Sunday 12 PM to Monday
        return false;
    }/*w  w w. j  a v a 2 s .c  o  m*/
    return true;
}

From source file:com.aionemu.gameserver.services.HousingBidService.java

License:Open Source License

public boolean isRegisteringAllowed() {
    DateTime now = DateTime.now();
    DateTime registerEnd = new DateTime(registerDateExpr.getTimeAfter(now.toDate()));
    DateTime auctionEnd = new DateTime(((long) getRunTime() + timeProlonged * 60) * 1000);
    if (now.getDayOfWeek() == registerEnd.getDayOfWeek() && now.getHourOfDay() >= registerEnd.getHourOfDay()
            || (now.getDayOfWeek() == auctionEnd.getDayOfWeek()
                    && now.getHourOfDay() <= auctionEnd.getHourOfDay())) {
        return false;
    }/* ww  w .j av  a  2 s. c o  m*/
    return true;
}

From source file:com.aionemu.gameserver.services.instance.PvPArenaService.java

License:Open Source License

private static boolean isPvPArenaAvailable() {
    DateTime now = DateTime.now();
    int hour = now.getHourOfDay();
    int day = now.getDayOfWeek();
    if (day == 6 || day == 7) {
        return hour == 0 || hour == 1 || (hour >= 10 && hour <= 23);
    }/*from   w  w  w.  j av a 2 s  .c  o m*/
    return hour == 0 || hour == 1 || hour == 12 || hour == 13 || (hour >= 18 && hour <= 23);
}

From source file:com.aionemu.gameserver.services.instance.PvPArenaService.java

License:Open Source License

private static boolean isHarmonyArenaAvailable() {
    DateTime now = DateTime.now();
    int hour = now.getHourOfDay();
    int day = now.getDayOfWeek();
    if (day == 6) {
        return hour >= 10 || hour == 1 || hour == 2;
    } else if (day == 7) {
        return hour == 0 || hour == 1 || hour >= 10;
    } else {//from  ww w .  j av  a  2  s . com
        return (hour >= 10 && hour < 14) || (hour >= 18 && hour <= 23);
    }
}

From source file:com.aionemu.gameserver.services.instance.PvPArenaService.java

License:Open Source License

private static boolean isGloryArenaAvailable() {
    DateTime now = DateTime.now();
    int hour = now.getHourOfDay();
    int day = now.getDayOfWeek();
    return (day == 6 || day == 7) && hour >= 20 && hour < 22;
}

From source file:com.aionemu.gameserver.services.item.HouseObjectFactory.java

License:Open Source License

/**
 * For transferring item from inventory to house registry
 *//*from  ww w. j  a va  2  s  . co m*/
public static HouseObject<?> createNew(House house, ItemTemplate itemTemplate) {
    if (itemTemplate.getActions() == null) {
        throw new IncompleteArgumentException("template actions null");
    }
    SummonHouseObjectAction action = itemTemplate.getActions().getHouseObjectAction();
    if (action == null) {
        throw new IncompleteArgumentException("template actions miss SummonHouseObjectAction");
    }

    int objectTemplateId = action.getTemplateId();
    HouseObject<?> obj = createNew(house, IDFactory.getInstance().nextId(), objectTemplateId);
    if (obj.getObjectTemplate().getUseDays() > 0) {
        int expireEnd = (int) (DateTime.now().plusDays(obj.getObjectTemplate().getUseDays()).getMillis()
                / 1000);
        obj.setExpireTime(expireEnd);
    }
    return obj;
}

From source file:com.aionemu.gameserver.services.LoginEventService.java

License:Open Source License

private static Timestamp autoAddTimeColumn() {
    DateTime now = DateTime.now();
    DateTime repeatDate = new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 9, 0, 0);
    if (now.isAfter(repeatDate)) {
        repeatDate = repeatDate.plusHours(24);
    }/*w  w w .  j a va2s .c  o  m*/
    return new Timestamp(repeatDate.getMillis());
}