1
package l1j.server.server.model.gametime;
public class GameTime extends BaseTime {
protected static final long BASE_TIME_IN_MILLIS_REAL = 1751860800000L;
public GameTime() {
}
protected long getBaseTimeInMil() {
return BASE_TIME_IN_MILLIS_REAL;
}
protected int makeTime(long timeMillis) {
// 1. 차이값을 계산 (long 타입이라 매우 큼)
long diff = timeMillis - getBaseTimeInMil();
if (diff < 0L) diff = 0L;
// 2. 핵심: int 범위를 넘지 않도록 '순환' 시킴 (모듈로 연산)
// 리니지 게임 시간의 최대 주기(예: 1년치 밀리초)로 나눠버리면
// 숫자가 무한히 커지지 않고 다시 0부터 흐릅니다.
// 여기서는 안전하게 int의 최대치 근처에서 계속 순환하도록 설계합니다.
long gameTimeTicks = (diff * 6L / 1000L);
// 21억(int 한계)이 넘으면 다시 0부터 시작하게 만듦 (나머지 계산)
int finalTime = (int) (gameTimeTicks % 2147483647L);
int adjustment = finalTime % 3;
return finalTime - adjustment;
}
}For immediate assistance, please email our customer support: [email protected]