diff --git a/src/com/dre/brewery/BIngredients.java b/src/com/dre/brewery/BIngredients.java index ad0198a..5d56e49 100644 --- a/src/com/dre/brewery/BIngredients.java +++ b/src/com/dre/brewery/BIngredients.java @@ -173,7 +173,7 @@ public class BIngredients { } brew.save(potionMeta); potion.setItemMeta(potionMeta); - P.p.metricsForCreate(brew); + P.p.metricsForCreate(false); return potion; } diff --git a/src/com/dre/brewery/BPlayer.java b/src/com/dre/brewery/BPlayer.java index 77e0d16..289fd7c 100644 --- a/src/com/dre/brewery/BPlayer.java +++ b/src/com/dre/brewery/BPlayer.java @@ -156,6 +156,7 @@ public class BPlayer { if (brew.hasRecipe()) { brew.getCurrentRecipe().applyDrinkFeatures(player); } + P.p.metricsForDrink(brew); int brewAlc = drinkEvent.getAddedAlcohol(); int quality = drinkEvent.getQuality(); diff --git a/src/com/dre/brewery/Brew.java b/src/com/dre/brewery/Brew.java index 1a921f3..5b0d811 100644 --- a/src/com/dre/brewery/Brew.java +++ b/src/com/dre/brewery/Brew.java @@ -729,7 +729,7 @@ public class Brew implements Cloneable { } save(potionMeta); potion.setItemMeta(potionMeta); - P.p.metricsForCreate(this); + P.p.metricsForCreate(true); return potion; } diff --git a/src/com/dre/brewery/P.java b/src/com/dre/brewery/P.java index a801b2b..c5632ad 100644 --- a/src/com/dre/brewery/P.java +++ b/src/com/dre/brewery/P.java @@ -13,6 +13,7 @@ import com.dre.brewery.recipe.BRecipe; import com.dre.brewery.utility.BUtil; import com.dre.brewery.utility.LegacyUtil; import org.apache.commons.lang.math.NumberUtils; +import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -22,6 +23,8 @@ import org.bukkit.event.HandlerList; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; +import java.util.HashMap; +import java.util.Map; public class P extends JavaPlugin { public static P p; @@ -47,7 +50,8 @@ public class P extends JavaPlugin { // Metrics public int brewsCreated; - public int exc, good, norm, bad, terr; + public int brewsCreatedCmd; // Created by command + public int exc, good, norm, bad, terr; // Brews drunken with quality @Override public void onEnable() { @@ -346,7 +350,7 @@ public class P extends JavaPlugin { metrics.addCustomChart(new Metrics.SingleLineChart("barrels_built", () -> Barrel.barrels.size())); metrics.addCustomChart(new Metrics.SingleLineChart("cauldrons_boiling", () -> BCauldron.bcauldrons.size())); metrics.addCustomChart(new Metrics.AdvancedPie("brew_quality", () -> { - Map map = new HashMap<>(5); + Map map = new HashMap<>(8); map.put("excellent", exc); map.put("good", good); map.put("normal", norm); @@ -354,6 +358,13 @@ public class P extends JavaPlugin { map.put("terrible", terr); return map; })); + metrics.addCustomChart(new Metrics.AdvancedPie("brews_created", () -> { + Map map = new HashMap<>(4); + map.put("by command", brewsCreatedCmd); + map.put("brewing", brewsCreated - brewsCreatedCmd); + return map; + })); + metrics.addCustomChart(new Metrics.SimplePie("number_of_recipes", () -> { int recipes = BRecipe.getAllRecipes().size(); if (recipes < 7) { @@ -374,6 +385,63 @@ public class P extends JavaPlugin { } })); + metrics.addCustomChart(new Metrics.SimplePie("v2_mc_version", () -> { + String mcv = Bukkit.getBukkitVersion(); + mcv = mcv.substring(0, mcv.indexOf('.', 2)); + if (mcv.matches("^\\d\\.\\d{1,2}$")) { + // Start, digit, dot, 1-2 digits, end + return mcv; + } else { + return "undef"; + } + })); + metrics.addCustomChart(new Metrics.DrilldownPie("plugin_mc_version", () -> { + Map> map = new HashMap<>(3); + String mcv = Bukkit.getBukkitVersion(); + mcv = mcv.substring(0, mcv.indexOf('.', 2)); + if (mcv.matches("^\\d\\.\\d{1,2}$")) { + // Start, digit, dot, 1-2 digits, end + mcv = "MC " + mcv; + } else { + mcv = "undef"; + } + Map innerMap = new HashMap<>(3); + innerMap.put(mcv, 1); + map.put(getDescription().getVersion(), innerMap); + return map; + })); + metrics.addCustomChart(new Metrics.SimplePie("language", () -> language)); + metrics.addCustomChart(new Metrics.SimplePie("config_scramble", () -> BConfig.enableEncode ? "enabled" : "disabled")); + metrics.addCustomChart(new Metrics.SimplePie("config_lore_color", () -> { + if (BConfig.colorInBarrels) { + if (BConfig.colorInBrewer) { + return "both"; + } else { + return "in barrels"; + } + } else { + if (BConfig.colorInBrewer) { + return "in distiller"; + } else { + return "none"; + } + } + })); + metrics.addCustomChart(new Metrics.SimplePie("config_always_show", () -> { + if (BConfig.alwaysShowQuality) { + if (BConfig.alwaysShowAlc) { + return "both"; + } else { + return "quality stars"; + } + } else { + if (BConfig.alwaysShowAlc) { + return "alc content"; + } else { + return "none"; + } + } + })); } catch (Throwable e) { e.printStackTrace(); }*/ @@ -519,9 +587,16 @@ public class P extends JavaPlugin { return p; } - public void metricsForCreate(Brew brew) { + public void metricsForCreate(boolean byCmd) { if (brewsCreated == Integer.MAX_VALUE) return; brewsCreated++; + if (byCmd) { + if (brewsCreatedCmd == Integer.MAX_VALUE) return; + brewsCreatedCmd++; + } + } + + public void metricsForDrink(Brew brew) { if (brew.getQuality() >= 9) { exc++; } else if (brew.getQuality() >= 7) { diff --git a/src/com/dre/brewery/filedata/BData.java b/src/com/dre/brewery/filedata/BData.java index 750291b..0ddb8b9 100644 --- a/src/com/dre/brewery/filedata/BData.java +++ b/src/com/dre/brewery/filedata/BData.java @@ -50,16 +50,17 @@ public class BData { Brew.loadPrevSeeds(data); List brewsCreated = data.getIntegerList("brewsCreated"); - if (brewsCreated != null && brewsCreated.size() == 6) { + if (brewsCreated != null && brewsCreated.size() == 7) { int hash = data.getInt("brewsCreatedH"); // Check the hash to prevent tampering with statistics if (brewsCreated.hashCode() == hash) { P.p.brewsCreated = brewsCreated.get(0); - P.p.exc = brewsCreated.get(1); - P.p.good = brewsCreated.get(2); - P.p.norm = brewsCreated.get(3); - P.p.bad = brewsCreated.get(4); - P.p.terr = brewsCreated.get(5); + P.p.brewsCreatedCmd = brewsCreated.get(1); + P.p.exc = brewsCreated.get(2); + P.p.good = brewsCreated.get(3); + P.p.norm = brewsCreated.get(4); + P.p.bad = brewsCreated.get(5); + P.p.terr = brewsCreated.get(6); } } @@ -126,6 +127,7 @@ public class BData { // Store how many legacy brews were created if (P.p.brewsCreated <= 0) { P.p.brewsCreated = 0; + P.p.brewsCreatedCmd = 0; P.p.exc = 0; P.p.good = 0; P.p.norm = 0; @@ -133,7 +135,7 @@ public class BData { P.p.terr = 0; if (!Brew.noLegacy()) { for (Brew brew : Brew.legacyPotions.values()) { - P.p.metricsForCreate(brew); + P.p.metricsForCreate(false); } } } diff --git a/src/com/dre/brewery/filedata/DataSave.java b/src/com/dre/brewery/filedata/DataSave.java index 5a10a7d..5c3dfa3 100644 --- a/src/com/dre/brewery/filedata/DataSave.java +++ b/src/com/dre/brewery/filedata/DataSave.java @@ -61,8 +61,9 @@ public class DataSave extends BukkitRunnable { Brew.writePrevSeeds(configFile); - List brewsCreated = new ArrayList<>(6); + List brewsCreated = new ArrayList<>(7); brewsCreated.add(P.p.brewsCreated); + brewsCreated.add(P.p.brewsCreatedCmd); brewsCreated.add(P.p.exc); brewsCreated.add(P.p.good); brewsCreated.add(P.p.norm);