Better handle metrics

This commit is contained in:
Sotr
2018-06-03 16:26:07 +08:00
parent 48468e8af8
commit cbf0bdc5b1
3 changed files with 8 additions and 37 deletions

View File

@@ -1,4 +1,4 @@
package io.akarin.server.core;
package io.akarin.server.mixin.core;
import java.io.File;
import java.io.IOException;
@@ -6,21 +6,23 @@ import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import com.destroystokyo.paper.Metrics;
import net.minecraft.server.MinecraftServer;
public abstract class MetricsBootstrap {
// Dragged from 'PaperMetrics' cause it's a private subclass, this will be called from mixined 'PaperConfig' class
public static void startMetrics() {
@Mixin(targets = "com.destroystokyo.paper.Metrics$PaperMetrics", remap = false)
public class MetricsBootstrap {
@Overwrite
static void startMetrics() {
// Get the config file
File configFile = new File(new File((File) MinecraftServer.getServer().options.valueOf("plugins"), "bStats"), "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.

View File

@@ -1,31 +0,0 @@
package io.akarin.server.mixin.core;
import java.util.Map;
import org.bukkit.command.Command;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import com.destroystokyo.paper.PaperConfig;
import io.akarin.server.core.MetricsBootstrap;
import net.minecraft.server.MinecraftServer;
@Mixin(value = PaperConfig.class, remap = false)
public class MixinPaperConfig {
@Shadow static Map<String, Command> commands;
@Shadow private static boolean metricsStarted;
@Overwrite
public static void registerCommands() {
for (Map.Entry<String, Command> entry : commands.entrySet()) {
MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Paper", entry.getValue());
}
if (!metricsStarted) {
MetricsBootstrap.startMetrics();
metricsStarted = true;
}
}
}