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.reflection.RDedicatedServer;
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils; import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
import net.frankheijden.serverutils.bukkit.utils.ReloadHandler; 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.config.Messenger;
import net.frankheijden.serverutils.common.entities.AbstractResult; import net.frankheijden.serverutils.common.entities.AbstractResult;
import net.frankheijden.serverutils.common.entities.CloseableResult; import net.frankheijden.serverutils.common.entities.CloseableResult;
@ -50,12 +51,15 @@ public class CommandServerUtils extends BaseCommand {
static { static {
supportedConfigs = new HashMap<>(); supportedConfigs = new HashMap<>();
supportedConfigs.put("bukkit", RCraftServer::reloadBukkitConfiguration); supportedConfigs.put("bukkit", new VersionReloadHandler(16, RCraftServer::reloadBukkitConfiguration));
supportedConfigs.put("commands.yml", RCraftServer::reloadCommandsConfiguration); supportedConfigs.put("commands.yml", RCraftServer::reloadCommandsConfiguration);
supportedConfigs.put("server-icon.png", RCraftServer::loadIcon); supportedConfigs.put("server-icon.png", new VersionReloadHandler(16, RCraftServer::loadIcon));
supportedConfigs.put("banned-ips.json", RCraftServer::reloadIpBans); supportedConfigs.put("banned-ips.json", new VersionReloadHandler(16, RCraftServer::reloadIpBans));
supportedConfigs.put("banned-players.json", RCraftServer::reloadProfileBans); supportedConfigs.put("banned-players.json", new VersionReloadHandler(16, RCraftServer::reloadProfileBans));
supportedConfigs.put("server.properties", RDedicatedServer::reloadServerProperties); supportedConfigs.put("server.properties", new VersionReloadHandler(
16,
RDedicatedServer::reloadServerProperties
));
} }
@Dependency @Dependency
@ -123,10 +127,6 @@ public class CommandServerUtils extends BaseCommand {
@Description("Reloads individual Server configurations.") @Description("Reloads individual Server configurations.")
public void onReloadCommands(CommandSender commandSender, String config) { public void onReloadCommands(CommandSender commandSender, String config) {
ServerCommandSender sender = BukkitUtils.wrap(commandSender); 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); ReloadHandler handler = supportedConfigs.get(config);
if (handler == null) { if (handler == null) {
@ -134,9 +134,20 @@ public class CommandServerUtils extends BaseCommand {
return; 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 }; 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()); filter.start(Bukkit.getLogger());
try { try {
handler.handle(); 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.Level;
import java.util.logging.LogRecord; import java.util.logging.LogRecord;
import net.frankheijden.serverutils.common.entities.ServerCommandSender; import net.frankheijden.serverutils.common.entities.ServerCommandSender;
import net.frankheijden.serverutils.common.providers.ChatProvider;
public class ForwardFilter extends PredicateFilter { public class ForwardFilter extends PredicateFilter {
@ -16,13 +17,13 @@ public class ForwardFilter extends PredicateFilter {
* Creates a filter which forwards all output to the sender. * Creates a filter which forwards all output to the sender.
* @param sender The sender to forward logs to. * @param sender The sender to forward logs to.
*/ */
public ForwardFilter(ServerCommandSender sender) { public ForwardFilter(ChatProvider chatProvider, ServerCommandSender sender) {
this.warnings = false; this.warnings = false;
setPredicate(rec -> { setPredicate(rec -> {
char color = getColor(rec.getLevel()); char color = getColor(rec.getLevel());
if (color != INFO_COLOR) warnings = true; if (color != INFO_COLOR) warnings = true;
sender.sendMessage('&' + color + format(rec)); sender.sendMessage(chatProvider.color("&" + color + format(rec)));
return true; return true;
}); });
} }