Use TimeUnit for time calculations

This commit is contained in:
P0nk
2021-09-10 18:56:03 +02:00
parent d52aedac4f
commit cdc17ef3dd
49 changed files with 268 additions and 161 deletions

View File

@@ -80,6 +80,8 @@ import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.Lock;
import static java.util.concurrent.TimeUnit.*;
public class Server {
private static final Logger log = LoggerFactory.getLogger(Server.class);
private static Server instance = null;
@@ -551,7 +553,7 @@ public class Server {
return;
}
long timeClear = System.currentTimeMillis() - 14 * 24 * 60 * 60 * 1000;
long timeClear = System.currentTimeMillis() - DAYS.toMillis(14);
try (PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode WHERE expiration <= ?")) {
ps.setLong(1, timeClear);
@@ -939,20 +941,20 @@ public class Server {
long timeLeft = getTimeLeftForNextHour();
tMan.register(new CharacterDiseaseTask(), YamlConfig.config.server.UPDATE_INTERVAL, YamlConfig.config.server.UPDATE_INTERVAL);
tMan.register(new ReleaseLockTask(), 2 * 60 * 1000, 2 * 60 * 1000);
tMan.register(new ReleaseLockTask(), MINUTES.toMillis(2), MINUTES.toMillis(2));
tMan.register(new CouponTask(), YamlConfig.config.server.COUPON_INTERVAL, timeLeft);
tMan.register(new RankingCommandTask(), 5 * 60 * 1000, 5 * 60 * 1000);
tMan.register(new RankingCommandTask(), MINUTES.toMillis(5), MINUTES.toMillis(5));
tMan.register(new RankingLoginTask(), YamlConfig.config.server.RANKING_INTERVAL, timeLeft);
tMan.register(new LoginCoordinatorTask(), 60 * 60 * 1000, timeLeft);
tMan.register(new EventRecallCoordinatorTask(), 60 * 60 * 1000, timeLeft);
tMan.register(new LoginStorageTask(), 2 * 60 * 1000, 2 * 60 * 1000);
tMan.register(new DueyFredrickTask(), 60 * 60 * 1000, timeLeft);
tMan.register(new InvitationTask(), 30 * 1000, 30 * 1000);
tMan.register(new LoginCoordinatorTask(), HOURS.toMillis(1), timeLeft);
tMan.register(new EventRecallCoordinatorTask(), HOURS.toMillis(1), timeLeft);
tMan.register(new LoginStorageTask(), MINUTES.toMillis(2), MINUTES.toMillis(2));
tMan.register(new DueyFredrickTask(), HOURS.toMillis(1), timeLeft);
tMan.register(new InvitationTask(), SECONDS.toMillis(30), SECONDS.toMillis(30));
tMan.register(new RespawnTask(), YamlConfig.config.server.RESPAWN_INTERVAL, YamlConfig.config.server.RESPAWN_INTERVAL);
timeLeft = getTimeLeftForNextDay();
ExpeditionBossLog.resetBossLogTable();
tMan.register(new BossLogTask(), 24 * 60 * 60 * 1000, timeLeft);
tMan.register(new BossLogTask(), DAYS.toMillis(1), timeLeft);
}
public static void main(String[] args) {

View File

@@ -55,6 +55,8 @@ import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
import static java.util.concurrent.TimeUnit.*;
public final class Channel {
private static final Logger log = LoggerFactory.getLogger(Channel.class);
private static final int BASE_PORT = 7575;
@@ -865,7 +867,7 @@ public final class Channel {
ongoingStartTime = System.currentTimeMillis();
if (weddingId != null) {
ScheduledFuture<?> weddingTask = TimerManager.getInstance().schedule(() -> closeOngoingWedding(cathedral), YamlConfig.config.server.WEDDING_RESERVATION_TIMEOUT * 60 * 1000);
ScheduledFuture<?> weddingTask = TimerManager.getInstance().schedule(() -> closeOngoingWedding(cathedral), MINUTES.toMillis(YamlConfig.config.server.WEDDING_RESERVATION_TIMEOUT));
if (cathedral) {
cathedralReservationTask = weddingTask;
@@ -904,25 +906,25 @@ public final class Channel {
}
byte mode = 0;
if (leftTime / (60 * 1000) > 0) {
if (leftTime / (MINUTES.toMillis(1)) > 0) {
mode++; //counts minutes
if (leftTime / (60 * 60 * 1000) > 0) {
if (leftTime / (HOURS.toMillis(1)) > 0) {
mode++; //counts hours
}
}
switch (mode) {
case 2:
int hours = (int) ((leftTime / (1000 * 60 * 60)));
int hours = (int) ((leftTime / (HOURS.toMillis(1))));
str.append(hours + " hours, ");
case 1:
int minutes = (int) ((leftTime / (1000 * 60)) % 60);
int minutes = (int) ((leftTime / (MINUTES.toMillis(1))) % 60);
str.append(minutes + " minutes, ");
default:
int seconds = (int) (leftTime / 1000) % 60;
int seconds = (int) (leftTime / SECONDS.toMillis(1)) % 60;
str.append(seconds + " seconds");
}
@@ -934,7 +936,7 @@ public final class Channel {
}
public static long getRelativeWeddingTicketExpireTime(int resSlot) {
return (resSlot * YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000);
return MINUTES.toMillis((long) resSlot * YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL);
}
public String getWeddingReservationTimeLeft(Integer weddingId) {
@@ -962,7 +964,7 @@ public final class Channel {
return venue + " - RIGHT NOW";
}
return venue + " - " + getTimeLeft(ongoingStartTime + (resStatus * YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000)) + " from now";
return venue + " - " + getTimeLeft(ongoingStartTime + MINUTES.toMillis((long) resStatus * YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL)) + " from now";
} finally {
lock.unlock();
}

View File

@@ -48,6 +48,9 @@ import java.awt.*;
import java.util.List;
import java.util.*;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;
public abstract class AbstractDealDamageHandler extends AbstractPacketHandler {
public static class AttackInfo {
@@ -302,9 +305,11 @@ public abstract class AbstractDealDamageHandler extends AbstractPacketHandler {
}
}
} else if (attack.skill == FPArchMage.FIRE_DEMON) {
monster.setTempEffectiveness(Element.ICE, ElementalEffectiveness.WEAK, SkillFactory.getSkill(FPArchMage.FIRE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(FPArchMage.FIRE_DEMON))).getDuration() * 1000);
long duration = SECONDS.toMillis(SkillFactory.getSkill(FPArchMage.FIRE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(FPArchMage.FIRE_DEMON))).getDuration());
monster.setTempEffectiveness(Element.ICE, ElementalEffectiveness.WEAK, duration);
} else if (attack.skill == ILArchMage.ICE_DEMON) {
monster.setTempEffectiveness(Element.FIRE, ElementalEffectiveness.WEAK, SkillFactory.getSkill(ILArchMage.ICE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(ILArchMage.ICE_DEMON))).getDuration() * 1000);
long duration = SECONDS.toMillis(SkillFactory.getSkill(ILArchMage.ICE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(ILArchMage.ICE_DEMON))).getDuration());
monster.setTempEffectiveness(Element.FIRE, ElementalEffectiveness.WEAK, duration);
} else if (attack.skill == Outlaw.HOMING_BEACON || attack.skill == Corsair.BULLSEYE) {
StatEffect beacon = SkillFactory.getSkill(attack.skill).getEffect(player.getSkillLevel(attack.skill));
beacon.applyBeaconBuff(player, monster.getObjectId());
@@ -324,7 +329,8 @@ public abstract class AbstractDealDamageHandler extends AbstractPacketHandler {
Skill snowCharge = SkillFactory.getSkill(Aran.SNOW_CHARGE);
if (totDamageToOneMonster > 0) {
MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, snowCharge.getEffect(player.getSkillLevel(snowCharge)).getX()), snowCharge, null, false);
monster.applyStatus(player, monsterStatusEffect, false, snowCharge.getEffect(player.getSkillLevel(snowCharge)).getY() * 1000);
long duration = SECONDS.toMillis(snowCharge.getEffect(player.getSkillLevel(snowCharge)).getY());
monster.applyStatus(player, monsterStatusEffect, false, duration);
}
}
}
@@ -332,21 +338,24 @@ public abstract class AbstractDealDamageHandler extends AbstractPacketHandler {
Skill hamstring = SkillFactory.getSkill(Bowmaster.HAMSTRING);
if (hamstring.getEffect(player.getSkillLevel(hamstring)).makeChanceResult()) {
MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, hamstring.getEffect(player.getSkillLevel(hamstring)).getX()), hamstring, null, false);
monster.applyStatus(player, monsterStatusEffect, false, hamstring.getEffect(player.getSkillLevel(hamstring)).getY() * 1000);
long duration = SECONDS.toMillis(hamstring.getEffect(player.getSkillLevel(hamstring)).getY());
monster.applyStatus(player, monsterStatusEffect, false, duration);
}
}
if (player.getBuffedValue(BuffStat.SLOW) != null) {
Skill slow = SkillFactory.getSkill(Evan.SLOW);
if (slow.getEffect(player.getSkillLevel(slow)).makeChanceResult()) {
MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, slow.getEffect(player.getSkillLevel(slow)).getX()), slow, null, false);
monster.applyStatus(player, monsterStatusEffect, false, slow.getEffect(player.getSkillLevel(slow)).getY() * 60 * 1000);
long duration = MINUTES.toMillis(slow.getEffect(player.getSkillLevel(slow)).getY());
monster.applyStatus(player, monsterStatusEffect, false, duration);
}
}
if (player.getBuffedValue(BuffStat.BLIND) != null) {
Skill blind = SkillFactory.getSkill(Marksman.BLIND);
if (blind.getEffect(player.getSkillLevel(blind)).makeChanceResult()) {
MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.ACC, blind.getEffect(player.getSkillLevel(blind)).getX()), blind, null, false);
monster.applyStatus(player, monsterStatusEffect, false, blind.getEffect(player.getSkillLevel(blind)).getY() * 1000);
long duration = SECONDS.toMillis(blind.getEffect(player.getSkillLevel(blind)).getY());
monster.applyStatus(player, monsterStatusEffect, false, duration);
}
}
if (job == 121 || job == 122) {

View File

@@ -47,6 +47,8 @@ import java.util.Calendar;
import java.util.List;
import java.util.Map;
import static java.util.concurrent.TimeUnit.DAYS;
public final class CashOperationHandler extends AbstractPacketHandler {
@Override
@@ -418,7 +420,7 @@ public final class CashOperationHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0));
c.enableCSActions();
return;
} else if (c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30 * 24 * 60 * 60 * 1000) > Calendar.getInstance().getTimeInMillis()) {
} else if (c.getTempBanCalendar() != null && (c.getTempBanCalendar().getTimeInMillis() + DAYS.toMillis(30)) > Calendar.getInstance().getTimeInMillis()) {
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0));
c.enableCSActions();
return;

View File

@@ -35,6 +35,8 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import static java.util.concurrent.TimeUnit.SECONDS;
public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
@Override
@@ -166,7 +168,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
return;
} else {
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000);
chr.addCooldown(attack.skill, currentServerTime(), SECONDS.toMillis(effect_.getCooldown()));
}
}
}

View File

@@ -63,7 +63,7 @@ public final class ItemRewardHandler extends AbstractPacketHandler {
if (ItemConstants.getInventoryType(reward.itemid) == InventoryType.EQUIP) {
final Item item = ii.getEquipById(reward.itemid);
if (reward.period != -1) {
item.setExpiration(currentServerTime() + (reward.period * 60 * 60 * 10));
item.setExpiration(currentServerTime() + reward.period * 60 * 60 * 10);
}
InventoryManipulator.addFromDrop(c, item, false);
} else {

View File

@@ -34,6 +34,8 @@ import net.packet.Packet;
import server.StatEffect;
import tools.PacketCreator;
import static java.util.concurrent.TimeUnit.SECONDS;
public final class MagicDamageHandler extends AbstractDealDamageHandler {
@Override
public final void handlePacket(InPacket p, Client c) {
@@ -72,7 +74,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler {
return;
} else {
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000);
chr.addCooldown(attack.skill, currentServerTime(), SECONDS.toMillis(effect_.getCooldown()));
}
}
applyAttack(attack, chr, effect.getAttackCount());

View File

@@ -39,6 +39,8 @@ import server.StatEffect;
import tools.PacketCreator;
import tools.Randomizer;
import static java.util.concurrent.TimeUnit.SECONDS;
public final class RangedAttackHandler extends AbstractDealDamageHandler {
@@ -214,7 +216,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
return;
} else {
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000);
chr.addCooldown(attack.skill, currentServerTime(), SECONDS.toMillis(effect_.getCooldown()));
}
}
}

View File

@@ -36,6 +36,8 @@ import tools.PacketCreator;
import java.awt.*;
import static java.util.concurrent.TimeUnit.SECONDS;
public final class SpecialMoveHandler extends AbstractPacketHandler {
@Override
@@ -82,7 +84,7 @@ public final class SpecialMoveHandler extends AbstractPacketHandler {
}
c.sendPacket(PacketCreator.skillCooldown(skillid, cooldownTime));
chr.addCooldown(skillid, currentServerTime(), cooldownTime * 1000);
chr.addCooldown(skillid, currentServerTime(), SECONDS.toMillis(cooldownTime));
}
}
if (skillid == Hero.MONSTER_MAGNET || skillid == Paladin.MONSTER_MAGNET || skillid == DarkKnight.MONSTER_MAGNET) { // Monster Magnet

View File

@@ -31,6 +31,8 @@ import tools.PacketCreator;
import java.sql.*;
import java.util.Calendar;
import static java.util.concurrent.TimeUnit.DAYS;
/**
* @author Ronan
* @author Ubaware
@@ -54,7 +56,7 @@ public final class TransferNameHandler extends AbstractPacketHandler {
if (chr.getLevel() < 10) {
c.sendPacket(PacketCreator.sendNameTransferRules(4));
return;
} else if (c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30 * 24 * 60 * 60 * 1000) < Calendar.getInstance().getTimeInMillis()) {
} else if (c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + DAYS.toMillis(30) < Calendar.getInstance().getTimeInMillis()) {
c.sendPacket(PacketCreator.sendNameTransferRules(2));
return;
}

View File

@@ -50,6 +50,9 @@ import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.SECONDS;
public final class UseCashItemHandler extends AbstractPacketHandler {
@Override
@@ -231,7 +234,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
}
if (period > 0) {
eq.setExpiration(currentServerTime() + (period * 60 * 60 * 24 * 1000));
eq.setExpiration(currentServerTime() + DAYS.toMillis(period));
}
// double-remove found thanks to BHB
@@ -444,7 +447,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
final int world = c.getWorld();
Server.getInstance().broadcastMessage(world, PacketCreator.getAvatarMega(player, medal, c.getChannel(), itemId, strLines, (p.readByte() != 0)));
TimerManager.getInstance().schedule(() -> Server.getInstance().broadcastMessage(world, PacketCreator.byeAvatarMega()), 1000 * 10);
TimerManager.getInstance().schedule(() -> Server.getInstance().broadcastMessage(world, PacketCreator.byeAvatarMega()), SECONDS.toMillis(10));
remove(c, position, itemId);
} else if (itemType == 540) {
p.readByte();
@@ -594,7 +597,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
}
client.sendPacket(PacketCreator.enableActions());
}, 1000 * 3);
}, SECONDS.toMillis(3));
} else {
System.out.println("NEW CASH ITEM: " + itemType + "\n" + p);
c.sendPacket(PacketCreator.enableActions());

View File

@@ -34,6 +34,8 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import static java.util.concurrent.TimeUnit.MINUTES;
/**
* @author Ronan
*/
@@ -61,7 +63,7 @@ public class LoginBypassCoordinator {
long expireTime = (pic ? YamlConfig.config.server.BYPASS_PIC_EXPIRATION : YamlConfig.config.server.BYPASS_PIN_EXPIRATION);
if (expireTime > 0) {
Pair<Hwid, Integer> entry = new Pair<>(hwid, accId);
expireTime = Server.getInstance().getCurrentTime() + expireTime * 60 * 1000;
expireTime = Server.getInstance().getCurrentTime() + MINUTES.toMillis(expireTime);
try {
pic |= loginBypass.get(entry).getLeft();
expireTime = Math.max(loginBypass.get(entry).getRight(), expireTime);
@@ -95,7 +97,7 @@ public class LoginBypassCoordinator {
for (Entry<Pair<Hwid, Integer>, Pair<Boolean, Long>> e : loginBypass.entrySet()) {
if (onlineAccounts.contains(e.getKey().getRight())) {
long expireTime = timeNow + 2 * 60 * 1000;
long expireTime = timeNow + MINUTES.toMillis(2);
if (expireTime > e.getValue().getRight()) {
loginBypass.replace(e.getKey(), new Pair<>(e.getValue().getLeft(), expireTime));
}

View File

@@ -68,6 +68,8 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import static java.util.concurrent.TimeUnit.*;
/**
* @author kevintjuh93
* @author Ronan - thread-oriented (world schedules + guild queue + marriages + party chars)
@@ -178,22 +180,22 @@ public class World {
}
TimerManager tman = TimerManager.getInstance();
petsSchedule = tman.register(new PetFullnessTask(this), 60 * 1000, 60 * 1000);
srvMessagesSchedule = tman.register(new ServerMessageTask(this), 10 * 1000, 10 * 1000);
mountsSchedule = tman.register(new MountTirednessTask(this), 60 * 1000, 60 * 1000);
merchantSchedule = tman.register(new HiredMerchantTask(this), 10 * 60 * 1000, 10 * 60 * 1000);
timedMapObjectsSchedule = tman.register(new TimedMapObjectTask(this), 60 * 1000, 60 * 1000);
charactersSchedule = tman.register(new CharacterAutosaverTask(this), 60 * 60 * 1000, 60 * 60 * 1000);
marriagesSchedule = tman.register(new WeddingReservationTask(this), YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000, YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000);
mapOwnershipSchedule = tman.register(new MapOwnershipTask(this), 20 * 1000, 20 * 1000);
fishingSchedule = tman.register(new FishingTask(this), 10 * 1000, 10 * 1000);
partySearchSchedule = tman.register(new PartySearchTask(this), 10 * 1000, 10 * 1000);
timeoutSchedule = tman.register(new TimeoutTask(this), 10 * 1000, 10 * 1000);
petsSchedule = tman.register(new PetFullnessTask(this), MINUTES.toMillis(1), MINUTES.toMillis(1));
srvMessagesSchedule = tman.register(new ServerMessageTask(this), SECONDS.toMillis(10), SECONDS.toMillis(10));
mountsSchedule = tman.register(new MountTirednessTask(this), MINUTES.toMillis(1), MINUTES.toMillis(1));
merchantSchedule = tman.register(new HiredMerchantTask(this), 10 * MINUTES.toMillis(1), 10 * MINUTES.toMillis(1));
timedMapObjectsSchedule = tman.register(new TimedMapObjectTask(this), MINUTES.toMillis(1), MINUTES.toMillis(1));
charactersSchedule = tman.register(new CharacterAutosaverTask(this), HOURS.toMillis(1), HOURS.toMillis(1));
marriagesSchedule = tman.register(new WeddingReservationTask(this), MINUTES.toMillis(YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL), MINUTES.toMillis(YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL));
mapOwnershipSchedule = tman.register(new MapOwnershipTask(this), SECONDS.toMillis(20), SECONDS.toMillis(20));
fishingSchedule = tman.register(new FishingTask(this), SECONDS.toMillis(10), SECONDS.toMillis(10));
partySearchSchedule = tman.register(new PartySearchTask(this), SECONDS.toMillis(10), SECONDS.toMillis(10));
timeoutSchedule = tman.register(new TimeoutTask(this), SECONDS.toMillis(10), SECONDS.toMillis(10));
if (YamlConfig.config.server.USE_FAMILY_SYSTEM) {
long timeLeft = Server.getTimeLeftForNextDay();
FamilyDailyResetTask.resetEntitlementUsage(this);
tman.register(new FamilyDailyResetTask(this), 24 * 60 * 60 * 1000, timeLeft);
tman.register(new FamilyDailyResetTask(this), DAYS.toMillis(1), timeLeft);
}
}
@@ -394,7 +396,7 @@ public class World {
}
public int getTransportationTime(int travelTime) {
return (int) Math.ceil(travelTime / travelrate);
return (int) Math.ceil((double) travelTime / travelrate);
}
public int getFishingRate() {
@@ -1600,7 +1602,7 @@ public class World {
activeMerchantsLock.lock();
try {
int initProc;
if (Server.getInstance().getCurrentTime() - merchantUpdate > 5 * 60 * 1000) {
if (Server.getInstance().getCurrentTime() - merchantUpdate > MINUTES.toMillis(5)) {
initProc = 1;
} else {
initProc = 0;