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

@@ -5,17 +5,30 @@ An extremely simple and lightweight plugin, designed to clear chat on the proxy
You are also able to clear on server swap, which may be useful to some users. Read the configuration for more info. Default configuration can be found here:
```hocon
# 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, set to "" to disable it.
# 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
```
**If you are wondering why this *velocity plugin* is not supported on BungeeCord/Waterfall, WaterFall is EOL and BungeeCord is obsolete. Velocity is the best server proxy solution out there at the moment.**

View File

@@ -5,7 +5,7 @@ plugins {
}
group = 'xyz.lncvrt'
version = '1.0.0'
version = '1.0.1'
repositories {
mavenCentral()

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