mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2024-12-28 11:04:21 +00:00
parent
d23796dade
commit
ddc258ed11
2 changed files with 16 additions and 16 deletions
|
@ -261,12 +261,12 @@ public interface IUser {
|
|||
* period are removed from queue and therefore not returned here. The maximum size of this
|
||||
* queue is determined by {@link ISettings#getTpaMaxRequests()}.
|
||||
*
|
||||
* @param inform true if the underlying {@link IUser} should be informed if a request expires during iteration.
|
||||
* @param performExpirations true if this method should not spend time validating time for all items in the queue and just return the first item in the queue.
|
||||
* @param excludeHere true if /tphere requests should be ignored in fetching the next tpa request.
|
||||
* @param inform true if the underlying {@link IUser} should be informed if a request expires during iteration.
|
||||
* @param ignoreExpirations true if this method should not process expirations for the entire queue and stop execution on the first unexpired request.
|
||||
* @param excludeHere true if /tphere requests should be ignored in fetching the next tpa request.
|
||||
* @return A {@link TpaRequest} corresponding to the next available request or null if no valid request is present.
|
||||
*/
|
||||
@Nullable TpaRequest getNextTpaRequest(boolean inform, boolean performExpirations, boolean excludeHere);
|
||||
@Nullable TpaRequest getNextTpaRequest(boolean inform, boolean ignoreExpirations, boolean excludeHere);
|
||||
|
||||
/**
|
||||
* Whether or not this {@link IUser} has any valid TPA requests in queue.
|
||||
|
|
|
@ -34,10 +34,11 @@ import org.bukkit.potion.PotionEffectType;
|
|||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -349,11 +350,8 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
|||
// Handle max queue size
|
||||
teleportRequestQueue.remove(request.getName());
|
||||
if (teleportRequestQueue.size() >= ess.getSettings().getTpaMaxRequests()) {
|
||||
String lastKey = null;
|
||||
for (Map.Entry<String, TpaRequest> entry : teleportRequestQueue.entrySet()) {
|
||||
lastKey = entry.getKey();
|
||||
}
|
||||
teleportRequestQueue.remove(lastKey);
|
||||
final List<String> keys = new ArrayList<>(teleportRequestQueue.keySet());
|
||||
teleportRequestQueue.remove(keys.get(keys.size() - 1));
|
||||
}
|
||||
|
||||
// Add request to queue
|
||||
|
@ -402,22 +400,24 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
|||
}
|
||||
|
||||
@Override
|
||||
public TpaRequest getNextTpaRequest(boolean inform, boolean performExpirations, boolean excludeHere) {
|
||||
public TpaRequest getNextTpaRequest(boolean inform, boolean ignoreExpirations, boolean excludeHere) {
|
||||
if (teleportRequestQueue.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final long timeout = ess.getSettings().getTpaAcceptCancellation();
|
||||
final Iterator<Map.Entry<String, TpaRequest>> iterator = teleportRequestQueue.entrySet().iterator();
|
||||
final List<String> keys = new ArrayList<>(teleportRequestQueue.keySet());
|
||||
Collections.reverse(keys);
|
||||
|
||||
TpaRequest nextRequest = null;
|
||||
while (iterator.hasNext()) {
|
||||
final TpaRequest request = iterator.next().getValue();
|
||||
for (final String key : keys) {
|
||||
final TpaRequest request = teleportRequestQueue.get(key);
|
||||
if (timeout < 1 || (System.currentTimeMillis() - request.getTime()) <= TimeUnit.SECONDS.toMillis(timeout)) {
|
||||
if (excludeHere && request.isHere()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (performExpirations) {
|
||||
if (ignoreExpirations) {
|
||||
return request;
|
||||
} else if (nextRequest == null) {
|
||||
nextRequest = request;
|
||||
|
@ -426,7 +426,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
|||
if (inform) {
|
||||
sendMessage(tl("requestTimedOutFrom", ess.getUser(request.getRequesterUuid()).getDisplayName()));
|
||||
}
|
||||
iterator.remove();
|
||||
teleportRequestQueue.remove(key);
|
||||
}
|
||||
}
|
||||
return nextRequest;
|
||||
|
|
Loading…
Reference in a new issue