From 6dd2cf7fb1c118e905b319092e1c2f5f7350d01e Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Tue, 7 Sep 2021 15:37:48 -0700 Subject: [PATCH] Added updater --- api/build.gradle.kts | 2 +- .../ajg0702/queue/api/util/QueueLogger.java | 4 +- build.gradle.kts | 2 +- common/build.gradle.kts | 2 +- .../commands/manage/ManageCommand.java | 1 + .../commands/commands/manage/Reload.java | 2 + .../commands/commands/manage/Update.java | 66 +++++++++++++++++++ .../queue/common/EventHandlerImpl.java | 10 +++ .../us/ajg0702/queue/common/QueueMain.java | 21 ++++++ common/src/main/resources/config.yml | 7 +- free/build.gradle.kts | 3 +- platforms/bungeecord/build.gradle.kts | 4 +- platforms/velocity/build.gradle.kts | 5 +- premium/build.gradle.kts | 2 +- spigot/build.gradle.kts | 2 +- 15 files changed, 120 insertions(+), 13 deletions(-) create mode 100644 common/src/main/java/us/ajg0702/queue/commands/commands/manage/Update.java diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 59da92f..d4e7035 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { implementation("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.10") + compileOnly("us.ajg0702:ajUtils:1.1.16") } publishing { diff --git a/api/src/main/java/us/ajg0702/queue/api/util/QueueLogger.java b/api/src/main/java/us/ajg0702/queue/api/util/QueueLogger.java index 412b468..8c3da1d 100644 --- a/api/src/main/java/us/ajg0702/queue/api/util/QueueLogger.java +++ b/api/src/main/java/us/ajg0702/queue/api/util/QueueLogger.java @@ -1,6 +1,8 @@ package us.ajg0702.queue.api.util; -public interface QueueLogger { +import us.ajg0702.utils.common.UtilsLogger; + +public interface QueueLogger extends UtilsLogger { void warn(String message); void warning(String message); void info(String message); diff --git a/build.gradle.kts b/build.gradle.kts index 12c2b48..06cabdd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ repositories { } allprojects { - version = "2.0.7-pre2" + version = "2.0.5" group = "us.ajg0702" plugins.apply("java") diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 9a812b2..716fe44 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.10") + compileOnly("us.ajg0702:ajUtils:1.1.16") compileOnly("org.slf4j:slf4j-log4j12:1.7.29") diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java index 6a5c701..0432b97 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java @@ -30,6 +30,7 @@ public class ManageCommand extends BaseCommand { addSubCommand(new Send(main)); addSubCommand(new PermissionList(main)); addSubCommand(new Whitelist(main)); + addSubCommand(new Update(main)); } diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Reload.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Reload.java index 6793df3..90c8bc7 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Reload.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Reload.java @@ -55,6 +55,8 @@ public class Reload extends SubCommand { main.getQueueManager().reloadServers(); main.getMessages().reload(); + main.getUpdater().setEnabled(main.getConfig().getBoolean("enable-updater")); + sender.sendMessage(getMessages().getComponent("commands.reload")); } diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Update.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Update.java new file mode 100644 index 0000000..3dfed05 --- /dev/null +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Update.java @@ -0,0 +1,66 @@ +package us.ajg0702.queue.commands.commands.manage; + +import com.google.common.collect.ImmutableList; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.spongepowered.configurate.ConfigurateException; +import us.ajg0702.queue.api.commands.ICommandSender; +import us.ajg0702.queue.commands.SubCommand; +import us.ajg0702.queue.common.QueueMain; +import us.ajg0702.utils.common.Messages; +import us.ajg0702.utils.common.Updater; + +import java.util.ArrayList; +import java.util.List; + +public class Update extends SubCommand { + + final QueueMain main; + public Update(QueueMain main) { + this.main = main; + } + + @Override + public String getName() { + return "update"; + } + + @Override + public ImmutableList getAliases() { + return ImmutableList.of(); + } + + @Override + public String getPermission() { + return "ajqueue.manage.update"; + } + + @Override + public Messages getMessages() { + return main.getMessages(); + } + + @Override + public void execute(ICommandSender sender, String[] args) { + if(!checkPermission(sender)) return; + Updater updater = main.getUpdater(); + if(updater.isAlreadyDownloaded()) { + sender.sendMessage(getMessages().getComponent("updater.already-downloaded")); + return; + } + if(!updater.isUpdateAvailable()) { + sender.sendMessage(getMessages().getComponent("updater.no-update")); + return; + } + if(updater.downloadUpdate()) { + sender.sendMessage(getMessages().getComponent("updater.success")); + } else { + sender.sendMessage(getMessages().getComponent("updater.fail")); + } + } + + @Override + public List autoComplete(ICommandSender sender, String[] args) { + return new ArrayList<>(); + } +} diff --git a/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java b/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java index f405d95..aac4a69 100644 --- a/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java @@ -103,6 +103,16 @@ public class EventHandlerImpl implements EventHandler { @Override public void onPlayerJoin(AdaptedPlayer player) { + new Thread(() -> { + try { + TimeUnit.SECONDS.sleep(2); + } catch (InterruptedException ignored) { + } + if (main.getUpdater().isUpdateAvailable() && player.hasPermission("ajqueue.manage.update")) { + player.sendMessage(main.getMessages().getComponent("updater.update-available")); + } + }).start(); + ImmutableList queues = main.getQueueManager().findPlayerInQueues(player); for(QueuePlayer queuePlayer : queues) { queuePlayer.setPlayer(player); diff --git a/common/src/main/java/us/ajg0702/queue/common/QueueMain.java b/common/src/main/java/us/ajg0702/queue/common/QueueMain.java index 4816c74..3df14c6 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueMain.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueMain.java @@ -9,6 +9,7 @@ import us.ajg0702.queue.common.utils.LogConverter; import us.ajg0702.queue.logic.LogicGetterImpl; import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Messages; +import us.ajg0702.utils.common.Updater; import java.io.File; import java.util.LinkedHashMap; @@ -100,9 +101,15 @@ public class QueueMain extends AjQueueAPI { return protocolNameManager; } + private Updater updater; + public Updater getUpdater() { + return updater; + } + @Override public void shutdown() { taskManager.shutdown(); + updater.shutdown(); } @@ -150,6 +157,8 @@ public class QueueMain extends AjQueueAPI { taskManager.rescheduleTasks(); + updater = new Updater(logger, platformMethods.getPluginVersion(), isPremium() ? "ajQueuePlus" : "ajQueue", config.getBoolean("enable-updater"), isPremium() ? 79123 : 78266, dataFolder.getParentFile(), "ajQueue update"); + } private void constructMessages() { @@ -227,6 +236,18 @@ public class QueueMain extends AjQueueAPI { d.put("velocity-kick-message", "You were kicked while trying to join {SERVER}: {REASON}"); + d.put("updater.update-available", + " \n" + + " An update is available for ajQueue!\n" + + " You can download it by " + + "clicking here\n or running /ajQueue update\n" + + " " + ); + d.put("updater.no-update", "There is not an update available"); + d.put("updater.success", "The update has been downloaded! Now just restart the server"); + d.put("updater.fail", "An error occurred while downloading the update. Check the console for more info."); + d.put("updater.already-downloaded", "The update has already been downloaded."); + messages = new Messages(dataFolder, new LogConverter(logger), d); } } diff --git a/common/src/main/resources/config.yml b/common/src/main/resources/config.yml index 8f9d524..bc75f67 100644 --- a/common/src/main/resources/config.yml +++ b/common/src/main/resources/config.yml @@ -1,5 +1,5 @@ # Dont touch this number please -config-version: 27 +config-version: 28 # This is the main config for ajQueue. @@ -258,4 +258,7 @@ protocol-names: # On velocity, should we end a player a message when they are kicked while trying to connect to a server with the queue? # This has no effect on bungee, because the message is sent from bungee and theres no way to change that in ajQueue # Default: false -velocity-kick-message: false \ No newline at end of file +velocity-kick-message: false + +# Should the updater be enabled? +enable-updater: true \ No newline at end of file diff --git a/free/build.gradle.kts b/free/build.gradle.kts index 642c029..46ec7ae 100644 --- a/free/build.gradle.kts +++ b/free/build.gradle.kts @@ -7,6 +7,7 @@ plugins { group = "us.ajg0702.queue" repositories { + //mavenLocal() maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } mavenCentral() @@ -17,7 +18,7 @@ dependencies { compileOnly("com.google.guava:guava:30.1.1-jre") compileOnly("org.spongepowered:configurate-yaml:4.0.0") - implementation("us.ajg0702:ajUtils:1.1.10") + implementation("us.ajg0702:ajUtils:1.1.16") implementation(project(":platforms:velocity")) implementation(project(":platforms:bungeecord")) diff --git a/platforms/bungeecord/build.gradle.kts b/platforms/bungeecord/build.gradle.kts index 0b3934d..fea1640 100644 --- a/platforms/bungeecord/build.gradle.kts +++ b/platforms/bungeecord/build.gradle.kts @@ -15,11 +15,11 @@ repositories { dependencies { compileOnly("net.kyori:adventure-api:4.8.1") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.10") + compileOnly("us.ajg0702:ajUtils:1.1.16") compileOnly("net.md-5:bungeecord-api:1.16-R0.4") - compileOnly("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") + implementation("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") implementation("net.kyori:adventure-platform-bungeecord:4.0.0-SNAPSHOT") compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT") diff --git a/platforms/velocity/build.gradle.kts b/platforms/velocity/build.gradle.kts index 2c4df54..8d7a070 100644 --- a/platforms/velocity/build.gradle.kts +++ b/platforms/velocity/build.gradle.kts @@ -6,6 +6,7 @@ plugins { group = "us.ajg0702.queue.platforms.velocity" repositories { + //mavenLocal() maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") } mavenCentral() @@ -14,11 +15,11 @@ repositories { dependencies { compileOnly("net.kyori:adventure-api:4.8.1") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.10") + compileOnly("us.ajg0702:ajUtils:1.1.16") compileOnly("com.velocitypowered:velocity-api:3.0.0") annotationProcessor("com.velocitypowered:velocity-api:3.0.0") - compileOnly("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") + implementation("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") implementation("org.bstats:bstats-velocity:2.2.1") diff --git a/premium/build.gradle.kts b/premium/build.gradle.kts index 871b61e..fd961e7 100644 --- a/premium/build.gradle.kts +++ b/premium/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { compileOnly("me.TechsCode:FakeUltraPerms:1.0.2") - compileOnly("us.ajg0702:ajUtils:1.1.10") + compileOnly("us.ajg0702:ajUtils:1.1.16") compileOnly("net.kyori:adventure-api:4.8.1") diff --git a/spigot/build.gradle.kts b/spigot/build.gradle.kts index 576b723..4d18524 100644 --- a/spigot/build.gradle.kts +++ b/spigot/build.gradle.kts @@ -24,7 +24,7 @@ dependencies { compileOnly("org.spongepowered:configurate-yaml:4.0.0") - compileOnly("us.ajg0702:ajUtils:1.1.10") + compileOnly("us.ajg0702:ajUtils:1.1.16") compileOnly(group = "org.spigotmc", name = "spigot", version = "1.16.5-R0.1-SNAPSHOT") compileOnly("me.clip:placeholderapi:2.10.4")