geforkt von Mirrors/FastAsyncWorldEdit
feat: (Re-) Add update notifications (#1361)
* feat: (Re-) Add update notifications Fixes #1348 * Move update notification to seperate class - Add a couple of linebreaks to the chat messages
Dieser Commit ist enthalten in:
Ursprung
e5fbc4c971
Commit
5db9a601b1
@ -0,0 +1,83 @@
|
|||||||
|
package com.fastasyncworldedit.bukkit.util;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.core.Fawe;
|
||||||
|
import com.fastasyncworldedit.core.FaweVersion;
|
||||||
|
import com.fastasyncworldedit.core.configuration.Caption;
|
||||||
|
import com.fastasyncworldedit.core.configuration.Settings;
|
||||||
|
import com.sk89q.worldedit.entity.Player;
|
||||||
|
import com.sk89q.worldedit.internal.util.LogManagerCompat;
|
||||||
|
import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
||||||
|
import com.sk89q.worldedit.util.formatting.text.event.ClickEvent;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
|
||||||
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hidden
|
||||||
|
*/
|
||||||
|
public class UpdateNotification {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LogManagerCompat.getLogger();
|
||||||
|
|
||||||
|
private static boolean hasUpdate;
|
||||||
|
private static String faweVersion = "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether a new build with a higher build number than the current build is available.
|
||||||
|
*/
|
||||||
|
public static void doUpdateCheck() {
|
||||||
|
if (Settings.IMP.ENABLED_COMPONENTS.UPDATE_NOTIFICATIONS) {
|
||||||
|
try {
|
||||||
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||||
|
DocumentBuilder db = dbf.newDocumentBuilder();
|
||||||
|
Document doc = db.parse(new URL("https://ci.athion.net/job/FastAsyncWorldEdit-1.17/api/xml/").openStream());
|
||||||
|
faweVersion = doc.getElementsByTagName("lastSuccessfulBuild").item(0).getFirstChild().getTextContent();
|
||||||
|
FaweVersion faweVersion = Fawe.get().getVersion();
|
||||||
|
if (faweVersion.build == 0) {
|
||||||
|
LOGGER.warn("You are using a snapshot or a custom version of FAWE. This is not an official build distributed " +
|
||||||
|
"via https://www.spigotmc.org/resources/13932/");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (faweVersion.build < Integer.parseInt(UpdateNotification.faweVersion)) {
|
||||||
|
hasUpdate = true;
|
||||||
|
int versionDifference = Integer.parseInt(UpdateNotification.faweVersion) - faweVersion.build;
|
||||||
|
LOGGER.warn(
|
||||||
|
"An update for FastAsyncWorldEdit is available. You are {} build(s) out of date.\nYou are running " +
|
||||||
|
"version {}, the latest version is {}-{}.\nUpdate at https://www.spigotmc.org/resources/13932/",
|
||||||
|
versionDifference,
|
||||||
|
faweVersion.toString(),
|
||||||
|
faweVersion.getSimpleVersionName(),
|
||||||
|
UpdateNotification.faweVersion
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOGGER.error("Unable to check for updates. Skipping.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trigger an update notification based on captions. Useful to notify server administrators ingame.
|
||||||
|
*
|
||||||
|
* @param player The player to notify.
|
||||||
|
*/
|
||||||
|
public static void doUpdateNotification(Player player) {
|
||||||
|
if (Settings.IMP.ENABLED_COMPONENTS.UPDATE_NOTIFICATIONS) {
|
||||||
|
if (player.hasPermission("fawe.admin") && UpdateNotification.hasUpdate) {
|
||||||
|
FaweVersion faweVersion = Fawe.get().getVersion();
|
||||||
|
int versionDifference = Integer.parseInt(UpdateNotification.faweVersion) - faweVersion.build;
|
||||||
|
player.print(Caption.of("fawe.info.update-available", versionDifference, faweVersion.toString(),
|
||||||
|
faweVersion.getSimpleVersionName() + "-" + UpdateNotification.faweVersion,
|
||||||
|
TextComponent
|
||||||
|
.of("https://www.spigotmc.org/resources/13932/")
|
||||||
|
.clickEvent(ClickEvent.openUrl("https://www.spigotmc.org/resources/13932/"))
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.bukkit;
|
package com.sk89q.worldedit.bukkit;
|
||||||
|
|
||||||
|
import com.fastasyncworldedit.bukkit.util.UpdateNotification;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
@ -90,6 +91,7 @@ public class WorldEditListener implements Listener {
|
|||||||
if ((session = WorldEdit.getInstance().getSessionManager().getIfPresent(player)) != null) {
|
if ((session = WorldEdit.getInstance().getSessionManager().getIfPresent(player)) != null) {
|
||||||
session.loadDefaults(player, true);
|
session.loadDefaults(player, true);
|
||||||
}
|
}
|
||||||
|
UpdateNotification.doUpdateNotification(player);
|
||||||
}
|
}
|
||||||
//FAWE end
|
//FAWE end
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ package com.sk89q.worldedit.bukkit;
|
|||||||
|
|
||||||
import com.fastasyncworldedit.bukkit.BukkitPermissionAttachmentManager;
|
import com.fastasyncworldedit.bukkit.BukkitPermissionAttachmentManager;
|
||||||
import com.fastasyncworldedit.bukkit.FaweBukkit;
|
import com.fastasyncworldedit.bukkit.FaweBukkit;
|
||||||
|
import com.fastasyncworldedit.bukkit.util.UpdateNotification;
|
||||||
import com.fastasyncworldedit.core.Fawe;
|
import com.fastasyncworldedit.core.Fawe;
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
@ -223,6 +224,8 @@ public class WorldEditPlugin extends JavaPlugin {
|
|||||||
ServerLib.checkJavaLTS();
|
ServerLib.checkJavaLTS();
|
||||||
// Check if we are in a safe environment
|
// Check if we are in a safe environment
|
||||||
ServerLib.checkUnsafeForks();
|
ServerLib.checkUnsafeForks();
|
||||||
|
// Check if a new build is available
|
||||||
|
UpdateNotification.doUpdateCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupPreWorldData() {
|
private void setupPreWorldData() {
|
||||||
|
@ -2,6 +2,8 @@ package com.fastasyncworldedit.core;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* An internal FAWE class not meant for public use.
|
* An internal FAWE class not meant for public use.
|
||||||
|
*
|
||||||
|
* @hidden
|
||||||
**/
|
**/
|
||||||
public class FaweVersion {
|
public class FaweVersion {
|
||||||
|
|
||||||
@ -46,12 +48,19 @@ public class FaweVersion {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
if (hash == 0 && build == 0) {
|
if (hash == 0 && build == 0) {
|
||||||
return "FastAsyncWorldEdit-1.17-NoVer-SNAPSHOT";
|
return getSimpleVersionName() + "-NoVer-SNAPSHOT";
|
||||||
} else {
|
} else {
|
||||||
return "FastAsyncWorldEdit-1.17" + build;
|
return getSimpleVersionName() + "-" + build;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The qualified version name
|
||||||
|
*/
|
||||||
|
public String getSimpleVersionName() {
|
||||||
|
return "FastAsyncWorldEdit-1.17";
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isNewer(FaweVersion other) {
|
public boolean isNewer(FaweVersion other) {
|
||||||
return other.build < this.build;
|
return other.build < this.build;
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,8 @@ public class Settings extends Config {
|
|||||||
@Comment({"Show additional information in console. It helps us at IntellectualSites to find out more about an issue.",
|
@Comment({"Show additional information in console. It helps us at IntellectualSites to find out more about an issue.",
|
||||||
"Leave it off if you don't need it, it can spam your console."})
|
"Leave it off if you don't need it, it can spam your console."})
|
||||||
public boolean DEBUG = false;
|
public boolean DEBUG = false;
|
||||||
|
@Comment({"Whether or not FAWE should notify you on startup about new versions available."})
|
||||||
|
public boolean UPDATE_NOTIFICATIONS = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
"fawe.info.worldedit.restricted": "Your FAWE edits are now restricted.",
|
"fawe.info.worldedit.restricted": "Your FAWE edits are now restricted.",
|
||||||
"fawe.info.worldedit.oom.admin": "Possible options:\n - //fast\n - Do smaller edits\n - Allocate more memory\n - Disable `max-memory-percent`",
|
"fawe.info.worldedit.oom.admin": "Possible options:\n - //fast\n - Do smaller edits\n - Allocate more memory\n - Disable `max-memory-percent`",
|
||||||
"fawe.info.temporarily-not-working": "Temporarily not working",
|
"fawe.info.temporarily-not-working": "Temporarily not working",
|
||||||
|
"fawe.info.update-available": "An update for FastAsyncWorldEdit is available. You are {0} build(s) out of date.\nYou are running version {1}, the latest version is {2}.\nUpdate at {3}",
|
||||||
|
|
||||||
"fawe.web.generating.link": "Uploading {0}, please wait...",
|
"fawe.web.generating.link": "Uploading {0}, please wait...",
|
||||||
"fawe.web.generating.link.failed": "Failed to generate download link!",
|
"fawe.web.generating.link.failed": "Failed to generate download link!",
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren