Add bStats metrics.

Metrics will greatly help the development process in terms of finding out which server versions people are running, as well as which features they are using. For now, we check to see how widespread Vault is, and how many arenas and classes people have.

Advanced bar charts are, at the time of this commit, not supported in the bStats dashboard. When they are supported again, we can look into usage statistics for specific settings and features.
This commit is contained in:
Andreas Troelsen 2018-05-14 21:11:25 +02:00
parent 94c1000d73
commit c325317153
5 changed files with 99 additions and 0 deletions

36
pom.xml
View File

@ -31,6 +31,30 @@
<finalName>MobArena</finalName> <finalName>MobArena</finalName>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
<relocations>
<relocation>
<pattern>org.bstats</pattern>
<shadedPattern>com.garbagemule.MobArena.metrics</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins> </plugins>
<resources> <resources>
@ -54,6 +78,11 @@
<id>vault-repo</id> <id>vault-repo</id>
<url>http://nexus.hc.to/content/repositories/pub_releases</url> <url>http://nexus.hc.to/content/repositories/pub_releases</url>
</repository> </repository>
<repository>
<id>bstats-repo</id>
<url>http://repo.bstats.org/content/repositories/releases/</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
@ -73,6 +102,13 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<!-- Magic Spells (tentative) --> <!-- Magic Spells (tentative) -->
<dependency> <dependency>
<groupId>com.nisovin</groupId> <groupId>com.nisovin</groupId>

View File

@ -5,11 +5,15 @@ import com.garbagemule.MobArena.framework.Arena;
import com.garbagemule.MobArena.framework.ArenaMaster; import com.garbagemule.MobArena.framework.ArenaMaster;
import com.garbagemule.MobArena.listeners.MAGlobalListener; import com.garbagemule.MobArena.listeners.MAGlobalListener;
import com.garbagemule.MobArena.listeners.MagicSpellsListener; import com.garbagemule.MobArena.listeners.MagicSpellsListener;
import com.garbagemule.MobArena.metrics.ArenaCountChart;
import com.garbagemule.MobArena.metrics.ClassCountChart;
import com.garbagemule.MobArena.metrics.VaultChart;
import com.garbagemule.MobArena.things.ThingManager; import com.garbagemule.MobArena.things.ThingManager;
import com.garbagemule.MobArena.util.VersionChecker; import com.garbagemule.MobArena.util.VersionChecker;
import com.garbagemule.MobArena.util.config.ConfigUtils; import com.garbagemule.MobArena.util.config.ConfigUtils;
import com.garbagemule.MobArena.waves.ability.AbilityManager; import com.garbagemule.MobArena.waves.ability.AbilityManager;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import org.bstats.bukkit.Metrics;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
@ -87,6 +91,9 @@ public class MobArena extends JavaPlugin
// Register event listeners // Register event listeners
registerListeners(); registerListeners();
// Setup bStats metrics
setupMetrics();
// Announce enable! // Announce enable!
getLogger().info("v" + this.getDescription().getVersion() + " enabled."); getLogger().info("v" + this.getDescription().getVersion() + " enabled.");
@ -224,6 +231,13 @@ public class MobArena extends JavaPlugin
getLogger().info("MagicSpells found, loading config-file."); getLogger().info("MagicSpells found, loading config-file.");
this.getServer().getPluginManager().registerEvents(new MagicSpellsListener(this), this); this.getServer().getPluginManager().registerEvents(new MagicSpellsListener(this), this);
} }
private void setupMetrics() {
Metrics metrics = new Metrics(this);
metrics.addCustomChart(new VaultChart(this));
metrics.addCustomChart(new ArenaCountChart(this));
metrics.addCustomChart(new ClassCountChart(this));
}
private void loadAbilities() { private void loadAbilities() {
File dir = new File(this.getDataFolder(), "abilities"); File dir = new File(this.getDataFolder(), "abilities");

View File

@ -0,0 +1,18 @@
package com.garbagemule.MobArena.metrics;
import com.garbagemule.MobArena.MobArena;
import org.bstats.bukkit.Metrics;
public class ArenaCountChart extends Metrics.SimplePie {
public ArenaCountChart(MobArena plugin) {
super("arena_count", () -> {
int count = plugin.getArenaMaster().getArenas().size();
if (count < 10) {
return String.valueOf(count);
}
return "10+";
});
}
}

View File

@ -0,0 +1,19 @@
package com.garbagemule.MobArena.metrics;
import com.garbagemule.MobArena.MobArena;
import org.bstats.bukkit.Metrics;
public class ClassCountChart extends Metrics.SimplePie {
public ClassCountChart(MobArena plugin) {
super("class_count", () -> {
// We don't count "My Items", so subtract 1
int count = plugin.getArenaMaster().getClasses().size() - 1;
if (count < 10) {
return String.valueOf(count);
}
return "10+";
});
}
}

View File

@ -0,0 +1,12 @@
package com.garbagemule.MobArena.metrics;
import com.garbagemule.MobArena.MobArena;
import org.bstats.bukkit.Metrics;
public class VaultChart extends Metrics.SimplePie {
public VaultChart(MobArena plugin) {
super("uses_vault", () -> plugin.getEconomy() != null ? "Yes" : "No");
}
}