Clean up tempBanCalendar

This commit is contained in:
P0nk
2024-09-29 21:37:33 +02:00
parent e35060da2a
commit 988d898d6f
4 changed files with 8 additions and 13 deletions

View File

@@ -167,7 +167,6 @@ import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
@@ -191,7 +190,6 @@ import java.util.concurrent.locks.ReentrantLock;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;
@@ -10685,7 +10683,7 @@ public class Character extends AbstractCharacterObject {
public int checkWorldTransferEligibility() {
if (getLevel() < 20) {
return 2;
} else if (getClient().getTempBanCalendar() != null && getClient().getTempBanCalendar().getTimeInMillis() + (int) DAYS.toMillis(30) < Calendar.getInstance().getTimeInMillis()) {
} else if (client.wasRecentlyBanned()) {
return 3;
} else if (isMarried()) {
return 4;

View File

@@ -61,6 +61,8 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Calendar;
@@ -118,7 +120,6 @@ public class Client extends ChannelInboundHandlerAdapter {
private final Lock lock = new ReentrantLock(true);
private final Lock announcerLock = new ReentrantLock(true);
// thanks Masterrulax & try2hack for pointing out a bottleneck issue with shared locks, shavit for noticing an opportunity for improvement
private Calendar tempBanCalendar;
private long lastNpcClick;
private long lastPacket = System.currentTimeMillis();
@@ -500,8 +501,9 @@ public class Client extends ChannelInboundHandlerAdapter {
return ++failedLoginAttempts < MAX_FAILED_LOGIN_ATTEMPTS;
}
public Calendar getTempBanCalendar() {
return tempBanCalendar;
public boolean wasRecentlyBanned() {
Instant recentThreshold = Instant.now().minus(Duration.ofDays(30));
return account != null && account.bannedUntil() != null && account.bannedUntil().isAfter(recentThreshold);
}
public void updateHwid(Hwid hwid) {