Skip to content

Commit 9b4b14e

Browse files
do not let kicked players directly connect to the server and using uuids for kicked map
1 parent 1615cff commit 9b4b14e

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
plugin_version=3.0.11
1+
plugin_version=3.0.12
22
velocity_api_version=3.4.0-SNAPSHOT
33
minecraft_version=1.20.6

src/main/java/org/zeroBzeroT/anarchyqueue/Queue.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
// velocity api event docs:
2525
// https://jd.papermc.io/velocity/3.3.0/com/velocitypowered/api/event/package-summary.html
26-
// TODO: replace player objects with uuids
2726

2827
public class Queue {
2928
private final ComponentLogger log;
@@ -34,7 +33,7 @@ public class Queue {
3433

3534
private final Deque<Player> playerQueue;
3635

37-
private final HashMap<Player, Long> kickedPlayers;
36+
private final HashMap<UUID, Long> kickedPlayers;
3837

3938
/**
4039
* Initializes the queue.
@@ -91,9 +90,10 @@ public void onServerPreConnect(ServerPreConnectEvent event) {
9190
if (event.getPreviousServer() != null)
9291
return;
9392

94-
// Check if player is connecting to the queue server
95-
if (getSize() == 0 && event.getOriginalServer().getServerInfo().getName().equals(Config.queue)) {
96-
// If queue is empty, attempt passthrough
93+
// If queue is empty and player is not in the kicked list, attempt passthrough
94+
if (getSize() == 0 &&
95+
event.getOriginalServer().getServerInfo().getName().equals(Config.queue) &&
96+
!kickedPlayers.containsKey(event.getPlayer().getUniqueId())) {
9797
try {
9898
// Check target server reachability
9999
RegisteredServer serverTarget = getServer(Config.target);
@@ -167,7 +167,7 @@ public void onPlayerDisconnect(DisconnectEvent event) {
167167
Player player = event.getPlayer();
168168
if (playerQueue.contains(player)) {
169169
playerQueue.remove(player);
170-
kickedPlayers.remove(player);
170+
// Leave the players UUID in the kicked players to prevent fast relogs
171171
log.info(mm("<white>" + player.getUsername() + "<dark_aqua> disconnected and was removed from the <light_purple>queue<dark_aqua>."));
172172
}
173173
} finally {
@@ -196,7 +196,7 @@ private void KickOrRequeue(Player player, Component reason) {
196196
|| (!Config.kickOnBusy && textReason.contains("Too fast re-login, try with a little delay.")) // NCP
197197
) {
198198
// save the disconnection time
199-
kickedPlayers.put(player, Instant.now().getEpochSecond());
199+
kickedPlayers.put(player.getUniqueId(), Instant.now().getEpochSecond());
200200

201201
// send message
202202
player.sendMessage(mm("<gold>You were sent back to the queue for: <red>").append(reason).append(mm("<reset>")));
@@ -249,7 +249,7 @@ public void flushQueue() {
249249

250250
// try to find the first player that got not kicked recently
251251
for (Player testPlayer : playerQueue) {
252-
if (kickedPlayers.containsKey(testPlayer))
252+
if (kickedPlayers.containsKey(testPlayer.getUniqueId()))
253253
continue;
254254

255255
currPlayer = testPlayer;
@@ -284,7 +284,7 @@ public void flushQueue() {
284284
} catch (InterruptedException | ExecutionException e) {
285285
log.error(mm("<white>" + p.getUsername() + "s<red> connection to server <aqua>" + Config.target + "<red> failed with an exception: " + e.getMessage()));
286286
// server down?
287-
kickedPlayers.put(finalCurrPlayer, Instant.now().getEpochSecond());
287+
kickedPlayers.put(finalCurrPlayer.getUniqueId(), Instant.now().getEpochSecond());
288288
}
289289
},
290290
// player is in the queue, but not connected to the queue server

0 commit comments

Comments
 (0)