Switched to Spark for TPS alerts (#8)

Switched to Spark for TPS alerts

+ Currently just looks at tps, but we could hook in mspt
+ Fixes #6

Co-authored-by: Joey Hines <joey@ahines.net>
Reviewed-on: https://git.canopymc.net/Canopy/QoL/pulls/8
Reviewed-by: Etzelia <etzelia@hotmail.com>
Co-Authored-By: ZeroHD <joey@ahines.net>
Co-Committed-By: ZeroHD <joey@ahines.net>
pull/10/head
Joey Hines 2021-07-05 14:52:41 +00:00
parent 3c3fdc1725
commit e3cf0d6d9f
4 changed files with 31 additions and 24 deletions

21
pom.xml
View File

@ -3,7 +3,7 @@
<groupId>xyz.etztech</groupId> <groupId>xyz.etztech</groupId>
<artifactId>QoL</artifactId> <artifactId>QoL</artifactId>
<!-- Version is used in plugin.yml --> <!-- Version is used in plugin.yml -->
<version>1.10</version> <version>1.11</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<!-- Plugin Information --> <!-- Plugin Information -->
@ -39,11 +39,6 @@
<artifactId>plugin-api</artifactId> <artifactId>plugin-api</artifactId>
<version>1.0.7</version> <version>1.0.7</version>
</dependency> </dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>EssentialsX</artifactId>
<version>2.18.1</version>
</dependency>
<dependency> <dependency>
<groupId>us.dynmap</groupId> <groupId>us.dynmap</groupId>
<artifactId>dynmap-api</artifactId> <artifactId>dynmap-api</artifactId>
@ -60,6 +55,12 @@
<version>1.19.1</version> <version>1.19.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>me.lucko</groupId>
<artifactId>spark-api</artifactId>
<version>0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
<repositories> <repositories>
@ -78,10 +79,6 @@
<repository> <repository>
<id>dynmap-repo</id> <id>dynmap-repo</id>
<url>https://repo.mikeprimm.com/</url> <url>https://repo.mikeprimm.com/</url>
</repository>
<repository>
<id>ess-repo</id>
<url>https://ci.ender.zone/plugin/repository/everything/</url>
</repository> </repository>
<repository> <repository>
<id>mvn-repo</id> <id>mvn-repo</id>
@ -95,6 +92,10 @@
<id>jitpack.io</id> <id>jitpack.io</id>
<url>https://jitpack.io</url> <url>https://jitpack.io</url>
</repository> </repository>
<repository>
<id>sonatype-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories> </repositories>
<build> <build>

View File

@ -1,10 +1,10 @@
package xyz.etztech.qol; package xyz.etztech.qol;
import net.ess3.api.IEssentials;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.dynmap.DynmapAPI; import org.dynmap.DynmapAPI;
import org.dynmap.markers.Marker; import org.dynmap.markers.Marker;
@ -16,6 +16,7 @@ import xyz.etztech.qol.listeners.*;
import xyz.etztech.qol.other.LinkCommand; import xyz.etztech.qol.other.LinkCommand;
import xyz.etztech.qol.other.Reminder; import xyz.etztech.qol.other.Reminder;
import xyz.etztech.qol.other.TPSRunnable; import xyz.etztech.qol.other.TPSRunnable;
import me.lucko.spark.api.Spark;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -28,7 +29,7 @@ public class QoL extends JavaPlugin {
private String qolMarkerIcon = null; private String qolMarkerIcon = null;
private static QoL instance; private static QoL instance;
private IEssentials essentials = null; private Spark spark = null;
private DynmapAPI dynmap = null; private DynmapAPI dynmap = null;
private MarkerAPI markerAPI = null; private MarkerAPI markerAPI = null;
private MarkerSet playerMarkerSet = null; private MarkerSet playerMarkerSet = null;
@ -53,10 +54,11 @@ public class QoL extends JavaPlugin {
reloadConfig(); reloadConfig();
saveResource("qol.png", true); saveResource("qol.png", true);
//Essentials hook //Spark hook
if (Bukkit.getPluginManager().isPluginEnabled("Essentials")) { RegisteredServiceProvider<Spark> sparkProvider = Bukkit.getServicesManager().getRegistration(Spark.class);
log("Hooked into Essentials for TPS alert."); if (sparkProvider != null) {
essentials = (IEssentials) Bukkit.getPluginManager().getPlugin("Essentials"); log("Hooked into Spark for TPS alert.");
spark = sparkProvider.getProvider();
} }
//Dynmap hook //Dynmap hook
@ -276,8 +278,6 @@ public class QoL extends JavaPlugin {
return links; return links;
} }
public IEssentials getEssentials() { return essentials; }
public DynmapAPI getDynmap() { return dynmap; } public DynmapAPI getDynmap() { return dynmap; }
public void runTask(final String command) { public void runTask(final String command) {
@ -330,5 +330,9 @@ public class QoL extends JavaPlugin {
return marker; return marker;
} }
} }
public Spark getSpark() {
return spark;
}
} }

View File

@ -1,9 +1,11 @@
package xyz.etztech.qol.other; package xyz.etztech.qol.other;
import net.ess3.api.IEssentials; import me.lucko.spark.api.statistic.StatisticWindow;
import me.lucko.spark.api.statistic.types.DoubleStatistic;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import xyz.etztech.core.web.Http; import xyz.etztech.core.web.Http;
import xyz.etztech.qol.QoL; import xyz.etztech.qol.QoL;
import me.lucko.spark.api.Spark;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -18,13 +20,13 @@ public class TPSRunnable implements Runnable {
@Override @Override
public void run() { public void run() {
IEssentials essentials = plugin.getEssentials(); Spark spark = plugin.getSpark();
if (essentials != null) { if (spark != null) {
double tps = essentials.getTimer().getAverageTPS(); DoubleStatistic<StatisticWindow.TicksPerSecond> tps = spark.tps();
int threshold = plugin.getConfig().getInt("tps.threshold", 0); int threshold = plugin.getConfig().getInt("tps.threshold", 0);
String webhook = plugin.getConfig().getString("tps.webhook", ""); String webhook = plugin.getConfig().getString("tps.webhook", "");
String message = "@here TPS has fallen below " + threshold + "!"; String message = "@here TPS has fallen below " + threshold + "!";
if (tps < threshold) { if (tps.poll(StatisticWindow.TicksPerSecond.SECONDS_10) < threshold) {
plugin.log(message); plugin.log(message);
if (StringUtils.isNotEmpty(webhook)) { if (StringUtils.isNotEmpty(webhook)) {
Map<String, String> data = new HashMap<>(); Map<String, String> data = new HashMap<>();

View File

@ -4,7 +4,7 @@ description: ${description}
author: ${author} author: ${author}
website: ${url} website: ${url}
main: ${mainClass} main: ${mainClass}
softdepend: [Essentials, dynmap, DiscordSRV] softdepend: [spark, dynmap, DiscordSRV]
commands: commands:
qol: qol:
description: Base command description: Base command