mirror of
https://github.com/PikaMug/Quests.git
synced 2025-02-11 18:11:19 +01:00
Update check with config setting and permission
This commit is contained in:
parent
75658b6399
commit
3f26d3478b
@ -44,6 +44,7 @@ import me.blackvein.quests.util.ItemUtil;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import me.blackvein.quests.util.MiscUtil;
|
||||
import me.blackvein.quests.util.RomanNumeral;
|
||||
import me.blackvein.quests.util.UpdateChecker;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import me.pikamug.localelib.LocaleManager;
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
@ -237,7 +238,15 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
||||
getServer().getPluginManager().registerEvents(partiesListener, this);
|
||||
}
|
||||
|
||||
// 11 - Delay loading of Quests, Actions and modules
|
||||
// 11 - Attempt to check for updates
|
||||
new UpdateChecker(this, 3711).getVersion(version -> {
|
||||
if (!getDescription().getVersion().split("-")[0].equalsIgnoreCase(version)) {
|
||||
getLogger().info(ChatColor.DARK_GREEN + Lang.get("updateTo").replace("<version>",
|
||||
version).replace("<url>", ChatColor.AQUA + getDescription().getWebsite()));
|
||||
}
|
||||
});
|
||||
|
||||
// 12 - Delay loading of Quests, Actions and modules
|
||||
delayLoadQuestInfo();
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@ public class Settings {
|
||||
private int topLimit = 150;
|
||||
private boolean translateNames = false;
|
||||
private boolean translateSubCommands = false;
|
||||
private boolean updateCheck = true;
|
||||
|
||||
public Settings(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
@ -174,6 +175,12 @@ public class Settings {
|
||||
public void setTranslateSubCommands(final boolean translateSubCommands) {
|
||||
this.translateSubCommands = translateSubCommands;
|
||||
}
|
||||
public boolean canUpdateCheck() {
|
||||
return updateCheck;
|
||||
}
|
||||
public void setUpdateCheck(final boolean updateCheck) {
|
||||
this.updateCheck = updateCheck;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
final FileConfiguration config = plugin.getConfig();
|
||||
@ -204,6 +211,7 @@ public class Settings {
|
||||
topLimit = config.getInt("top-limit", 150);
|
||||
translateNames = config.getBoolean("translate-names", true);
|
||||
translateSubCommands = config.getBoolean("translate-subcommands", false);
|
||||
updateCheck = config.getBoolean("update-check", true);
|
||||
try {
|
||||
config.save(new File(plugin.getDataFolder(), "config.yml"));
|
||||
} catch (final IOException e) {
|
||||
|
@ -20,6 +20,7 @@ import me.blackvein.quests.enums.ObjectiveType;
|
||||
import me.blackvein.quests.util.ItemUtil;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import me.blackvein.quests.util.MiscUtil;
|
||||
import me.blackvein.quests.util.UpdateChecker;
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -848,14 +849,25 @@ public class PlayerListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(final PlayerJoinEvent evt) {
|
||||
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
|
||||
final Quester noobCheck = new Quester(plugin, evt.getPlayer().getUniqueId());
|
||||
final Player player = evt.getPlayer();
|
||||
if (player.hasPermission("quests.admin.update")) {
|
||||
new UpdateChecker(plugin, 3711).getVersion(version -> {
|
||||
if (!plugin.getDescription().getVersion().split("-")[0].equalsIgnoreCase(version)) {
|
||||
evt.getPlayer().sendMessage(ChatColor.GRAY + "[" + ChatColor.YELLOW + "Quests" + ChatColor.GRAY
|
||||
+ "] " + ChatColor.GREEN + Lang.get(player, "updateTo").replace("<version>",
|
||||
version).replace("<url>", ChatColor.DARK_AQUA + "" + ChatColor.UNDERLINE
|
||||
+ plugin.getDescription().getWebsite()));
|
||||
}
|
||||
});
|
||||
}
|
||||
if (plugin.canUseQuests(player.getUniqueId())) {
|
||||
final Quester noobCheck = new Quester(plugin, player.getUniqueId());
|
||||
if (plugin.getSettings().canGenFilesOnJoin() && !noobCheck.hasData()) {
|
||||
noobCheck.saveData();
|
||||
}
|
||||
|
||||
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
final CompletableFuture<Quester> cf = plugin.getStorage().loadQuester(evt.getPlayer().getUniqueId());
|
||||
final CompletableFuture<Quester> cf = plugin.getStorage().loadQuester(player.getUniqueId());
|
||||
try {
|
||||
final Quester quester = cf.get();
|
||||
if (quester == null) {
|
||||
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2014 PikaMug and contributors. All rights reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests.util;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.util.Consumer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class UpdateChecker {
|
||||
|
||||
private final Quests plugin;
|
||||
private final int resourceId;
|
||||
|
||||
public UpdateChecker(Quests plugin, int resourceId) {
|
||||
this.plugin = plugin;
|
||||
this.resourceId = resourceId;
|
||||
}
|
||||
|
||||
public void getVersion(final Consumer<String> consumer) {
|
||||
if (plugin.getSettings().canUpdateCheck()) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
|
||||
try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource="
|
||||
+ this.resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) {
|
||||
if (scanner.hasNext()) {
|
||||
consumer.accept(scanner.next());
|
||||
}
|
||||
} catch (IOException e) {
|
||||
this.plugin.getLogger().info("Update check failed: " + e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -36,3 +36,4 @@ trial-save: false
|
||||
top-limit: 150
|
||||
translate-names: true
|
||||
translate-subcommands: false
|
||||
update-check: true
|
@ -3,8 +3,7 @@ main: me.blackvein.quests.Quests
|
||||
version: ${project.version}-b${env.BUILD_NUMBER}
|
||||
api-version: 1.13
|
||||
description: An extensive questing system.
|
||||
website: https://www.spigotmc.org/resources/quests.3711/
|
||||
dev-url: https://github.com/PikaMug/Quests
|
||||
website: https://github.com/PikaMug/Quests
|
||||
author: PikaMug
|
||||
softdepend: [Citizens, CitizensBooks, Denizen, DungeonsXL, GPS, Heroes, mcMMO, Parties, PhatLoots, PlaceholderAPI, Unite, Vault, WorldGuard]
|
||||
permissions:
|
||||
@ -79,6 +78,7 @@ permissions:
|
||||
quests.admin.remove: true
|
||||
quests.admin.reload: true
|
||||
quests.admin.drop: true
|
||||
quests.admin.update: true
|
||||
quests.admin.trial: false
|
||||
quests.admin:
|
||||
description: Display administrator help
|
||||
@ -125,6 +125,9 @@ permissions:
|
||||
quests.admin.drop:
|
||||
description: Ability to drop the Quests Journal
|
||||
default: op
|
||||
quests.admin.update:
|
||||
description: Permit viewing of update check notices
|
||||
default: op
|
||||
quests.admin.trial:
|
||||
description: Limit access to sensitive editor prompts
|
||||
default: false
|
||||
|
@ -807,3 +807,4 @@ duplicateEditor: "You are already using an editor!"
|
||||
difference: "The difference is '<data>'."
|
||||
notInstalled: "Not installed"
|
||||
confirmDelete: "Are you sure?"
|
||||
updateTo: "Update to <version>: <url>"
|
Loading…
Reference in New Issue
Block a user