Persist pluginCommands across plugin restarts, compile velocity with jdk 11

This commit is contained in:
Frank van der Heijden 2021-07-20 23:16:00 +02:00
parent 64cbb44184
commit 503e40e76f
No known key found for this signature in database
GPG key ID: B808721C2DD5B5B8
4 changed files with 92 additions and 9 deletions

View file

@ -3,17 +3,16 @@ package net.frankheijden.serverutils.velocity;
import co.aikar.commands.CommandCompletions;
import co.aikar.commands.VelocityCommandCompletionContext;
import co.aikar.commands.VelocityCommandManager;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
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.common.config.Config;
@ -21,6 +20,7 @@ import net.frankheijden.serverutils.common.config.Messenger;
import net.frankheijden.serverutils.velocity.commands.CommandPlugins;
import net.frankheijden.serverutils.velocity.commands.CommandServerUtils;
import net.frankheijden.serverutils.velocity.entities.VelocityPlugin;
import net.frankheijden.serverutils.velocity.managers.VelocityPluginCommandManager;
import net.frankheijden.serverutils.velocity.managers.VelocityPluginManager;
import net.frankheijden.serverutils.velocity.reflection.RVelocityCommandManager;
import org.bstats.velocity.Metrics;
@ -39,6 +39,7 @@ public class ServerUtils {
private static ServerUtils instance;
private static final String CONFIG_RESOURCE = "velocity-config.toml";
private static final String MESSAGES_RESOURCE = "velocity-messages.toml";
private static final String PLUGIN_COMMANDS_CACHE = ".pluginCommandsCache.json";
private VelocityPlugin plugin;
private VelocityCommandManager commandManager;
@ -60,17 +61,26 @@ public class ServerUtils {
@Named("serverutils")
private PluginContainer pluginContainer;
private final Multimap<String, String> pluginCommands = Multimaps.synchronizedSetMultimap(HashMultimap.create());
private final VelocityPluginCommandManager pluginCommandManager;
/**
* Initialises ServerUtils.
*/
@Inject
public ServerUtils(ProxyServer proxy) {
public ServerUtils(ProxyServer proxy, @DataDirectory Path dataDirectory) {
try {
this.pluginCommandManager = VelocityPluginCommandManager.load(dataDirectory.resolve(PLUGIN_COMMANDS_CACHE));
} catch (IOException ex) {
throw new RuntimeException(ex);
}
RVelocityCommandManager.proxyRegistrars(
proxy,
getClass().getClassLoader(),
(container, meta) -> pluginCommands.putAll(container.getDescription().getId(), meta.getAliases())
(container, meta) -> pluginCommandManager.getPluginCommands().putAll(
container.getDescription().getId(),
meta.getAliases()
)
);
}
@ -102,6 +112,18 @@ public class ServerUtils {
ServerUtilsApp.tryCheckForUpdates();
}
/**
* 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;
}
@ -126,8 +148,8 @@ public class ServerUtils {
return plugin;
}
public Multimap<String, String> getPluginCommands() {
return pluginCommands;
public VelocityPluginCommandManager getPluginCommandManager() {
return pluginCommandManager;
}
public void reload() {