mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 14:46:46 +01:00
Move metrics to a class of its own
This commit is contained in:
parent
c5daaffeb1
commit
a38b7ca9fa
@ -1,13 +1,10 @@
|
|||||||
package com.gmail.nossr50;
|
package com.gmail.nossr50;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
import net.shatteredlands.shatt.backup.ZipLibrary;
|
import net.shatteredlands.shatt.backup.ZipLibrary;
|
||||||
|
|
||||||
@ -18,11 +15,9 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
|
|
||||||
import com.turt2live.metrics.Metrics;
|
|
||||||
import com.turt2live.metrics.Metrics.Graph;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager;
|
||||||
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
|
||||||
|
import com.gmail.nossr50.util.metrics.MetricsManager;
|
||||||
import com.gmail.nossr50.commands.CommandRegistrationHelper;
|
import com.gmail.nossr50.commands.CommandRegistrationHelper;
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
@ -37,7 +32,6 @@ import com.gmail.nossr50.listeners.EntityListener;
|
|||||||
import com.gmail.nossr50.listeners.InventoryListener;
|
import com.gmail.nossr50.listeners.InventoryListener;
|
||||||
import com.gmail.nossr50.listeners.PlayerListener;
|
import com.gmail.nossr50.listeners.PlayerListener;
|
||||||
import com.gmail.nossr50.listeners.WorldListener;
|
import com.gmail.nossr50.listeners.WorldListener;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
|
||||||
import com.gmail.nossr50.mods.config.CustomArmorConfig;
|
import com.gmail.nossr50.mods.config.CustomArmorConfig;
|
||||||
import com.gmail.nossr50.mods.config.CustomBlocksConfig;
|
import com.gmail.nossr50.mods.config.CustomBlocksConfig;
|
||||||
import com.gmail.nossr50.mods.config.CustomEntityConfig;
|
import com.gmail.nossr50.mods.config.CustomEntityConfig;
|
||||||
@ -121,7 +115,8 @@ public class mcMMO extends JavaPlugin {
|
|||||||
|
|
||||||
scheduleTasks();
|
scheduleTasks();
|
||||||
registerCommands();
|
registerCommands();
|
||||||
setupMetrics();
|
|
||||||
|
MetricsManager.setup();
|
||||||
|
|
||||||
placeStore = ChunkManagerFactory.getChunkManager(); // Get our ChunkletManager
|
placeStore = ChunkManagerFactory.getChunkManager(); // Get our ChunkletManager
|
||||||
|
|
||||||
@ -342,174 +337,6 @@ public class mcMMO extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupMetrics() {
|
|
||||||
if (Config.getInstance().getStatsTrackingEnabled()) {
|
|
||||||
try {
|
|
||||||
Metrics metrics = new Metrics(this);
|
|
||||||
|
|
||||||
// Timings Graph
|
|
||||||
Graph timingsGraph = metrics.createGraph("Percentage of servers using timings");
|
|
||||||
|
|
||||||
if (getServer().getPluginManager().useTimings()) {
|
|
||||||
timingsGraph.addPlotter(new Metrics.Plotter("Enabled") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
timingsGraph.addPlotter(new Metrics.Plotter("Disabled") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Donut Version Graph
|
|
||||||
Graph versionDonutGraph = metrics.createGraph("Donut Version");
|
|
||||||
|
|
||||||
boolean haveVersionInformation = false;
|
|
||||||
boolean isOfficialBuild = false;
|
|
||||||
String officialKey = "e14cfacdd442a953343ebd8529138680";
|
|
||||||
|
|
||||||
String version = getDescription().getVersion();
|
|
||||||
|
|
||||||
InputStreamReader isr = new InputStreamReader(getResource(".jenkins"));
|
|
||||||
BufferedReader br = new BufferedReader(isr);
|
|
||||||
char[] key = new char[32];
|
|
||||||
br.read(key);
|
|
||||||
if (officialKey.equals(String.valueOf(key))) {
|
|
||||||
isOfficialBuild = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version.contains("-")) {
|
|
||||||
String majorVersion = version.substring(0, version.indexOf("-"));
|
|
||||||
String subVersion = "";
|
|
||||||
if (isOfficialBuild) {
|
|
||||||
int startIndex = version.indexOf("-");
|
|
||||||
if (version.substring(startIndex + 1).contains("-")) {
|
|
||||||
subVersion = version.substring(startIndex, version.indexOf("-", startIndex + 1));
|
|
||||||
} else {
|
|
||||||
subVersion = "-release";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
subVersion = "-custom";
|
|
||||||
}
|
|
||||||
|
|
||||||
version = majorVersion + "~=~" + subVersion;
|
|
||||||
haveVersionInformation = true;
|
|
||||||
} else {
|
|
||||||
haveVersionInformation = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (haveVersionInformation) {
|
|
||||||
versionDonutGraph.addPlotter(new Metrics.Plotter(version) {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Official v Custom build Graph
|
|
||||||
Graph officialGraph = metrics.createGraph("Built by official ci");
|
|
||||||
|
|
||||||
if (isOfficialBuild) {
|
|
||||||
officialGraph.addPlotter(new Metrics.Plotter("Yes") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
officialGraph.addPlotter(new Metrics.Plotter("No") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Chunkmeta enabled Graph
|
|
||||||
Graph chunkmetaGraph = metrics.createGraph("Uses Chunkmeta");
|
|
||||||
|
|
||||||
if (HiddenConfig.getInstance().getChunkletsEnabled()) {
|
|
||||||
chunkmetaGraph.addPlotter(new Metrics.Plotter("Yes") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
chunkmetaGraph.addPlotter(new Metrics.Plotter("No") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Storage method Graph
|
|
||||||
Graph storageGraph = metrics.createGraph("Storage method");
|
|
||||||
|
|
||||||
if (Config.getInstance().getUseMySQL()) {
|
|
||||||
storageGraph.addPlotter(new Metrics.Plotter("SQL") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
storageGraph.addPlotter(new Metrics.Plotter("Flatfile") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Locale Graph
|
|
||||||
Graph localeGraph = metrics.createGraph("Locale");
|
|
||||||
|
|
||||||
localeGraph.addPlotter(new Metrics.Plotter(LocaleLoader.getCurrentLocale().getDisplayLanguage(Locale.US)) {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// GlobalMultiplier Graph
|
|
||||||
Graph globalMultiplierGraph = metrics.createGraph("Global Multiplier Graph");
|
|
||||||
|
|
||||||
globalMultiplierGraph.addPlotter(new Metrics.Plotter(Config.getInstance().getExperienceGainsGlobalMultiplier() + "") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// GlobalCurveModifier Graph
|
|
||||||
Graph globalCurveModifierGraph = metrics.createGraph("Global Curve Modifier Graph");
|
|
||||||
|
|
||||||
globalCurveModifierGraph.addPlotter(new Metrics.Plotter(Config.getInstance().getFormulaMultiplierCurve() + "") {
|
|
||||||
@Override
|
|
||||||
public int getValue() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
metrics.start();
|
|
||||||
}
|
|
||||||
catch (IOException e) {
|
|
||||||
mcMMO.p.getLogger().warning("Failed to submit stats.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Add a set of values to the TNT tracker.
|
* Add a set of values to the TNT tracker.
|
||||||
*
|
*
|
||||||
|
191
src/main/java/com/gmail/nossr50/util/metrics/MetricsManager.java
Normal file
191
src/main/java/com/gmail/nossr50/util/metrics/MetricsManager.java
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
package com.gmail.nossr50.util.metrics;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.HiddenConfig;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
|
||||||
|
import com.turt2live.metrics.Metrics;
|
||||||
|
import com.turt2live.metrics.Metrics.Graph;
|
||||||
|
|
||||||
|
public class MetricsManager {
|
||||||
|
private static boolean setup = false;
|
||||||
|
|
||||||
|
public static void setup() {
|
||||||
|
if (setup) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.getInstance().getStatsTrackingEnabled()) {
|
||||||
|
try {
|
||||||
|
Metrics metrics = new Metrics(mcMMO.p);
|
||||||
|
|
||||||
|
// Timings Graph
|
||||||
|
Graph timingsGraph = metrics.createGraph("Percentage of servers using timings");
|
||||||
|
|
||||||
|
if (mcMMO.p.getServer().getPluginManager().useTimings()) {
|
||||||
|
timingsGraph.addPlotter(new Metrics.Plotter("Enabled") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
timingsGraph.addPlotter(new Metrics.Plotter("Disabled") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Donut Version Graph
|
||||||
|
Graph versionDonutGraph = metrics.createGraph("Donut Version");
|
||||||
|
|
||||||
|
boolean haveVersionInformation = false;
|
||||||
|
boolean isOfficialBuild = false;
|
||||||
|
String officialKey = "e14cfacdd442a953343ebd8529138680";
|
||||||
|
|
||||||
|
String version = mcMMO.p.getDescription().getVersion();
|
||||||
|
|
||||||
|
InputStreamReader isr = new InputStreamReader(mcMMO.p.getResource(".jenkins"));
|
||||||
|
BufferedReader br = new BufferedReader(isr);
|
||||||
|
char[] key = new char[32];
|
||||||
|
br.read(key);
|
||||||
|
if (officialKey.equals(String.valueOf(key))) {
|
||||||
|
isOfficialBuild = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version.contains("-")) {
|
||||||
|
String majorVersion = version.substring(0, version.indexOf("-"));
|
||||||
|
String subVersion = "";
|
||||||
|
if (isOfficialBuild) {
|
||||||
|
int startIndex = version.indexOf("-");
|
||||||
|
if (version.substring(startIndex + 1).contains("-")) {
|
||||||
|
subVersion = version.substring(startIndex, version.indexOf("-", startIndex + 1));
|
||||||
|
} else {
|
||||||
|
subVersion = "-release";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
subVersion = "-custom";
|
||||||
|
}
|
||||||
|
|
||||||
|
version = majorVersion + "~=~" + subVersion;
|
||||||
|
haveVersionInformation = true;
|
||||||
|
} else {
|
||||||
|
haveVersionInformation = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (haveVersionInformation) {
|
||||||
|
versionDonutGraph.addPlotter(new Metrics.Plotter(version) {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Official v Custom build Graph
|
||||||
|
Graph officialGraph = metrics.createGraph("Built by official ci");
|
||||||
|
|
||||||
|
if (isOfficialBuild) {
|
||||||
|
officialGraph.addPlotter(new Metrics.Plotter("Yes") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
officialGraph.addPlotter(new Metrics.Plotter("No") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chunkmeta enabled Graph
|
||||||
|
Graph chunkmetaGraph = metrics.createGraph("Uses Chunkmeta");
|
||||||
|
|
||||||
|
if (HiddenConfig.getInstance().getChunkletsEnabled()) {
|
||||||
|
chunkmetaGraph.addPlotter(new Metrics.Plotter("Yes") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
chunkmetaGraph.addPlotter(new Metrics.Plotter("No") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Storage method Graph
|
||||||
|
Graph storageGraph = metrics.createGraph("Storage method");
|
||||||
|
|
||||||
|
if (Config.getInstance().getUseMySQL()) {
|
||||||
|
storageGraph.addPlotter(new Metrics.Plotter("SQL") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
storageGraph.addPlotter(new Metrics.Plotter("Flatfile") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Locale Graph
|
||||||
|
Graph localeGraph = metrics.createGraph("Locale");
|
||||||
|
|
||||||
|
localeGraph.addPlotter(new Metrics.Plotter(LocaleLoader.getCurrentLocale().getDisplayLanguage(Locale.US)) {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// GlobalMultiplier Graph
|
||||||
|
Graph globalMultiplierGraph = metrics.createGraph("Global Multiplier Graph");
|
||||||
|
|
||||||
|
globalMultiplierGraph.addPlotter(new Metrics.Plotter(Config.getInstance().getExperienceGainsGlobalMultiplier() + "") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// GlobalCurveModifier Graph
|
||||||
|
Graph globalCurveModifierGraph = metrics.createGraph("Global Curve Modifier Graph");
|
||||||
|
|
||||||
|
globalCurveModifierGraph.addPlotter(new Metrics.Plotter(Config.getInstance().getFormulaMultiplierCurve() + "") {
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
metrics.start();
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
mcMMO.p.getLogger().warning("Failed to submit stats.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user