Fix some messages not being disabled by setting it to ""

This commit is contained in:
2025-03-20 10:06:09 -07:00
parent 9cd772f95b
commit 74c741df69
6 changed files with 61 additions and 38 deletions

View File

@@ -7,8 +7,10 @@ import org.spongepowered.configurate.hocon.HoconConfigurationLoader;
import org.spongepowered.configurate.loader.ConfigurationLoader;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
public class ConfigManager {
private final Path configPath;
@@ -19,45 +21,33 @@ public class ConfigManager {
public ConfigManager(@DataDirectory Path dataDirectory) {
this.configPath = dataDirectory.resolve("config.conf");
this.loader = HoconConfigurationLoader.builder().path(configPath).build();
ensureConfigExists();
loadConfig();
}
private void ensureConfigExists() {
if (Files.notExists(configPath)) {
try (InputStream defaultConfig = getClass().getClassLoader().getResourceAsStream("config.conf")) {
if (defaultConfig != null) {
Files.createDirectories(configPath.getParent());
Files.copy(defaultConfig, configPath, StandardCopyOption.REPLACE_EXISTING);
} else {
System.err.println("Default config.conf not found in resources!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void loadConfig() {
try {
if (Files.notExists(configPath)) {
saveDefaultConfig();
}
root = loader.load();
} catch (IOException e) {
e.printStackTrace();
}
}
private void saveDefaultConfig() throws IOException {
Files.createDirectories(configPath.getParent());
root = loader.load();
root.node("lines")
.set(100)
.comment("The number of lines the chat clearer will send.");
root.node("chat-cleared-message")
.set("<green>Chat has been cleared by an admin</green>")
.comment("The message to send when the chat is cleared by an admin.\nYou can use <player> if you would like to display who cleared the chat.");
root.node("chat-clear-failed-message")
.set("<red>Failed to get server info</red>")
.comment("If velocity returns invalid information, this message will be displayed.");
root.node("clear-permission")
.set("lncvrt.velocityclearchat.clear")
.comment("The permission an admin needs to clear the chat.");
root.node("clear-on-server-swap")
.set(true)
.comment("On player swap, should we clear the chat history?");
root.node("clear-on-server-swap-message")
.set("")
.comment("The message to display if \"clear-on-server-swap\" is enabled, set to \"\" to disable it.");
loader.save(root);
}
public int getLines() {
return root.node("lines").getInt(1000);
}

View File

@@ -19,14 +19,12 @@ import java.nio.file.Path;
@Plugin(id = "velocityclearchat", name = "VelocityClearChat", authors = {"Lncvrt"}, version = BuildConstants.VERSION)
public class VelocityClearChat {
private final Logger logger;
private final ProxyServer proxyServer;
public ConfigManager configManager;
public final MiniMessage miniMessage = MiniMessage.miniMessage();
@Inject
public VelocityClearChat(Logger logger, ProxyServer proxyServer, @DataDirectory Path dataDirectory) {
this.logger = logger;
this.proxyServer = proxyServer;
this.configManager = new ConfigManager(dataDirectory);
}
@@ -49,9 +47,7 @@ public class VelocityClearChat {
if (configManager.getClearOnSwap()) {
Player player = event.getPlayer();
for (int i = 0; i < configManager.getLines(); i++) player.sendMessage(miniMessage.deserialize(" ".repeat((i % 10) + 1)));
if (!configManager.getClearOnSwapMessage().isEmpty()) {
player.sendMessage(miniMessage.deserialize(configManager.getClearOnSwapMessage()));
}
if (!configManager.getClearOnSwapMessage().isEmpty()) player.sendMessage(miniMessage.deserialize(configManager.getClearOnSwapMessage()));
}
}
}

View File

@@ -30,18 +30,18 @@ public class ClearChat implements SimpleCommand {
//no idea how to make this not so shitty
ServerConnection server = player.getCurrentServer().orElse(null);
if (server == null) {
player.sendMessage(miniMessage.deserialize(configManager.getClearFailed()));
if (!configManager.getClearFailed().isEmpty()) player.sendMessage(miniMessage.deserialize(configManager.getClearFailed()));
return;
}
RegisteredServer registeredServer = server.getServer();
if (registeredServer == null) {
player.sendMessage(miniMessage.deserialize(configManager.getClearFailed()));
if (!configManager.getClearFailed().isEmpty()) player.sendMessage(miniMessage.deserialize(configManager.getClearFailed()));
return;
}
Collection<Player> players = registeredServer.getPlayersConnected();
for (Player targetPlayer : players) {
for (int i = 0; i < configManager.getLines(); i++) targetPlayer.sendMessage(miniMessage.deserialize(" ".repeat((i % 10) + 1)));
targetPlayer.sendMessage(miniMessage.deserialize(configManager.getClearedMessage().replace("<player>", player.getUsername())));
if (!configManager.getClearedMessage().isEmpty()) targetPlayer.sendMessage(miniMessage.deserialize(configManager.getClearedMessage().replace("<player>", player.getUsername())));
}
}
}

View File

@@ -0,0 +1,24 @@
# Velocity Clear Chat Configuration
# This file contains settings for the chat clearing plugin.
# Modify these values as needed.
#
# If there is a message, you can set it to "" to disable it, you can use MiniMessage too.
# If velocity returns invalid information, this message will be displayed.
chat-clear-failed-message="<red>Failed to get server info</red>"
# The message to send when the chat is cleared by an admin.
# You can use <player> if you would like to display who cleared the chat.
chat-cleared-message="<green>Chat has been cleared by an admin</green>"
# On player swap, should we clear the chat history?
clear-on-server-swap=true
# The message to display if "clear-on-server-swap" is enabled
clear-on-server-swap-message=""
# The permission an admin needs to clear the chat.
clear-permission="lncvrt.velocityclearchat.clear"
# The number of lines the chat clearer will send.
lines=100