4 Commits

Author SHA1 Message Date
f8ae83bc08 Updates README and version to 0.9.2.4
Some checks failed
EpicKnarvik97/Stargate/pipeline/head There was a failure building this commit
2021-11-25 14:56:44 +01:00
cfb4910977 Adds a toggle-able admin alert when any admin joins the server 2021-11-25 14:56:05 +01:00
a61a03be33 Adds an update checker for alerting about new updates 2021-11-25 14:54:50 +01:00
445638a561 Releases a small hotfix for sign color as version 0.9.2.3 2021-11-25 04:27:36 +01:00
10 changed files with 161 additions and 14 deletions

View File

@ -294,6 +294,7 @@ while the per-gate costs re defined in the .gate files. To define a certain cost
``` ```
language - The language to use (Included languages: en, de, es, fr, hu, it, nb-no, nl, nn-no, pt-br, ru) language - The language to use (Included languages: en, de, es, fr, hu, it, nb-no, nl, nn-no, pt-br, ru)
adminUpdateAlert - Whether to alert admins about an available update when joining the server
folders: folders:
portalFolder - The folder your portal databases are saved in portalFolder - The folder your portal databases are saved in
gateFolder - The folder containing your .gate files gateFolder - The folder containing your .gate files
@ -389,6 +390,16 @@ portalInfoServer=Server: %server%
# Changes # Changes
#### \[Version 0.9.2.4] EpicKnarvik97 fork
- Adds update checking, which will display a notice in the console when updates are available
- Adds an alert about an available update when an admin joins the server
- Adds the adminUpdateAlert config option to allow the admin notices to be turned off
#### \[Version 0.9.2.3] EpicKnarvik97 fork
- Fixes a typo which caused both colors to change into the highlightSignColor
#### \[Version 0.9.2.2] EpicKnarvik97 fork #### \[Version 0.9.2.2] EpicKnarvik97 fork
- Prevents teleportation of a player holding creatures on a leash when handleLeashedCreatures is disabled, to prevent - Prevents teleportation of a player holding creatures on a leash when handleLeashedCreatures is disabled, to prevent

View File

@ -4,7 +4,7 @@
<groupId>net.knarcraft</groupId> <groupId>net.knarcraft</groupId>
<artifactId>Stargate</artifactId> <artifactId>Stargate</artifactId>
<version>0.9.2.2</version> <version>0.9.2.4</version>
<licenses> <licenses>
<license> <license>

View File

@ -21,6 +21,7 @@ import net.knarcraft.stargate.portal.PortalRegistry;
import net.knarcraft.stargate.thread.BlockChangeThread; import net.knarcraft.stargate.thread.BlockChangeThread;
import net.knarcraft.stargate.thread.ChunkUnloadThread; import net.knarcraft.stargate.thread.ChunkUnloadThread;
import net.knarcraft.stargate.thread.StarGateThread; import net.knarcraft.stargate.thread.StarGateThread;
import net.knarcraft.stargate.utility.UpdateChecker;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
@ -55,6 +56,8 @@ public class Stargate extends JavaPlugin {
private static PluginManager pluginManager; private static PluginManager pluginManager;
private static StargateConfig stargateConfig; private static StargateConfig stargateConfig;
private static String updateAvailable = null;
/** /**
* Empty constructor necessary for Spigot * Empty constructor necessary for Spigot
*/ */
@ -74,6 +77,26 @@ public class Stargate extends JavaPlugin {
super(loader, descriptionFile, dataFolder, file); super(loader, descriptionFile, dataFolder, file);
} }
/**
* Stores information about an available update
*
* <p>If a non-null version is given, joining admins will be alerted about the new update.</p>
*
* @param version <p>The version of the new update available</p>
*/
public static void setUpdateAvailable(String version) {
updateAvailable = version;
}
/**
* Gets information about an available update
*
* @return <p>The version number if an update is available. Null otherwise</p>
*/
public static String getUpdateAvailable() {
return updateAvailable;
}
/** /**
* Gets an instance of this plugin * Gets an instance of this plugin
* *
@ -334,6 +357,9 @@ public class Stargate extends JavaPlugin {
runThreads(); runThreads();
this.registerCommands(); this.registerCommands();
//Check for any available updates
UpdateChecker.checkForUpdate();
} }
/** /**

View File

@ -147,7 +147,12 @@ public enum ConfigOption {
/** /**
* Whether to enable debug output for debugging permissions * Whether to enable debug output for debugging permissions
*/ */
PERMISSION_DEBUG("debugging.permissionDebug", "Whether to enable permission debugging output", false); PERMISSION_DEBUG("debugging.permissionDebug", "Whether to enable permission debugging output", false),
/**
* Whether to alert admins about new updates
*/
ADMIN_UPDATE_ALERT("adminUpdateAlert", "Whether to alert admins about new plugin updates", true);
private final String configNode; private final String configNode;

View File

@ -319,6 +319,15 @@ public final class StargateConfig {
} }
} }
/**
* Gets whether admins should be alerted about new plugin updates
*
* @return <p>Whether admins should be alerted about new updates</p>
*/
public boolean alertAdminsAboutUpdates() {
return (boolean) configOptions.get(ConfigOption.ADMIN_UPDATE_ALERT);
}
/** /**
* Loads all config values * Loads all config values
*/ */

View File

@ -188,15 +188,13 @@ public final class StargateGateConfig {
* @param mainSignColor <p>A string representing the main sign color</p> * @param mainSignColor <p>A string representing the main sign color</p>
*/ */
private void loadSignColor(String mainSignColor, String highlightSignColor) { private void loadSignColor(String mainSignColor, String highlightSignColor) {
if (mainSignColor != null && highlightSignColor != null) { try {
try { PortalSignDrawer.setMainColor(ChatColor.valueOf(mainSignColor.toUpperCase()));
PortalSignDrawer.setMainColor(ChatColor.valueOf(highlightSignColor.toUpperCase())); PortalSignDrawer.setHighlightColor(ChatColor.valueOf(highlightSignColor.toUpperCase()));
PortalSignDrawer.setHighlightColor(ChatColor.valueOf(highlightSignColor.toUpperCase())); } catch (IllegalArgumentException | NullPointerException exception) {
} catch (IllegalArgumentException | NullPointerException ignored) { Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE");
Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE"); PortalSignDrawer.setMainColor(ChatColor.BLACK);
PortalSignDrawer.setMainColor(ChatColor.BLACK); PortalSignDrawer.setHighlightColor(ChatColor.WHITE);
PortalSignDrawer.setHighlightColor(ChatColor.WHITE);
}
} }
} }
} }

View File

@ -13,6 +13,7 @@ import net.knarcraft.stargate.utility.BungeeHelper;
import net.knarcraft.stargate.utility.MaterialHelper; import net.knarcraft.stargate.utility.MaterialHelper;
import net.knarcraft.stargate.utility.PermissionHelper; import net.knarcraft.stargate.utility.PermissionHelper;
import net.knarcraft.stargate.utility.UUIDMigrationHelper; import net.knarcraft.stargate.utility.UUIDMigrationHelper;
import net.knarcraft.stargate.utility.UpdateChecker;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -48,14 +49,22 @@ public class PlayerEventListener implements Listener {
*/ */
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
//Migrate player name to UUID if necessary //Migrate player name to UUID if necessary
UUIDMigrationHelper.migrateUUID(event.getPlayer()); UUIDMigrationHelper.migrateUUID(player);
//Notify joining admins about the available update
String availableUpdate = Stargate.getUpdateAvailable();
if (availableUpdate != null && Stargate.getStargateConfig().alertAdminsAboutUpdates() &&
player.hasPermission("stargate.admin")) {
String updateMessage = UpdateChecker.getUpdateAvailableString(availableUpdate, Stargate.getPluginVersion());
Stargate.getMessageSender().sendErrorMessage(player, updateMessage);
}
if (!Stargate.getGateConfig().enableBungee()) { if (!Stargate.getGateConfig().enableBungee()) {
return; return;
} }
Player player = event.getPlayer();
//Check if the player is waiting to be teleported to a stargate //Check if the player is waiting to be teleported to a stargate
String destination = BungeeHelper.removeFromQueue(player.getUniqueId()); String destination = BungeeHelper.removeFromQueue(player.getUniqueId());
if (destination == null) { if (destination == null) {

View File

@ -0,0 +1,87 @@
package net.knarcraft.stargate.utility;
import net.knarcraft.stargate.Stargate;
import org.bukkit.scheduler.BukkitScheduler;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.logging.Level;
/**
* The update checker is responsible for looking for new updates
*/
public final class UpdateChecker {
private final static String APIResourceURL = "https://api.spigotmc.org/legacy/update.php?resource=97784";
private final static String updateNotice = "A new update is available: %s (You are still on %s)";
private UpdateChecker() {
}
/**
* Checks if there's a new update available, and alerts the user if necessary
*/
public static void checkForUpdate() {
BukkitScheduler scheduler = Stargate.getInstance().getServer().getScheduler();
scheduler.runTaskAsynchronously(Stargate.getInstance(), UpdateChecker::queryAPI);
}
/**
* Queries the spigot API to check for a newer version, and informs the user
*/
private static void queryAPI() {
try {
InputStream inputStream = new URL(APIResourceURL).openStream();
BufferedReader reader = FileHelper.getBufferedReaderFromInputStream(inputStream);
//There should only be one line of output
String newVersion = reader.readLine();
reader.close();
String oldVersion = Stargate.getPluginVersion();
//If there is a newer version, notify the user
if (isVersionHigher(oldVersion, newVersion)) {
Stargate.getConsoleLogger().log(Level.INFO, Stargate.getBackupString("prefix") +
getUpdateAvailableString(newVersion, oldVersion));
Stargate.setUpdateAvailable(newVersion);
}
} catch (IOException e) {
Stargate.debug("UpdateChecker", "Unable to get newest version.");
}
}
/**
* Gets the string to display to a user to alert about a new update
*
* @param newVersion <p>The new available plugin version</p>
* @param oldVersion <p>The old (current) plugin version</p>
* @return <p>The string to display</p>
*/
public static String getUpdateAvailableString(String newVersion, String oldVersion) {
return String.format(updateNotice, newVersion, oldVersion);
}
/**
* Decides whether one version number is higher than another
*
* @param oldVersion <p>The old version to check</p>
* @param newVersion <p>The new version to check</p>
* @return <p>True if the new version is higher than the old one</p>
*/
public static boolean isVersionHigher(String oldVersion, String newVersion) {
String[] oldVersionParts = oldVersion.split("\\.");
String[] newVersionParts = newVersion.split("\\.");
int versionLength = Math.max(oldVersionParts.length, newVersionParts.length);
for (int i = 0; i < versionLength; i++) {
int oldVersionNumber = oldVersionParts.length > i ? Integer.parseInt(oldVersionParts[i]) : 0;
int newVersionNumber = newVersionParts.length > i ? Integer.parseInt(newVersionParts[i]) : 0;
if (newVersionNumber != oldVersionNumber) {
return newVersionNumber > oldVersionNumber;
}
}
return false;
}
}

View File

@ -18,6 +18,7 @@
# mainSignColor - The color used for drawing signs (Default: BLACK). # mainSignColor - The color used for drawing signs (Default: BLACK).
# highlightSignColor - The color used for sign markings (Default: WHITE) # highlightSignColor - The color used for sign markings (Default: WHITE)
# verifyPortals - Whether all the non-sign blocks are checked to match the gate layout when a stargate is loaded. # verifyPortals - Whether all the non-sign blocks are checked to match the gate layout when a stargate is loaded.
# adminUpdateAlert - Whether to alert admins about new plugin updates
# I------------I-------------I # # I------------I-------------I #
# stargate economy options # # stargate economy options #
# I------------I-------------I # # I------------I-------------I #
@ -36,6 +37,7 @@
# permissionDebug - This will output any and all Permissions checks to console, used for permissions debugging (Requires debug: true) # permissionDebug - This will output any and all Permissions checks to console, used for permissions debugging (Requires debug: true)
language: en language: en
adminUpdateAlert: true
folders: folders:
portalFolder: plugins/Stargate/portals/ portalFolder: plugins/Stargate/portals/
gateFolder: plugins/Stargate/gates/ gateFolder: plugins/Stargate/gates/

View File

@ -1,6 +1,6 @@
name: Stargate name: Stargate
main: net.knarcraft.stargate.Stargate main: net.knarcraft.stargate.Stargate
version: 0.9.2.2 version: 0.9.2.4
description: Stargate mod for Bukkit Revived description: Stargate mod for Bukkit Revived
author: EpicKnarvik97 author: EpicKnarvik97
authors: [ Drakia, PseudoKnight, EpicKnarvik97 ] authors: [ Drakia, PseudoKnight, EpicKnarvik97 ]