Add QueueHolder API
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package us.ajg0702.queue.common;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import us.ajg0702.queue.api.players.QueuePlayer;
|
||||
import us.ajg0702.queue.api.queueholders.QueueHolder;
|
||||
import us.ajg0702.queue.api.queues.QueueServer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class DefaultQueueHolder extends QueueHolder {
|
||||
|
||||
List<QueuePlayer> queue = new CopyOnWriteArrayList<>();
|
||||
|
||||
public DefaultQueueHolder(QueueServer queueServer) {
|
||||
super(queueServer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return "default";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addPlayer(QueuePlayer player) {
|
||||
queue.add(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addPlayer(QueuePlayer player, int position) {
|
||||
queue.add(position, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePlayer(QueuePlayer player) {
|
||||
queue.remove(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueuePlayer findPlayer(UUID uuid) {
|
||||
for(QueuePlayer queuePlayer : queue) {
|
||||
if(queuePlayer.getUniqueId().toString().equals(uuid.toString())) {
|
||||
return queuePlayer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueuePlayer findPlayer(String name) {
|
||||
for(QueuePlayer queuePlayer : queue) {
|
||||
if(queuePlayer.getName().equalsIgnoreCase(name)) {
|
||||
return queuePlayer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getQueueSize() {
|
||||
return queue.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QueuePlayer> getAllPlayers() {
|
||||
return ImmutableList.copyOf(queue);
|
||||
}
|
||||
}
|
||||
@@ -200,6 +200,8 @@ public class QueueMain extends AjQueueAPI {
|
||||
|
||||
constructMessages();
|
||||
|
||||
getQueueHolderRegistry().register("default", DefaultQueueHolder.class);
|
||||
|
||||
logic = logicGetter.constructLogic();
|
||||
aliasManager = logicGetter.constructAliasManager(config);
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package us.ajg0702.queue.common.queues;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import us.ajg0702.queue.api.AjQueueAPI;
|
||||
import us.ajg0702.queue.api.events.PositionChangeEvent;
|
||||
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
||||
import us.ajg0702.queue.api.players.QueuePlayer;
|
||||
import us.ajg0702.queue.api.queueholders.QueueHolder;
|
||||
import us.ajg0702.queue.api.queues.Balancer;
|
||||
import us.ajg0702.queue.api.queues.QueueServer;
|
||||
import us.ajg0702.queue.api.server.AdaptedServer;
|
||||
@@ -17,7 +19,6 @@ import us.ajg0702.queue.common.utils.Debug;
|
||||
import us.ajg0702.utils.common.Messages;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class QueueServerImpl implements QueueServer {
|
||||
|
||||
@@ -27,7 +28,7 @@ public class QueueServerImpl implements QueueServer {
|
||||
|
||||
private final List<AdaptedServer> servers;
|
||||
|
||||
private final List<QueuePlayer> queue = new CopyOnWriteArrayList<>();
|
||||
private final QueueHolder queueHolder = AjQueueAPI.getQueueHolderRegistry().getQueueHolder(this);
|
||||
|
||||
private List<Integer> supportedProtocols = new ArrayList<>();
|
||||
|
||||
@@ -123,7 +124,7 @@ public class QueueServerImpl implements QueueServer {
|
||||
|
||||
@Override
|
||||
public ImmutableList<QueuePlayer> getQueue() {
|
||||
return ImmutableList.copyOf(queue);
|
||||
return ImmutableList.copyOf(queueHolder.getAllPlayers());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -248,7 +249,7 @@ public class QueueServerImpl implements QueueServer {
|
||||
@Override
|
||||
public void removePlayer(QueuePlayer player) {
|
||||
main.getQueueManager().getSendingAttempts().remove(player);
|
||||
queue.remove(player);
|
||||
queueHolder.removePlayer(player);
|
||||
positionChange();
|
||||
}
|
||||
|
||||
@@ -266,12 +267,12 @@ public class QueueServerImpl implements QueueServer {
|
||||
|
||||
@Override
|
||||
public void addPlayer(QueuePlayer player, int position) {
|
||||
if(!player.getQueueServer().equals(this) || queue.contains(player)) return;
|
||||
if(!player.getQueueServer().equals(this) || queueHolder.findPlayer(player.getUniqueId()) != null) return;
|
||||
|
||||
if(position >= 0) {
|
||||
queue.add(position, player);
|
||||
queueHolder.addPlayer(player, position);
|
||||
} else {
|
||||
queue.add(player);
|
||||
queueHolder.addPlayer(player);
|
||||
}
|
||||
positionChange();
|
||||
}
|
||||
@@ -328,12 +329,7 @@ public class QueueServerImpl implements QueueServer {
|
||||
|
||||
@Override
|
||||
public QueuePlayer findPlayer(String player) {
|
||||
for(QueuePlayer queuePlayer : queue) {
|
||||
if(queuePlayer.getName().equalsIgnoreCase(player)) {
|
||||
return queuePlayer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return queueHolder.findPlayer(player);
|
||||
}
|
||||
@Override
|
||||
public QueuePlayer findPlayer(AdaptedPlayer player) {
|
||||
@@ -341,12 +337,7 @@ public class QueueServerImpl implements QueueServer {
|
||||
}
|
||||
@Override
|
||||
public QueuePlayer findPlayer(UUID uuid) {
|
||||
for(QueuePlayer queuePlayer : queue) {
|
||||
if(queuePlayer.getUniqueId().toString().equals(uuid.toString())) {
|
||||
return queuePlayer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return queueHolder.findPlayer(uuid);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -369,9 +360,14 @@ public class QueueServerImpl implements QueueServer {
|
||||
return balancer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueueHolder getQueueHolder() {
|
||||
return queueHolder;
|
||||
}
|
||||
|
||||
private void positionChange() {
|
||||
main.getTaskManager().runNow(
|
||||
() -> queue.forEach(queuePlayer -> {
|
||||
() -> queueHolder.getAllPlayers().forEach(queuePlayer -> {
|
||||
if(((QueuePlayerImpl) queuePlayer).lastPosition != queuePlayer.getPosition()) {
|
||||
main.call(new PositionChangeEvent(queuePlayer));
|
||||
}
|
||||
|
||||
@@ -290,6 +290,11 @@ require-queueserver-permission: false
|
||||
# Default: 10
|
||||
max-tries: 10
|
||||
|
||||
# What QueueHolder should we use?
|
||||
# By default, the only QueueHolder available is 'default'
|
||||
# But more may be available via addons (registered via the API)
|
||||
queue-holder: default
|
||||
|
||||
|
||||
# Should we enable the ajqueue.make-room permission?
|
||||
# The make-room permission will force there to be room in a server.
|
||||
@@ -377,7 +382,7 @@ debug: false
|
||||
|
||||
|
||||
# Don't touch this number please
|
||||
config-version: 42
|
||||
config-version: 43
|
||||
|
||||
|
||||
# This is ONLY here so that they can be moved to messages.yml. Please edit these in messages.yml!
|
||||
|
||||
Reference in New Issue
Block a user