Only support commands.yml for reloading on 1.17

This commit is contained in:
Frank van der Heijden 2021-06-22 00:11:53 +02:00
parent 401b03fbc0
commit 2ac0ec0a9f
No known key found for this signature in database
GPG key ID: B808721C2DD5B5B8
3 changed files with 51 additions and 12 deletions

View file

@ -25,6 +25,7 @@ import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
import net.frankheijden.serverutils.bukkit.reflection.RDedicatedServer;
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
import net.frankheijden.serverutils.bukkit.utils.ReloadHandler;
import net.frankheijden.serverutils.bukkit.utils.VersionReloadHandler;
import net.frankheijden.serverutils.common.config.Messenger;
import net.frankheijden.serverutils.common.entities.AbstractResult;
import net.frankheijden.serverutils.common.entities.CloseableResult;
@ -50,12 +51,15 @@ public class CommandServerUtils extends BaseCommand {
static {
supportedConfigs = new HashMap<>();
supportedConfigs.put("bukkit", RCraftServer::reloadBukkitConfiguration);
supportedConfigs.put("bukkit", new VersionReloadHandler(16, RCraftServer::reloadBukkitConfiguration));
supportedConfigs.put("commands.yml", RCraftServer::reloadCommandsConfiguration);
supportedConfigs.put("server-icon.png", RCraftServer::loadIcon);
supportedConfigs.put("banned-ips.json", RCraftServer::reloadIpBans);
supportedConfigs.put("banned-players.json", RCraftServer::reloadProfileBans);
supportedConfigs.put("server.properties", RDedicatedServer::reloadServerProperties);
supportedConfigs.put("server-icon.png", new VersionReloadHandler(16, RCraftServer::loadIcon));
supportedConfigs.put("banned-ips.json", new VersionReloadHandler(16, RCraftServer::reloadIpBans));
supportedConfigs.put("banned-players.json", new VersionReloadHandler(16, RCraftServer::reloadProfileBans));
supportedConfigs.put("server.properties", new VersionReloadHandler(
16,
RDedicatedServer::reloadServerProperties
));
}
@Dependency
@ -123,10 +127,6 @@ public class CommandServerUtils extends BaseCommand {
@Description("Reloads individual Server configurations.")
public void onReloadCommands(CommandSender commandSender, String config) {
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
if (MinecraftReflectionVersion.MINOR >= 17) {
sendRawMessage(sender, "&cThis command is not supported on your Minecraft version.");
return;
}
ReloadHandler handler = supportedConfigs.get(config);
if (handler == null) {
@ -134,9 +134,20 @@ public class CommandServerUtils extends BaseCommand {
return;
}
if (handler instanceof VersionReloadHandler) {
VersionReloadHandler versionReloadHandler = (VersionReloadHandler) handler;
int max = versionReloadHandler.getMinecraftVersionMaximum();
if (MinecraftReflectionVersion.MINOR > max) {
sendRawMessage(sender, "&cThis command is not supported on your Minecraft version."
+ " This command only support Minecraft versions up to MC1." + max);
return;
}
}
String[] replacements = new String[]{ "%action%", "reload", "%what%", config };
ForwardFilter filter = new ForwardFilter(sender);
ForwardFilter filter = new ForwardFilter(plugin.getPlugin().getChatProvider(), sender);
filter.start(Bukkit.getLogger());
try {
handler.handle();

View file

@ -0,0 +1,27 @@
package net.frankheijden.serverutils.bukkit.utils;
import dev.frankheijden.minecraftreflection.MinecraftReflectionVersion;
public class VersionReloadHandler implements ReloadHandler {
private final int minecraftVersionMaximum;
private final ReloadHandler handler;
public VersionReloadHandler(int minecraftVersionMaximum, ReloadHandler handler) {
this.minecraftVersionMaximum = minecraftVersionMaximum;
this.handler = handler;
}
public int getMinecraftVersionMaximum() {
return minecraftVersionMaximum;
}
@Override
public void handle() throws Exception {
if (MinecraftReflectionVersion.MINOR > minecraftVersionMaximum) {
throw new Exception("ReloadHandler is incompatible with version " + MinecraftReflectionVersion.MINOR
+ ". Maximum version this handler supports is " + minecraftVersionMaximum + ".");
}
handler.handle();
}
}

View file

@ -3,6 +3,7 @@ package net.frankheijden.serverutils.common.utils;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
import net.frankheijden.serverutils.common.providers.ChatProvider;
public class ForwardFilter extends PredicateFilter {
@ -16,13 +17,13 @@ public class ForwardFilter extends PredicateFilter {
* Creates a filter which forwards all output to the sender.
* @param sender The sender to forward logs to.
*/
public ForwardFilter(ServerCommandSender sender) {
public ForwardFilter(ChatProvider chatProvider, ServerCommandSender sender) {
this.warnings = false;
setPredicate(rec -> {
char color = getColor(rec.getLevel());
if (color != INFO_COLOR) warnings = true;
sender.sendMessage('&' + color + format(rec));
sender.sendMessage(chatProvider.color("&" + color + format(rec)));
return true;
});
}