Add metrics for used economy and hooked dependencies

This commit is contained in:
Phoenix616 2023-06-14 15:50:43 +01:00
parent 30ff61d14f
commit 999f596125
No known key found for this signature in database
GPG Key ID: 40E2321E71738EB0
5 changed files with 67 additions and 4 deletions

View File

@ -110,6 +110,8 @@ public class ChestShop extends JavaPlugin {
private static PluginDescriptionFile description; private static PluginDescriptionFile description;
private static final ExecutorService executorService = Executors.newCachedThreadPool(); private static final ExecutorService executorService = Executors.newCachedThreadPool();
private static Metrics bStats;
private static BukkitAudiences audiences; private static BukkitAudiences audiences;
private static File dataFolder; private static File dataFolder;
@ -135,6 +137,7 @@ public class ChestShop extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
bStats = new Metrics(this, 1109);
audiences = BukkitAudiences.create(this); audiences = BukkitAudiences.create(this);
turnOffDatabaseLogging(); turnOffDatabaseLogging();
if (!handleMigrations()) { if (!handleMigrations()) {
@ -445,7 +448,6 @@ public class ChestShop extends JavaPlugin {
} }
private void startStatistics() { private void startStatistics() {
Metrics bStats = new Metrics(this, 1109);
try (JarFile jarFile = new JarFile(this.getFile())) { try (JarFile jarFile = new JarFile(this.getFile())) {
String dist = jarFile.getManifest().getMainAttributes().getValue("Distribution-Type"); String dist = jarFile.getManifest().getMainAttributes().getValue("Distribution-Type");
bStats.addCustomChart(new SimplePie("distributionType", () -> dist)); bStats.addCustomChart(new SimplePie("distributionType", () -> dist));
@ -511,7 +513,7 @@ public class ChestShop extends JavaPlugin {
() -> Properties.SHOP_CONTAINERS.stream().map(Material::name).collect(Collectors.toMap(k -> k, k -> 1)))); () -> Properties.SHOP_CONTAINERS.stream().map(Material::name).collect(Collectors.toMap(k -> k, k -> 1))));
} }
private DrilldownPie createStaticDrilldownStat(String statId, String value1, String value2) { public static DrilldownPie createStaticDrilldownStat(String statId, String value1, String value2) {
final Map<String, Map<String, Integer>> map = ImmutableMap.of(value1, ImmutableMap.of(value2, 1)); final Map<String, Map<String, Integer>> map = ImmutableMap.of(value1, ImmutableMap.of(value2, 1));
return new DrilldownPie(statId, () -> map); return new DrilldownPie(statId, () -> map);
} }
@ -581,6 +583,10 @@ public class ChestShop extends JavaPlugin {
return plugin; return plugin;
} }
public static Metrics getMetrics() {
return bStats;
}
public static BukkitAudiences getAudiences() { public static BukkitAudiences getAudiences() {
return audiences; return audiences;
} }

View File

@ -2,9 +2,12 @@ package com.Acrobot.ChestShop;
import com.Acrobot.Breeze.Utils.MaterialUtil; import com.Acrobot.Breeze.Utils.MaterialUtil;
import com.Acrobot.ChestShop.Configuration.Properties; import com.Acrobot.ChestShop.Configuration.Properties;
import com.Acrobot.ChestShop.Listeners.Economy.EconomyAdapter;
import com.Acrobot.ChestShop.Listeners.Economy.Plugins.ReserveListener; import com.Acrobot.ChestShop.Listeners.Economy.Plugins.ReserveListener;
import com.Acrobot.ChestShop.Listeners.Economy.Plugins.VaultListener; import com.Acrobot.ChestShop.Listeners.Economy.Plugins.VaultListener;
import com.Acrobot.ChestShop.Plugins.*; import com.Acrobot.ChestShop.Plugins.*;
import com.google.common.collect.ImmutableMap;
import org.bstats.charts.DrilldownPie;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@ -14,11 +17,18 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author Acrobot * @author Acrobot
*/ */
public class Dependencies implements Listener { public class Dependencies implements Listener {
private static final Map<String, String> versions = new HashMap<>();
public static void initializePlugins() { public static void initializePlugins() {
PluginManager pluginManager = Bukkit.getPluginManager(); PluginManager pluginManager = Bukkit.getPluginManager();
@ -62,13 +72,23 @@ public class Dependencies implements Listener {
} }
} }
return loadEconomy(); if (loadEconomy()) {
Map<String, Map<String, Integer>> map = versions.entrySet().stream()
.map(e -> new AbstractMap.SimpleEntry<String, Map<String, Integer>>(e.getKey(), ImmutableMap.of(e.getValue(), 1)))
.collect(Collectors.toMap(
AbstractMap.SimpleEntry::getKey,
AbstractMap.SimpleEntry::getValue
));
ChestShop.getMetrics().addCustomChart(new DrilldownPie("dependencies", () -> map));
return true;
}
return false;
} }
private static boolean loadEconomy() { private static boolean loadEconomy() {
String plugin = "none"; String plugin = "none";
Listener economy = null; EconomyAdapter economy = null;
if(Bukkit.getPluginManager().getPlugin("Reserve") != null) { if(Bukkit.getPluginManager().getPlugin("Reserve") != null) {
plugin = "Reserve"; plugin = "Reserve";
@ -85,6 +105,10 @@ public class Dependencies implements Listener {
return false; return false;
} }
versions.put(plugin, Bukkit.getPluginManager().getPlugin(plugin).getDescription().getVersion());
ChestShop.getMetrics().addCustomChart(ChestShop.createStaticDrilldownStat("economyPlugin", economy.getProviderInfo().getName(), economy.getProviderInfo().getVersion()));
ChestShop.registerListener(economy); ChestShop.registerListener(economy);
ChestShop.getBukkitLogger().info(plugin + " loaded!"); ChestShop.getBukkitLogger().info(plugin + " loaded!");
return true; return true;
@ -187,6 +211,7 @@ public class Dependencies implements Listener {
} }
PluginDescriptionFile description = plugin.getDescription(); PluginDescriptionFile description = plugin.getDescription();
versions.put(description.getName(), description.getVersion());
ChestShop.getBukkitLogger().info(description.getName() + " version " + description.getVersion() + " loaded."); ChestShop.getBukkitLogger().info(description.getName() + " version " + description.getVersion() + " loaded.");
} }

View File

@ -16,6 +16,8 @@ import java.math.BigDecimal;
public abstract class EconomyAdapter implements Listener { public abstract class EconomyAdapter implements Listener {
public abstract ProviderInfo getProviderInfo();
public abstract void onAmountCheck(CurrencyAmountEvent event); public abstract void onAmountCheck(CurrencyAmountEvent event);
public abstract void onCurrencyCheck(CurrencyCheckEvent event); public abstract void onCurrencyCheck(CurrencyCheckEvent event);
@ -74,4 +76,21 @@ public abstract class EconomyAdapter implements Listener {
} }
} }
public static class ProviderInfo {
private final String name;
private final String version;
public ProviderInfo(String name, String version) {
this.name = name;
this.version = version;
}
public String getName() {
return name;
}
public String getVersion() {
return version;
}
}
} }

View File

@ -32,6 +32,11 @@ public class ReserveListener extends EconomyAdapter {
ReserveListener.economyAPI = api; ReserveListener.economyAPI = api;
} }
@Override
public ProviderInfo getProviderInfo() {
return new ProviderInfo(economyAPI.name(), economyAPI.version());
}
public static EconomyAPI getProvider() { public static EconomyAPI getProvider() {
return economyAPI; return economyAPI;
} }

View File

@ -17,6 +17,7 @@ import org.bukkit.World;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.server.ServiceRegisterEvent; import org.bukkit.event.server.ServiceRegisterEvent;
import org.bukkit.event.server.ServiceUnregisterEvent; import org.bukkit.event.server.ServiceUnregisterEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.RegisteredServiceProvider;
import com.Acrobot.ChestShop.ChestShop; import com.Acrobot.ChestShop.ChestShop;
@ -37,6 +38,7 @@ import com.Acrobot.ChestShop.Events.Economy.CurrencyTransferEvent;
public class VaultListener extends EconomyAdapter { public class VaultListener extends EconomyAdapter {
private RegisteredServiceProvider<Economy> rsp; private RegisteredServiceProvider<Economy> rsp;
private static Economy provider; private static Economy provider;
private Plugin providingPlugin;
private VaultListener() { private VaultListener() {
updateEconomyProvider(); updateEconomyProvider();
@ -47,6 +49,7 @@ public class VaultListener extends EconomyAdapter {
if (rsp != null) { if (rsp != null) {
provider = rsp.getProvider(); provider = rsp.getProvider();
providingPlugin = rsp.getPlugin();
ChestShop.getBukkitLogger().log(Level.INFO, "Using " + provider.getName() + " as the Economy provider now."); ChestShop.getBukkitLogger().log(Level.INFO, "Using " + provider.getName() + " as the Economy provider now.");
} }
} }
@ -60,6 +63,11 @@ public class VaultListener extends EconomyAdapter {
return true; return true;
} }
@Override
public ProviderInfo getProviderInfo() {
return new ProviderInfo(provider.getName(), providingPlugin.getDescription().getVersion());
}
public static Economy getProvider() { return provider; } public static Economy getProvider() { return provider; }
public boolean transactionCanFail() { public boolean transactionCanFail() {