From 2c7a3a8c3f242d6460d0b157a683149655ff6021 Mon Sep 17 00:00:00 2001
From: Warrior <50800980+Warriorrrr@users.noreply.github.com>
Date: Sun, 14 Jul 2024 20:18:44 +0200
Subject: [PATCH] Update pause command
---
pom.xml | 15 ++--
src/main/java/net/earthmc/queue/Queue.java | 35 +++++++-
.../java/net/earthmc/queue/QueuePlugin.java | 33 ++++----
.../earthmc/queue/commands/PauseCommand.java | 83 ++++++++-----------
.../earthmc/queue/commands/QueueCommand.java | 7 +-
5 files changed, 95 insertions(+), 78 deletions(-)
diff --git a/pom.xml b/pom.xml
index 70a881d..7284a21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,13 +25,13 @@
com.velocitypowered
velocity-api
- 3.1.2-SNAPSHOT
+ 3.3.0-SNAPSHOT
provided
- mysql
- mysql-connector-java
- 8.0.30
+ com.mysql
+ mysql-connector-j
+ 8.0.31
org.junit.jupiter
@@ -81,14 +81,13 @@
- com.zaxxer.hikari
- net.earthmc.queue.libs.hikari
+ com.mysql
+ net.earthmc.queue.libs.mysql
- com.zaxxer:HikariCP
- mysql:mysql-connector-java
+ com.mysql:mysql-connector-j
diff --git a/src/main/java/net/earthmc/queue/Queue.java b/src/main/java/net/earthmc/queue/Queue.java
index 5878fc9..474b450 100644
--- a/src/main/java/net/earthmc/queue/Queue.java
+++ b/src/main/java/net/earthmc/queue/Queue.java
@@ -7,6 +7,10 @@
import net.earthmc.queue.object.Ratio;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.Style;
+import net.kyori.adventure.text.format.TextDecoration;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.VisibleForTesting;
import java.time.Duration;
@@ -38,6 +42,7 @@ public class Queue {
private int maxPlayers;
private boolean paused;
+ private String pauseReason;
private Instant unpauseTime = Instant.MAX;
private Instant lastSendTime = Instant.EPOCH;
private int failedAttempts;
@@ -167,7 +172,7 @@ public void sendProgressMessages(SubQueue queue) {
player.sendMessage(Component.text("You are currently in position ", NamedTextColor.YELLOW).append(Component.text(player.position() + 1, NamedTextColor.GREEN).append(Component.text(" of ", NamedTextColor.YELLOW).append(Component.text(queue.players().size(), NamedTextColor.GREEN).append(Component.text(" for " + formattedName + ".", NamedTextColor.YELLOW))))));
if (paused)
- player.sendMessage(Component.text("The queue you are currently in is paused.", NamedTextColor.GRAY));
+ sendPausedQueueMessage(player);
}
}
@@ -215,8 +220,9 @@ public void enqueue(QueuedPlayer player, boolean confirmation) {
if (!player.priority().message().equals(Component.empty()))
player.sendMessage(player.priority().message());
- if (paused)
- player.sendMessage(Component.text("The queue you are currently in is paused.", NamedTextColor.GRAY));
+ if (paused) {
+ sendPausedQueueMessage(player);
+ }
}
public int insertionIndex(QueuedPlayer player, SubQueue subQueue) {
@@ -294,19 +300,40 @@ public boolean paused() {
}
public void pause(boolean paused) {
- pause(paused, Instant.MAX);
+ pause(paused, Instant.MAX, null);
}
public void pause(boolean paused, Instant unpauseTime) {
+ pause(paused, unpauseTime, null);
+ }
+
+ public void pause(boolean paused, Instant unpauseTime, @Nullable String reason) {
this.paused = paused;
this.unpauseTime = unpauseTime;
+ this.pauseReason = reason;
this.failedAttempts = 0;
}
+ public void sendPausedQueueMessage(final QueuedPlayer player) {
+ if (!paused)
+ return;
+
+ player.sendMessage(Component.text("The queue you are currently in is paused.", NamedTextColor.GRAY));
+
+ if (pauseReason != null)
+ player.sendMessage(Component.text("Reason: ", NamedTextColor.GRAY).append(Component.text(pauseReason, Style.style(TextDecoration.ITALIC))));
+ }
+
+ @NotNull
public Instant unpauseTime() {
return this.unpauseTime;
}
+ @Nullable
+ public String pauseReason() {
+ return this.pauseReason;
+ }
+
@Override
public boolean equals(Object other) {
if (this == other)
diff --git a/src/main/java/net/earthmc/queue/QueuePlugin.java b/src/main/java/net/earthmc/queue/QueuePlugin.java
index 31dd552..edc1c32 100644
--- a/src/main/java/net/earthmc/queue/QueuePlugin.java
+++ b/src/main/java/net/earthmc/queue/QueuePlugin.java
@@ -70,7 +70,7 @@ public QueuePlugin(ProxyServer proxy, CommandManager commandManager, Logger logg
commandManager.register("joinqueue", new JoinCommand(this));
commandManager.register("leavequeue", new LeaveCommand());
- commandManager.register("pausequeue", new PauseCommand());
+ commandManager.register(PauseCommand.createCommand(this));
commandManager.register("queue", new QueueCommand(this));
}
@@ -330,21 +330,20 @@ public void loadPausedQueues() {
if (Files.exists(pausedQueuesPath)) {
@SuppressWarnings("UnstableApiUsage")
- Type type = new TypeToken