From db38a89ee6dbace8bbc72ba942b8e65482e1b958 Mon Sep 17 00:00:00 2001 From: Paul Reilly Date: Mon, 13 Jul 2020 11:05:45 -0500 Subject: [PATCH] Added bStats Plugin Metrics Title reference --- .idea/workspace.xml | 36 +- pom.xml | 14 +- src/main/java/dev/coomware/Uncraftables.java | 5 + src/main/java/org/bstats/Metrics.java | 703 ++++++++++++++++++ src/main/resources/plugin.yml | 2 +- target/Uncraftables-1.0.0.jar | Bin 15255 -> 0 bytes target/Uncraftables-1.0.1.jar | Bin 15253 -> 0 bytes target/Uncraftables-1.1.0.jar | Bin 0 -> 33517 bytes target/classes/dev/coomware/Craftable.class | Bin 28358 -> 28358 bytes .../dev/coomware/CraftingListener.class | Bin 2406 -> 2476 bytes .../classes/dev/coomware/CraftingUtils.class | Bin 1401 -> 1401 bytes .../classes/dev/coomware/Uncraftables.class | Bin 1169 -> 1409 bytes target/classes/org/bstats/Metrics$1.class | Bin 0 -> 1712 bytes .../org/bstats/Metrics$AdvancedBarChart.class | Bin 0 -> 2498 bytes .../org/bstats/Metrics$AdvancedPie.class | Bin 0 -> 2261 bytes .../org/bstats/Metrics$CustomChart.class | Bin 0 -> 2126 bytes .../org/bstats/Metrics$DrilldownPie.class | Bin 0 -> 2687 bytes .../org/bstats/Metrics$MultiLineChart.class | Bin 0 -> 2270 bytes .../org/bstats/Metrics$SimpleBarChart.class | Bin 0 -> 2298 bytes .../org/bstats/Metrics$SimplePie.class | Bin 0 -> 1353 bytes .../org/bstats/Metrics$SingleLineChart.class | Bin 0 -> 1417 bytes target/classes/org/bstats/Metrics.class | Bin 0 -> 14557 bytes target/classes/plugin.yml | 2 +- target/maven-archiver/pom.properties | 4 +- .../compile/default-compile/createdFiles.lst | 12 +- 25 files changed, 762 insertions(+), 16 deletions(-) create mode 100644 src/main/java/org/bstats/Metrics.java delete mode 100644 target/Uncraftables-1.0.0.jar delete mode 100644 target/Uncraftables-1.0.1.jar create mode 100644 target/Uncraftables-1.1.0.jar create mode 100644 target/classes/org/bstats/Metrics$1.class create mode 100644 target/classes/org/bstats/Metrics$AdvancedBarChart.class create mode 100644 target/classes/org/bstats/Metrics$AdvancedPie.class create mode 100644 target/classes/org/bstats/Metrics$CustomChart.class create mode 100644 target/classes/org/bstats/Metrics$DrilldownPie.class create mode 100644 target/classes/org/bstats/Metrics$MultiLineChart.class create mode 100644 target/classes/org/bstats/Metrics$SimpleBarChart.class create mode 100644 target/classes/org/bstats/Metrics$SimplePie.class create mode 100644 target/classes/org/bstats/Metrics$SingleLineChart.class create mode 100644 target/classes/org/bstats/Metrics.class diff --git a/.idea/workspace.xml b/.idea/workspace.xml index ea02802..50975c4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,14 +2,19 @@ - + - + + + + + + + + + @@ -63,30 +71,38 @@ + + + + - + - - + + - - + + - - + + - + + + + + diff --git a/pom.xml b/pom.xml index cf9f440..492445b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,19 @@ dev.coomware Uncraftables - 1.0.1 + 1.1.0 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + diff --git a/src/main/java/dev/coomware/Uncraftables.java b/src/main/java/dev/coomware/Uncraftables.java index 06ef1b0..5d27600 100644 --- a/src/main/java/dev/coomware/Uncraftables.java +++ b/src/main/java/dev/coomware/Uncraftables.java @@ -1,5 +1,6 @@ package dev.coomware; +import org.bstats.Metrics; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.plugin.java.JavaPlugin; @@ -8,6 +9,7 @@ public class Uncraftables extends JavaPlugin { public static Uncraftables plugin; public Server server; public CraftingUtils util; + public int pluginId = 8179; @Override public void onLoad() { @@ -18,6 +20,9 @@ public class Uncraftables extends JavaPlugin { @Override public void onEnable() { + final Metrics metrics = new Metrics(this, pluginId); + Bukkit.getLogger().info("[Uncraftables] Successfully enabled bStats metrics!"); + new Craftable(this).craftables(); new CraftingListener(this); Bukkit.getLogger().info("[Uncraftables] successfully loaded all recipes."); diff --git a/src/main/java/org/bstats/Metrics.java b/src/main/java/org/bstats/Metrics.java new file mode 100644 index 0000000..9a9defa --- /dev/null +++ b/src/main/java/org/bstats/Metrics.java @@ -0,0 +1,703 @@ +package org.bstats; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonPrimitive; + +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.RegisteredServiceProvider; +import org.bukkit.plugin.ServicePriority; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.net.ssl.HttpsURLConnection; +import java.io.*; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.concurrent.Callable; +import java.util.logging.Level; +import java.util.zip.GZIPOutputStream; + +@SuppressWarnings({"WeakerAccess", "unused"}) +public class Metrics { + // The version of this bStats class + public static final int B_STATS_VERSION = 1; + + // The url to which the data is sent + private static final String URL = "https://bStats.org/submitData/bukkit"; + + // Is bStats enabled on this server? + private boolean enabled; + + // Should failed requests be logged? + private static boolean logFailedRequests; + + // Should the sent data be logged? + private static boolean logSentData; + + // Should the response text be logged? + private static boolean logResponseStatusText; + + // The uuid of the server + private static String serverUUID; + + // The plugin + private final Plugin plugin; + + // The plugin id + private final int pluginId; + + // A list with all custom charts + private final List charts = new ArrayList<>(); + + /** + * Class constructor. + * + * @param plugin The plugin which stats should be submitted. + * @param pluginId The id of the plugin. + * It can be found at What is my plugin id? + */ + public Metrics(@NotNull Plugin plugin, int pluginId) { + this.plugin = plugin; + this.pluginId = pluginId; + + // Get the config file + File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats"); + File configFile = new File(bStatsFolder, "config.yml"); + YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); + + // Check if the config file exists + if (!config.isSet("serverUuid")) { + + // Add default values + config.addDefault("enabled", true); + // Every server gets it's unique random id. + config.addDefault("serverUuid", UUID.randomUUID().toString()); + // Should failed request be logged? + config.addDefault("logFailedRequests", false); + // Should the sent data be logged? + config.addDefault("logSentData", false); + // Should the response text be logged? + config.addDefault("logResponseStatusText", false); + + // Inform the server owners about bStats + config.options().header( + "bStats collects some data for plugin authors like how many servers are using their plugins.\n" + + "To honor their work, you should not disable it.\n" + + "This has nearly no effect on the server performance!\n" + + "Check out https://bStats.org/ to learn more :)" + ).copyDefaults(true); + try { + config.save(configFile); + } catch (IOException ignored) { } + } + + // Load the data + enabled = config.getBoolean("enabled", true); + serverUUID = config.getString("serverUuid"); + logFailedRequests = config.getBoolean("logFailedRequests", false); + logSentData = config.getBoolean("logSentData", false); + logResponseStatusText = config.getBoolean("logResponseStatusText", false); + + if (enabled) { + boolean found = false; + // Search for all other bStats Metrics classes to see if we are the first one + for (Class service : Bukkit.getServicesManager().getKnownServices()) { + try { + service.getField("B_STATS_VERSION"); // Our identifier :) + found = true; // We aren't the first + break; + } catch (NoSuchFieldException ignored) { } + } + // Register our service + Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal); + if (!found) { + // We are the first! + startSubmitting(); + } + } + } + + /** + * Checks if bStats is enabled. + * + * @return Whether bStats is enabled or not. + */ + public boolean isEnabled() { + return enabled; + } + + /** + * Adds a custom chart. + * + * @param chart The chart to add. + */ + public void addCustomChart(CustomChart chart) { + if (chart == null) { + throw new IllegalArgumentException("Chart cannot be null!"); + } + charts.add(chart); + } + + /** + * Starts the Scheduler which submits our data every 30 minutes. + */ + private void startSubmitting() { + final Timer timer = new Timer(true); // We use a timer cause the Bukkit scheduler is affected by server lags + timer.scheduleAtFixedRate(new TimerTask() { + @Override + public void run() { + if (!plugin.isEnabled()) { // Plugin was disabled + timer.cancel(); + return; + } + // Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler + // Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;) + Bukkit.getScheduler().runTask(plugin, () -> submitData()); + } + }, 1000 * 60 * 5, 1000 * 60 * 30); + // Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start + // WARNING: Changing the frequency has no effect but your plugin WILL be blocked/deleted! + // WARNING: Just don't do it! + } + + /** + * Gets the plugin specific data. + * This method is called using Reflection. + * + * @return The plugin specific data. + */ + public JsonObject getPluginData() { + JsonObject data = new JsonObject(); + + String pluginName = plugin.getDescription().getName(); + String pluginVersion = plugin.getDescription().getVersion(); + + data.addProperty("pluginName", pluginName); // Append the name of the plugin + data.addProperty("id", pluginId); // Append the id of the plugin + data.addProperty("pluginVersion", pluginVersion); // Append the version of the plugin + JsonArray customCharts = new JsonArray(); + for (CustomChart customChart : charts) { + // Add the data of the custom charts + JsonObject chart = customChart.getRequestJsonObject(); + if (chart == null) { // If the chart is null, we skip it + continue; + } + customCharts.add(chart); + } + data.add("customCharts", customCharts); + + return data; + } + + /** + * Gets the server specific data. + * + * @return The server specific data. + */ + @NotNull + private JsonObject getServerData() { + // Minecraft specific data + int playerAmount; + try { + // Around MC 1.8 the return type was changed to a collection from an array, + // This fixes java.lang.NoSuchMethodError: org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection; + Method onlinePlayersMethod = Class.forName("org.bukkit.Server").getMethod("getOnlinePlayers"); + playerAmount = onlinePlayersMethod.getReturnType().equals(Collection.class) + ? ((Collection) onlinePlayersMethod.invoke(Bukkit.getServer())).size() + : ((Player[]) onlinePlayersMethod.invoke(Bukkit.getServer())).length; + } catch (Exception e) { + playerAmount = Bukkit.getOnlinePlayers().size(); // Just use the new method if the Reflection failed + } + int onlineMode = Bukkit.getOnlineMode() ? 1 : 0; + String bukkitVersion = Bukkit.getVersion(); + String bukkitName = Bukkit.getName(); + + // OS/Java specific data + String javaVersion = System.getProperty("java.version"); + String osName = System.getProperty("os.name"); + String osArch = System.getProperty("os.arch"); + String osVersion = System.getProperty("os.version"); + int coreCount = Runtime.getRuntime().availableProcessors(); + + JsonObject data = new JsonObject(); + + data.addProperty("serverUUID", serverUUID); + + data.addProperty("playerAmount", playerAmount); + data.addProperty("onlineMode", onlineMode); + data.addProperty("bukkitVersion", bukkitVersion); + data.addProperty("bukkitName", bukkitName); + + data.addProperty("javaVersion", javaVersion); + data.addProperty("osName", osName); + data.addProperty("osArch", osArch); + data.addProperty("osVersion", osVersion); + data.addProperty("coreCount", coreCount); + + return data; + } + + /** + * Collects the data and sends it afterwards. + */ + private void submitData() { + final JsonObject data = getServerData(); + + JsonArray pluginData = new JsonArray(); + // Search for all other bStats Metrics classes to get their plugin data + for (Class service : Bukkit.getServicesManager().getKnownServices()) { + try { + service.getField("B_STATS_VERSION"); // Our identifier :) + + for (RegisteredServiceProvider provider : Bukkit.getServicesManager().getRegistrations(service)) { + try { + Object plugin = provider.getService().getMethod("getPluginData").invoke(provider.getProvider()); + if (plugin instanceof JsonObject) { + pluginData.add((JsonObject) plugin); + } else { // old bstats version compatibility + try { + Class jsonObjectJsonSimple = Class.forName("org.json.simple.JSONObject"); + if (plugin.getClass().isAssignableFrom(jsonObjectJsonSimple)) { + Method jsonStringGetter = jsonObjectJsonSimple.getDeclaredMethod("toJSONString"); + jsonStringGetter.setAccessible(true); + String jsonString = (String) jsonStringGetter.invoke(plugin); + JsonObject object = new JsonParser().parse(jsonString).getAsJsonObject(); + pluginData.add(object); + } + } catch (ClassNotFoundException e) { + // minecraft version 1.14+ + if (logFailedRequests) { + this.plugin.getLogger().log(Level.SEVERE, "Encountered unexpected exception", e); + } + } + } + } catch (NullPointerException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } + } + } catch (NoSuchFieldException ignored) { } + } + + data.add("plugins", pluginData); + + // Create a new thread for the connection to the bStats server + new Thread(() -> { + try { + // Send the data + sendData(plugin, data); + } catch (Exception e) { + // Something went wrong! :( + if (logFailedRequests) { + plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e); + } + } + }).start(); + } + + /** + * Sends the data to the bStats server. + * + * @param plugin Any plugin. It's just used to get a logger instance. + * @param data The data to send. + * @throws Exception If the request failed. + */ + private static void sendData(Plugin plugin, JsonObject data) throws Exception { + if (data == null) { + throw new IllegalArgumentException("Data cannot be null!"); + } + if (Bukkit.isPrimaryThread()) { + throw new IllegalAccessException("This method must not be called from the main thread!"); + } + if (logSentData) { + plugin.getLogger().info("Sending data to bStats: " + data); + } + HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); + + // Compress the data to save bandwidth + byte[] compressedData = compress(data.toString()); + + // Add headers + connection.setRequestMethod("POST"); + connection.addRequestProperty("Accept", "application/json"); + connection.addRequestProperty("Connection", "close"); + connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request + connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); + connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format + connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); + + // Send data + connection.setDoOutput(true); + try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { + outputStream.write(compressedData); + } + + StringBuilder builder = new StringBuilder(); + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line); + } + } + + if (logResponseStatusText) { + plugin.getLogger().info("Sent data to bStats and received response: " + builder); + } + } + + /** + * Gzips the given String. + * + * @param str The string to gzip. + * @return The gzipped String. + * @throws IOException If the compression failed. + */ + private static byte[] compress(final String str) throws IOException { + if (str == null) { + return null; + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) { + gzip.write(str.getBytes(StandardCharsets.UTF_8)); + } + return outputStream.toByteArray(); + } + + /** + * Represents a custom chart. + */ + public static abstract class CustomChart { + + // The id of the chart + final String chartId; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + */ + CustomChart(String chartId) { + if (chartId == null || chartId.isEmpty()) { + throw new IllegalArgumentException("ChartId cannot be null or empty!"); + } + this.chartId = chartId; + } + + @Nullable + private JsonObject getRequestJsonObject() { + JsonObject chart = new JsonObject(); + chart.addProperty("chartId", chartId); + try { + JsonObject data = getChartData(); + if (data == null) { + // If the data is null we don't send the chart. + return null; + } + chart.add("data", data); + } catch (Throwable t) { + if (logFailedRequests) { + Bukkit.getLogger().log(Level.WARNING, "Failed to get data for custom chart with id " + chartId, t); + } + return null; + } + return chart; + } + + protected abstract JsonObject getChartData() throws Exception; + + } + + /** + * Represents a custom simple pie. + */ + public static class SimplePie extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimplePie(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + String value = callable.call(); + if (value == null || value.isEmpty()) { + // Null = skip the chart + return null; + } + data.addProperty("value", value); + return data; + } + } + + /** + * Represents a custom advanced pie. + */ + public static class AdvancedPie extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedPie(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + continue; // Skip this invalid + } + allSkipped = false; + values.addProperty(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + } + + /** + * Represents a custom drilldown pie. + */ + public static class DrilldownPie extends CustomChart { + + private final Callable>> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public DrilldownPie(String chartId, Callable>> callable) { + super(chartId); + this.callable = callable; + } + + @Override + public JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map> map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JsonObject value = new JsonObject(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + value.addProperty(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + values.add(entryValues.getKey(), value); + } + } + if (reallyAllSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + } + + /** + * Represents a custom single line chart. + */ + public static class SingleLineChart extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SingleLineChart(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + int value = callable.call(); + if (value == 0) { + // Null = skip the chart + return null; + } + data.addProperty("value", value); + return data; + } + + } + + /** + * Represents a custom multi line chart. + */ + public static class MultiLineChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public MultiLineChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + continue; // Skip this invalid + } + allSkipped = false; + values.addProperty(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + + } + + /** + * Represents a custom simple bar chart. + */ + public static class SimpleBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimpleBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + for (Map.Entry entry : map.entrySet()) { + JsonArray categoryValues = new JsonArray(); + categoryValues.add(new JsonPrimitive(entry.getValue())); + values.add(entry.getKey(), categoryValues); + } + data.add("values", values); + return data; + } + + } + + /** + * Represents a custom advanced bar chart. + */ + public static class AdvancedBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObject getChartData() throws Exception { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().length == 0) { + continue; // Skip this invalid + } + allSkipped = false; + JsonArray categoryValues = new JsonArray(); + for (int categoryValue : entry.getValue()) { + categoryValues.add(new JsonPrimitive(categoryValue)); + } + values.add(entry.getKey(), categoryValues); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + data.add("values", values); + return data; + } + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2610958..0e97ac6 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: Uncraftables main: dev.coomware.Uncraftables -version: 1.0.1 +version: 1.1.0 author: CoomWare description: Adds in crafting recipes for all uncraftable items. api-version: 1.16 \ No newline at end of file diff --git a/target/Uncraftables-1.0.0.jar b/target/Uncraftables-1.0.0.jar deleted file mode 100644 index ef6ae3dfd4098cc75c4bb34907dd0ed2be500428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15255 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 S8wlh1a|s6kMExc#!2buHh5bGN diff --git a/target/Uncraftables-1.0.1.jar b/target/Uncraftables-1.0.1.jar deleted file mode 100644 index 1eae23105efca47b26d7d16a321a04ff98cbc643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15253 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 SHI%~!3Wo#&lJxxR)Bgi(NI63Q literal 0 HcmV?d00001 diff --git a/target/classes/dev/coomware/Craftable.class b/target/classes/dev/coomware/Craftable.class index 21a37e2f3e1e41309619042c1df7d8f3042dda26..878a592959e8c01eabc026f6ff80d3271f1bf431 100644 GIT binary patch delta 19 bcmX?hm+{zLMvhbecI{(eU@+Opu`dq*U`Gh5 delta 19 bcmX?hm+{zLMvhbecI{(eU@+Xsu`dq*U^ob; diff --git a/target/classes/dev/coomware/CraftingListener.class b/target/classes/dev/coomware/CraftingListener.class index 01f65bc24a5c8189d06273fd23241c75024caf66..7e3bda624a0379ea90f664863048a467af620fa3 100644 GIT binary patch delta 420 zcmZ9I%}!HM6otRjYkT0{(+MpprQ(Qzm7n^rw6&n9pteFODE@m}wXKD=G$kPns0oj7 z7@6<}3^dLl;Q^TP0wyNLAqi73o*QRO)?RyMe`~OR_w0l^2Y+|>f$OwvLR@ogmy%bC*Ss<3inqK|yvJ1(DH&Sv0aNrzQKq7(@>x-1$&@OVsVf>@+@vB|(OD}m zV*2N~m?gNNk3_Hj=6Cc=ApT?9a)mzc-_U#hExi^v_KA>Qmg~aOf8=H&jQ<2%5WsmI2i_1FM9UBZ{of7{~_Vt|suNcI~)ql*2 BOwIrR delta 361 zcmYL_NiRcD7>1v7wLR^l5LYN&apEviZ-!bT#M2>a$F7Jh?`bZ6lQ zbj9Am%NYukCJTR=lKN)k}>hqXwgK_qL~(pR@zM330ZW|>8P-S zE|YG0eDu<1+UR%efW;s~PB!dd#AK9^gRo>wGA@}Ac)C-W)OoLRV z?1RwF#@qg+WJ(cXS~8=UWlj=R%(Ea_R4lP9Sy8OArdVe~vB{QXTd~8gB&LXyQ0%d< zI3OuGRHQgkq@DPfgyh72oGX;;+oE8;!W9!DpkwZUzH(oS3R{)xcj43D?t4-B=PZ|B z=RBVVU;0j73PTI;O{oV#wY`?0hFT2DZ2hY9-lW|Jd{I%SPke#m|EqetH)!|;Uvfd6 diff --git a/target/classes/dev/coomware/CraftingUtils.class b/target/classes/dev/coomware/CraftingUtils.class index f9a8b0255d53ea354cc84d0b5e4fa2c48efe201f..1ea7d19674b38f969591fc54eaa5f7e6aa559f8e 100644 GIT binary patch delta 17 Zcmey#^^=R^)W2Q(7#J8#HgXiQ0su$g2C@JE delta 17 Zcmey#^^=R^)W2Q(7#J7~H*yrR0su$R2Co1B diff --git a/target/classes/dev/coomware/Uncraftables.class b/target/classes/dev/coomware/Uncraftables.class index d3e045c5f4d853141ac8f18372e92110c14fbef6..3f2b29bd8108f1d17df4db7364caff337794d10a 100644 GIT binary patch literal 1409 zcmaJ>Yg5xe6g^vzv@twdC{kW6C`yA8dHAA;%1gnZ&Qx$1#}A=hY9u5~lH%yUaujgv zj6cA?<9ElqNvBOk{j%BJd-t4k@1D(%U*En1n8%ikG^P^h!*wy-kZG6}Gfl!x86B7r zi&+VCG7^}VaSONOxFh2(?nzjX(S;c?6eKLlNaB7ROA;PPc*xLkWK}Ds%`l{w`LR}V zoWu8q%e8I0!x5z zMysBFXB-;}Mv+x8j1dL>xTN3_mK6*j!!X#=ua;WHsTBo-7$WsSzgi@S@T!D01?zas zF!wr2`zBYcmP*|7_N$ilA;*KF%DKIwC?Z!cZA`)w1sm98=szz*RHoo5vJ4~VqjVv< z>G|B|t`MR#XnzRsq5>>xFE8f|%gVXDWFB#EnjzBy8Z#GmRyRdi3c@gyaGok;C~Sy?WF)*CIF|07n02R85ndi9=0KWouV&FM z^+pS$WRrn^#mK9sz3&L=;d#rTb449E}qZu(H z6MV@)!I$h8WKhk>Qanei1;l6uDC!xQn#}$@LF^N)V}uCE^abLCs$g7Xg}Jy~XSmY9 zc}_V3C!>Bwo2s6o{R9`(8aj3fSUN$x37Vo*pohjJ0j5Z1Zv;Hk0H0`pf23R?WVVLH zuBv`P>mdE$K(afDFHLVMM@`Aoi=3gR qh|>B)hB|vECU6zks3eBThK?!96GgHnY)7y$9w~q|3dmDx4C-%QYeGT* delta 587 zcmZXRO-~b16o#KWLwnmhSD+QJV;KQKg{fG@-{F>AO+y})%Nhogko~W8%@hyVnyP< zsA0Dfn5e=%&3(%Q9=i2lKGHn0JZ3==x3*%}4&J(>u;v!RPkT(r@+HX_QuN-Uly~lR zF_qpYH?o@4^Kz<7SJHFoH`JksfU4Ad?@}`=+Ws9NImTVc9xwG^5T{=W(zL@~*rqS- zl3NyBzKuR1mSqnL|zJ-r>LC$*G6(Cys+p$Y{XDKce_R-T(jq diff --git a/target/classes/org/bstats/Metrics$1.class b/target/classes/org/bstats/Metrics$1.class new file mode 100644 index 0000000000000000000000000000000000000000..f8aca3fa03220475b7f7f326588610b402937d1f GIT binary patch literal 1712 zcmbVM*>clL5Itj?D6t3Z1W3TF7Yx`YLFGJA`*e@K{rK_~z;WCkLk|1Yus;iqQWkr0AcuoE zltmepEUGv>L7uZY%;BioJ*MHfh7$~9E5a^Gt8aP?*{S^3hC>Mrt~bsSNrEI$C4Kq%H<@7HHeiZhD_bH?F9~vWks~HDTUEn6oVLw+oIp@ zh!VM|l(J1X@C@^crMP*V(~Q!9f?IG5+x0D{OZH{Aqv0gSDHJ*KC~$1VCXR8nJdHCN z&T`anPQ!VQ3n*&1$Z-jm84B~RD}CvSL4@MxM=)PNF|VP{u^s#;TWb(-8FF@VmPoykfeMVcCYV8U&9=IG=Ws1pzbw5GhK4Br0GA73D6Cs zw>naxC0{-K9;`b39;xa_q~EHe*h1q7IRekImBvZ3fnX-Fjb`!0-$?TBbf=5OXGp!ONV@u*g)?u2>B)PyuuV-;|Sh_ z{5(RA`FDh8*i<2vI!T6#w0uGiC$!M;V{!@G6~Q7@cuO{TCen1V8gZspoFerjejHlkBiU3j(j9^sYNCY7qm5*m57(+UOV|Y$J#s!{_K*I|H#|2KPXhKS0 zLdA=CNkt1@mYi24;-r8sRZc3{Bajg=85Bd$<@CuMEjOi3=`(twTVq(N3pN(S2KTnbS!jQ+48HVVc?lZL3 zIx$yRc4XpzM|-a+l}XXErsv0XK=*Wpjh$U7!^tPIj+4!qiEPoa6Nl(=Wb%}0cofAN zL-)+AU44#JG*Gj+b3}*BG`6aC)Bznnn{dI5@6v|4 z%2pf-%}7VcXdtf_WOb{(Ny(akBG`xwoG`ubKHv1-5jja@(5qO7T>pct+wPzjFP^suS z`O0iYYIf0Th)K_MbS~}e2ikP_}*FrUyg~+h-tkzYR;0zpzRZd z=DISXEmfD2HVv;yNf7?j9GRkfr!%?Q=?a2W)?}o7Uk>;g(K9qin>*`{<#5i-Q*=Hs zL@pdQDe7Hya{HgBqj#1XTj+JyMz24*LgjD}ZKoZ_M*7oh37d&-A&x;bKs3_ba}}(+ z_cHi*v<=_^dNxWC{}2uQBdGjiY$e|2G8`Rvkalzso#-N!awQFMbkkZ};YfpJ(>(~H z7dy&^*&npi2>I(G0>`f+n5xi`?n~ecXkfUB(CChzpzT{Q_Y$M$ zB83z56E}u+l(eF zfnUNkei@7W3U2ai_<>)?&wSBO{umUTqwkNMNKm>RB=Ha)hM;ekDeR(8osdjur8EkD z#G~k=LNsF$duSyK@eLls<5a=~K0rSP$X{8mR+5!<>?Iv#)DwgnB-t>O+vpZ}(*Hfh z{z4NI*!L&43+!K_R*DD=RmCJCzQ6&2Mn-LM3mvx*4Urm|9Qwu~Q%}>H;~8ux+D2yL V)P~y-rhW+Fkx-a;2Bw1HzX8PVgC+m~ literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics$AdvancedPie.class b/target/classes/org/bstats/Metrics$AdvancedPie.class new file mode 100644 index 0000000000000000000000000000000000000000..956f2fc22c129ed44d795e923f22c410f04bda0b GIT binary patch literal 2261 zcmbVO+fN)-82=r1*jd=&Qd+2Bp{QuNc51DtfY^3Rb=!p^Tfx@rFne4Ec4yYvS<=3l z^u_3t>688geXWVopvL&*gNgd!C8lb;#OU8(qOHF(!)+}k)d1%^=evL3`F&^j?8XNl z12}@99(!@L4sAH5<9Iz{NF{Ls6FN>N5yz8ic`AuCP9<>~8MRF6m`cLH86DI0XvEX% zFry=@I`qZTdicVB zuJM0&R`tfn%OIsPJz)iwKv!>H#`cP4-t+PWY39qGYo6kAW`0rH0n4f-0{n}l6A^8# zzSf?QO+76a`rEg&xA?MEsHld)ui#lF1@G^KQ4OLw+Fb~^64pPS}2J%>79tIr6TvY12tJI?o8CX)H zU7={}h#4rLXuws{=1pldTve=SatwGV8F&@G4&GbW&U3K6LaI^@ykdwt&RNx|Wi$75 zAbl(F{PlvutT#F>(7Mf_C`8A4)!Mn~Xq%^t_*BoFz#ig#v+50$>rQ#1SPF=9dL!x* zA?mX-U<=nR!Y79;qIAmzg*pjmBlor{_4S%)qc2$HDS3e&H8&&)PU5T@2ZnRp^)2J4 z`2tdQS~8uamCH^0UP<~YxdYp@U`sjCjg5v)p`F0t?ew>U;Y2|eS#oIFa_bf29)5!M z@{`2JO@W!TgQptY%|Ai#c9M3HW0S^6ll=qNAo>U2N6ouD#;~7jqY{bFQ7gVcz4#K{ zGp`j1`QD9M|ADx<)KSb=@HE5YNI@$jo zYE~H%pCCRp^eK#?RpeC3R(xQGA%7^z;QIQ0beoV*EIbG zo#I>ci|;TfuEP}HV@CXddGRBp_z4T*XS^nU!6or4UKhXN4e>kP5`TnE8|P<#1_v>K zA?{f8TKf`slU$R{YQ`lT;;x1_vy2CEnC&t7ggnH5DzvbrZInem9;S~-YnWP(&|f#= zH_)%+(eU>%@i&@;j*-96t7G&}bjC3j)+F#ay^M2TgC}qwX$L*DVGj4Aj+Yk4V7!jF JnZtRl?jK-xN_PMN literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics$CustomChart.class b/target/classes/org/bstats/Metrics$CustomChart.class new file mode 100644 index 0000000000000000000000000000000000000000..0cb46122bb780ea0bc026c1d0f383cde9a8aef74 GIT binary patch literal 2126 zcmah~>r)$56#w0@u*r52no=mQcH3e}31yMiClv(>H8s!**q8OO+1xG*o87p(q3uU? z^g|sT$H!>@0>4&A(~ivOH=XfMa@2b6O-h2$c9PxuIOm>oe!p|h-9P{Rbs z=X{@svz`@2oPrP%blcIXqtC?^k#f zpNj(jd|{2-Wd300c-{_5rV|8?$4!SsW;>T`@=ll&fa!F&__X9%X20pXbfV%4gJ#(_kD{T8@o|Q!%#%oc0!N9PWJOyJDxuBiU6EhC zo|-XHH9C%CM8_bms<^Du7SrNs%c#mOU!~0gIR8XJ=TvK7|D1xiFuEW79 zLr+7yR{Ap)*DLanVRYUixJ4rl4C31mrD9yC=xkZRhD^M1!;M!Bw`k~av8H1ko{EwV z9|4u$iMUG$vAkJgRX}mHYt+Efk%Z+j1mrp*}BV}(NFG7MAObz;S$BlVY=!2=o>)=Bf5cR z3O&>uv~!4Nx6pzFjfY0=A(8zZTDFRoJ80j8awXk*4{g7VWPgVG1F5vYpm#S~$=U}{ z*oWv~AEB3hjDzeG9F{U^3P^lsz zuaIG1V~l-+MfNQ&usagv2*uiic4RS1wlnlQfiX$qQXP4cKBp#0YsiP7{DVOiOcDh6d3>j literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics$DrilldownPie.class b/target/classes/org/bstats/Metrics$DrilldownPie.class new file mode 100644 index 0000000000000000000000000000000000000000..28679c1a5963752daa7fb063812b493a74522039 GIT binary patch literal 2687 zcmcImTXR!Y6#n+kX-+Puv;v>tBN3w%RY*7cm}T6xw9PStae%KA*mj2*a&ZZM5-&aDbqhXc1%D)?8t6E2ml zNzZeF@seGwI=tPU^@Cz&wi?=DH8bV#jrr=1W)0@g%+J|DI9U)#Jsh?`Ppk9!%2EIy z{p(l$pXpZ#w2DqRt{!vP4sC(0eY>-Hznm%hezD|aidEms9OZI+_M(#y`SQeNyHs-~ zyfBy-=xFTeRtW6SYzlX1VS&w$u}NU&F1eM8!-R@60!hL(n4eLeSP-M2LyKx-q$6d! zqDsC3a^jNSx&w!X<_|R)dmwxDz*dFu0|*tk(CXtc>bl<^)glkrA7jj?TRp5A+JCX# znG5awB?hF?&#A*%W8%CX7$;fDiK}_161u)uHF1G-&aVY|=ZLFDh}8i89+hMZPvBh( z8?aGe)9UC@Vz!A{3wf}Roh|jT;NU$AMa-FSEnLJUhGLe`JS~c{`x-kgH7Amz8=w#>wcIXF7 z(d+1z(<+c|)9$M2B7JJzvSO&scq8uBL>E}kmRx!JawD2q$0zy>x)08W1pZWGHeVs3@a(~ z7S>%~tfdVdh_I;jE0~yiDMl zOyW~%;d9xEFXS5BlwG(jyYYie;jUbVpJW<8%MJKdZq)TShd8dWoc$O?0%tjJhOh^m zJ#dl1vxwm&YIu&fQI+jR-D3C!dnw29g1gwqlY+yy{2li^>yp7|7^beFYpE(;_wWKe z)UCZpYjydTcsoMNhY-7ueiNhmb3pusE@9%}A`T*9Vr=DtOcO7YR@cBi?Ef7b?t!Uz lMJG(ql*Fq%ON`?w?wjZ$jWfh_oWP1=AQ~sO&)^*+{x|$Bxex#V literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics$MultiLineChart.class b/target/classes/org/bstats/Metrics$MultiLineChart.class new file mode 100644 index 0000000000000000000000000000000000000000..c8509445170fa5c9fbb8d01493028fe176d917b7 GIT binary patch literal 2270 zcmbVO+fy4=82_DzH-V6OONE8wweQc)=<=hF|wc zd*%7sQwPNJMzwLY4X3OZe9v;qnNT6%nX`$%gm6D5MxBns0bY2Eh9XQ2B?uLtXeeWy;?Q78=7v;1)TAC(NW-QSbqAt@gQmeo zMS~-yUHj5-#F|*){Ah4d)$l1i71XyA|2hhUsTMlfdd+t$jrmG8ol^VZ=X~KAzU%Gg z6a>CkY=)i|vm!wq8J6q7zM~dz7(rCNcMOLK^81PJ0bR9fGnJ}OP$zE$yjTGIf}r=H zd)Fd(dx%9qJqc!s+#!#O6Ob4U=?>xqeT$CJw~5|2 ziD#nybmDlK{utqRfao#em_#E)lj+e%VCk{%!M~+r1jlLZkRm>dHa>?0&ts5ygP}TI zFhnOZ#H)CXT*{rih~pIPwLOl!FuZyg3Pz9)FJ=|;qmt(R9}!u71SQ{~^Xc!vchJW0 z3!)3-zd{?|fy(eTu^uWD3Y}sMJBTw(w)M5`AR%Sv~+bO-Hn-?5F(ZxDU( z3Fu zz9gPpe_$YrsURnYcgf2%?K$4VNuvGap%*K71#xOx6l2ji;bsMEO8jpt CRz%GJ literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics$SimpleBarChart.class b/target/classes/org/bstats/Metrics$SimpleBarChart.class new file mode 100644 index 0000000000000000000000000000000000000000..1c5d9fb168f23cda7cd054578827b38890611f35 GIT binary patch literal 2298 zcmbVO>r)$56#w1LCY#6dXj+ia(o%~R0yIjoDj-S&t+WBEsTAt-vaDh0W;gEMAUI>S z9UpD~gZ>46tutB%nQ{E&2md6;sh+zV9-*nNPLe(Mp7T5Bp6A{C@#vRd0SrSVk-6Ej>zR}fKi4-(JDDy zR6Rmp`*-x%KJg5%)V4NvO1Yx&ET=RY0s_voBg~TNjgHfYAvR_?mKbLk?%ju}(|V$h zee(=z-d!dKTMCwA&Q{Ayrgt?AFkNsd+Ij9-a$jSrV#V?qnu}JsVw>l=mtWzYV9=)> z$Mo_x_kEM(rwXoD$}RbV3qLnwQV53MQ?Em=Ylc*wUS>!??m9zzy#pJS9VhJn9O?hg zugs8MGDQ&PBp00FcyC|9aLc)p>y~UYSMpsacZnWzORJ_KD6D3KQ-NG>W1ibpnT?|j z@e`iMHwYf3w(&NIPKC6sz887|HsRFe;P_(=jqM&DTdN%!Df5af>t2^qW09EysR+$K zYr`>|t2g-UicLkqjT_`c&`C6@G@lwiWJpe}8)ijVuH$R?i1tOd>KWz*OHP?yYo0SQ z3?0Yuv5rn0W$1iz2_)=t+Hzd=R@WXZRFg*;J zM#lveWaw%nyW&}8OIT}Uwk*xI24;i#4W~?c>F97#(ec>+ z$ya^hmTM!Ls@tXa!kiYS$A#649Xav_6v8Z|X)iS`utzF;S>)<;vk&d>){aJIJ zEUHdG;xx~}XdVbHtjlN+8egVcsk^t~tWDWwncNJ3F|u{pB=?6JBBnn^lk_6X z(2I>OMcL^@kI_y+7yYQpI6<_VI0n%O(Nwm76D&LMGn5}`8zBQgvlJS7ApEN5FX45w9^QAZyS-tO{j$$oyqM}{2lt>7Bq(Y#Ckx>IKvha3?phr-9l0dCgdt574(tlHk!y>^GGZc+eXV` zCc1@IDLS-?^g|pTkc=ae(UyrlMEehaZ}+F48=zJH1M)@<;vORZp?rzBaucn}SLjl{ zMpn6v0p%OaDc@p2`3{cqJ#H#@a7($1JIcKvH{aBLykT#BPye;wx+QSq&q>ca;4FUBlR) pxQI6b-x=H=kLRB0Os*nMI7lERAdxnRfLg?<2q&( z=qfsKBZ_h9ys2PL!8}9M;Euyfj>#}u*yLMWuL;}H4bL@dzHhoh&o==J46&kZxm?tI zLeI5FFE+vscP+greA~4amMBB#qV3vZiD5o<9?(AHLVBGclK09)-czt$^F^&vGW}N# z@ri;*m8^5$mUhz_5gT?;mtCnk=9*0>wH4Pj{k+42z@*Sf!SgM>6bLQ?ebpqPMle;h zn{X1W7#rLdD`kendBF^WXKA;qf2p7ScYQ58CTrF#Q{<(JCtPrnoJtoAucBL?XE~;B z1)i%vr_amMrfCS094XgvL+w!=TimHpL%NEB8*f*6wcazD8JZLZb@`oPR)y`kfr8s) z7rmNqm``mvC|a{oGjd)u^x}>N4P6Y$f9sO4y9(}UxDV3UTOYMk)1hGz4>T;{p@K&Y zL+!4Gde9=AuLZ)Z)EmVRKV$WsupQUMFwo+PWWU2H`5kWi7^utg;V|^mZJcC3z5~S$ zmMc}UUC;K0^zd?d&G)LNFMZQ3m``PCz89$?alTND)8mfQW2dNWJFVShh0sGk>MSnM znjnusYnaw}CVK#u$?YNZnanWy=-Vwr>?1nZC#Y-({p1^Kz%hVJWYIxfMv_v>og@n3 z3hlLHk0fkR4=0>obV_8lDKd&ljFND=O$<_Jk|bfGE;95BV+tk} iOfg&~PlPbnC^}915K_2EYl3zvX6a;%N}R>5NbC<#L{2#X literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics$SingleLineChart.class b/target/classes/org/bstats/Metrics$SingleLineChart.class new file mode 100644 index 0000000000000000000000000000000000000000..ff9940bd96e7dfca807f0e6eef8a0748e10f9b78 GIT binary patch literal 1417 zcmb7E>rN9v6#iyg*j^TpauKnBAWCVG1w>E_cqy3F6fvnG@#l2AE{n@rad^ow8O92`e4p!8VLQ6vxklCZO;_l-1|Z82E!vjL zMb#(tVte#TecR!#rRQB?TBe^}qY#}dwrh(u@=rA(io&;DE89L~c6ys3ob$?*y{BNi z=CkTv$@E{;*(VAf9c7#QwzM0IVXMR~Z<@r$2qynjHadw zhPS6%o<}Ftt-y2jr}Wz@?V5%l&f#(mmu!#f*ym1_bY*#luA<<^>rGy%iAb%)5ZicT zm=$4rZlK~W*+sAF8|D*R_KnsMY*x09hF;v$(1mV>;lC4;u=^^q8dk8%&|B-g=4R2b zh6frR;*o~O$f;OonD}>*NRSqwTs08hUZeE!b5`G3=F>AW474bi6hD-b|B<%$gd~@D zilLuMa~A!yAQ9UY+jX@m9Od5L0F_Kx^0Pa17!KS>%XeT&0k5CKD-0(p)=TkqPUmM-av+#u|y=QXH8${S~2? z#|RhFAE10j2g7%C9zk7Az9Zu>lZYfgA$o*Z=8({JUc>ajL778Dna7Z_fTXgBQDq4! zWx0uCy1|iNL}EQojE3mg6Sz(cCMi}F>?cN5++es#W|#m|w3VW{f@uPyrc#_9-OB{l JXj~3Qe*?CVT_OMg literal 0 HcmV?d00001 diff --git a/target/classes/org/bstats/Metrics.class b/target/classes/org/bstats/Metrics.class new file mode 100644 index 0000000000000000000000000000000000000000..e1cb82ad61e1357d8f31b41176520cc50a6bfee0 GIT binary patch literal 14557 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 L#`-h=h5!6NzBtY- literal 0 HcmV?d00001 diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml index 2610958..0e97ac6 100644 --- a/target/classes/plugin.yml +++ b/target/classes/plugin.yml @@ -1,6 +1,6 @@ name: Uncraftables main: dev.coomware.Uncraftables -version: 1.0.1 +version: 1.1.0 author: CoomWare description: Adds in crafting recipes for all uncraftable items. api-version: 1.16 \ No newline at end of file diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties index a9192b1..60642cb 100644 --- a/target/maven-archiver/pom.properties +++ b/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Sun Jul 12 20:02:20 CDT 2020 -version=1.0.1 +#Mon Jul 13 10:47:34 CDT 2020 +version=1.1.0 groupId=dev.coomware artifactId=Uncraftables diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 83e6a71..71d847e 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,4 +1,14 @@ dev\coomware\Uncraftables.class +org\bstats\Metrics$SimpleBarChart.class dev\coomware\Craftable.class -dev\coomware\CraftingListener.class +org\bstats\Metrics$1.class +org\bstats\Metrics.class dev\coomware\CraftingUtils.class +org\bstats\Metrics$AdvancedPie.class +org\bstats\Metrics$SimplePie.class +org\bstats\Metrics$DrilldownPie.class +org\bstats\Metrics$MultiLineChart.class +org\bstats\Metrics$AdvancedBarChart.class +org\bstats\Metrics$CustomChart.class +dev\coomware\CraftingListener.class +org\bstats\Metrics$SingleLineChart.class