128 lines
3.5 KiB
Java
128 lines
3.5 KiB
Java
package net.frankheijden.serverutils.velocity;
|
|
|
|
import com.google.inject.Inject;
|
|
import com.google.inject.name.Named;
|
|
import com.velocitypowered.api.event.Subscribe;
|
|
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
|
import com.velocitypowered.api.event.proxy.ProxyShutdownEvent;
|
|
import com.velocitypowered.api.plugin.Plugin;
|
|
import com.velocitypowered.api.plugin.PluginContainer;
|
|
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
|
import com.velocitypowered.api.proxy.ProxyServer;
|
|
import java.io.IOException;
|
|
import java.nio.file.Path;
|
|
import net.frankheijden.serverutils.common.ServerUtilsApp;
|
|
import net.frankheijden.serverutils.velocity.entities.VelocityPlugin;
|
|
import net.frankheijden.serverutils.velocity.managers.VelocityPluginCommandManager;
|
|
import net.frankheijden.serverutils.velocity.reflection.RVelocityCommandManager;
|
|
import org.bstats.velocity.Metrics;
|
|
import org.slf4j.Logger;
|
|
|
|
@Plugin(
|
|
id = "bukman",
|
|
name = "Bukman",
|
|
version = "{version}",
|
|
description = "A server utility",
|
|
url = "https://git.zhira.net/zhdev/bukman",
|
|
authors = {"FrankHeijden", "ZhDev"}
|
|
)
|
|
public class ServerUtils {
|
|
|
|
private static ServerUtils instance;
|
|
private static final String PLUGIN_COMMANDS_CACHE = ".pluginCommandsCache.json";
|
|
|
|
private VelocityPlugin plugin;
|
|
|
|
@Inject
|
|
private ProxyServer proxy;
|
|
|
|
@Inject
|
|
private Logger logger;
|
|
|
|
@Inject
|
|
@DataDirectory
|
|
private Path dataDirectory;
|
|
|
|
@Inject
|
|
private Metrics.Factory metricsFactory;
|
|
|
|
@Inject
|
|
@Named("bukman")
|
|
private PluginContainer pluginContainer;
|
|
|
|
private final VelocityPluginCommandManager pluginCommandManager;
|
|
|
|
/**
|
|
* Initialises ServerUtils.
|
|
*/
|
|
@Inject
|
|
public ServerUtils(ProxyServer proxy, @DataDirectory Path dataDirectory) {
|
|
instance = this;
|
|
try {
|
|
this.pluginCommandManager = VelocityPluginCommandManager.load(dataDirectory.resolve(PLUGIN_COMMANDS_CACHE));
|
|
} catch (IOException ex) {
|
|
throw new RuntimeException(ex);
|
|
}
|
|
|
|
RVelocityCommandManager.proxyRegistrars(
|
|
proxy,
|
|
getClass().getClassLoader(),
|
|
(container, meta) -> pluginCommandManager.getPluginCommands().putAll(
|
|
container.getDescription().getId(),
|
|
meta.getAliases()
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Initialises and enables ServerUtils.
|
|
*/
|
|
@Subscribe
|
|
public void onEnable(ProxyInitializeEvent event) {
|
|
this.plugin = new VelocityPlugin(this);
|
|
ServerUtilsApp.init(this, plugin);
|
|
|
|
metricsFactory.make(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
|
plugin.enable();
|
|
}
|
|
|
|
/**
|
|
* De-initialises and disables ServerUtils.
|
|
*/
|
|
@Subscribe
|
|
public void onDisable(ProxyShutdownEvent event) {
|
|
try {
|
|
pluginCommandManager.save();
|
|
} catch (IOException ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static ServerUtils getInstance() {
|
|
return instance;
|
|
}
|
|
|
|
public ProxyServer getProxy() {
|
|
return proxy;
|
|
}
|
|
|
|
public Logger getLogger() {
|
|
return logger;
|
|
}
|
|
|
|
public Path getDataDirectory() {
|
|
return dataDirectory;
|
|
}
|
|
|
|
public VelocityPlugin getPlugin() {
|
|
return plugin;
|
|
}
|
|
|
|
public PluginContainer getPluginContainer() {
|
|
return pluginContainer;
|
|
}
|
|
|
|
public VelocityPluginCommandManager getPluginCommandManager() {
|
|
return pluginCommandManager;
|
|
}
|
|
}
|