123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- package com.gmail.nossr50.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.config.experience.ExperienceConfig;
- import com.gmail.nossr50.datatypes.experience.FormulaType;
- import com.gmail.nossr50.locale.LocaleLoader;
- import com.turt2live.metrics.EMetrics;
- import com.turt2live.metrics.Metrics;
- import com.turt2live.metrics.Metrics.Graph;
- import com.turt2live.metrics.data.DataEvent;
- import com.turt2live.metrics.data.DataTracker;
- import com.turt2live.metrics.tracker.Tracker;
- public class MetricsManager {
- private static boolean setup = false;
- private static Tracker chimeraUseTracker;
- private static Tracker chimeraServerUseTracker;
- private static boolean customConfig = false;
- private static DataTracker tracker;
- private static EMetrics emetrics;
- public static void setup() {
- if (setup) {
- return;
- }
- if (Config.getInstance().getStatsTrackingEnabled()) {
- try {
- emetrics = new EMetrics(mcMMO.p);
- Metrics metrics = emetrics.getMetrics();
- // 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;
- }
- 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;
- }
- });
- // ExperienceFormulaShape Graph
- Graph experienceFormulaShapeGraph = metrics.createGraph("Experience Formula Shape Graph");
- experienceFormulaShapeGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getFormulaType().toString()) {
- @Override
- public int getValue() {
- return 1;
- }
- });
- // GlobalMultiplier Graph
- Graph globalMultiplierGraph = metrics.createGraph("Global Multiplier Graph");
- globalMultiplierGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() + "") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- // GlobalCurveModifier Graph
- Graph globalCurveModifierGraph = metrics.createGraph("Global Curve Modifier Graph");
- globalCurveModifierGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getMultiplier(FormulaType.LINEAR) + "") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- // GlobalMultiplierGraph Fuzzy Logic Numbers
- Graph globalMultiplierGraphFuzzy = metrics.createGraph("Global Multiplier Fuzz");
- if (ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() > 1.0) {
- globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Higher") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- else if (ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() < 1.0) {
- globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Lower") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- else {
- globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Default") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- // GlobalCurveModifier Fuzzy Logic Numbers
- Graph globalCurveMultiplierGraphFuzzy = metrics.createGraph("Global Curve Multiplier Fuzz");
- if (ExperienceConfig.getInstance().getMultiplier(FormulaType.LINEAR) > 20.0) {
- globalCurveMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Higher") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- else if (ExperienceConfig.getInstance().getMultiplier(FormulaType.LINEAR) < 20.0) {
- globalCurveMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Lower") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- else {
- globalCurveMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Default") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- // Chimera Wing Usage Trackers
- final String chimeraGraphName = "Chimera Wing Usage";
- chimeraUseTracker = EMetrics.createBasicTracker(chimeraGraphName, "Player use");
- chimeraServerUseTracker = EMetrics.createEnabledTracker(chimeraGraphName, "Server use");
- emetrics.addTracker(chimeraUseTracker);
- emetrics.addTracker(chimeraServerUseTracker);
- // Chimera Wing Enabled Graph
- Graph chimeraGraph = metrics.createGraph("Chimera Wing");
- if (Config.getInstance().getChimaeraEnabled()) {
- chimeraGraph.addPlotter(new Metrics.Plotter("Enabled") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- else {
- chimeraGraph.addPlotter(new Metrics.Plotter("Disabled") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- // Vanilla v Modified config graph
- Graph customConfigGraph = metrics.createGraph("Modified Configs");
- if (customConfig) {
- customConfigGraph.addPlotter(new Metrics.Plotter("Edited") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- else {
- customConfigGraph.addPlotter(new Metrics.Plotter("Vanilla") {
- @Override
- public int getValue() {
- return 1;
- }
- });
- }
- /*
- * Debug stuff
- * tracker = emetrics.getDataTracker();
- * tracker.enable();
- * tracker.setFilter(new DataEvent.DataType [] { DataEvent.DataType.SEND_DATA });
- */
- emetrics.startMetrics();
- }
- catch (IOException e) {
- mcMMO.p.getLogger().warning("Failed to submit stats.");
- }
- }
- }
- public static void chimeraWingUsed() {
- chimeraUseTracker.increment();
- chimeraServerUseTracker.increment();
- }
- public static void customConfig() {
- customConfig = true;
- }
- @SuppressWarnings("unused")
- private static void debug() {
- emetrics.getMetrics().flush();
- for (DataEvent event : tracker.getEvents()) {
- String graphName = event.getGraphName();
- String colName = event.getTrackerName();
- int value = event.getValueSent();
- System.out.println("Graph: " + graphName + ", Column: " + colName + ", Value: " + value);
- }
- tracker.resetEvents();
- }
- }
|