diff --git a/README.md b/README.md
index 130e0b8..56b93c6 100644
--- a/README.md
+++ b/README.md
@@ -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="Failed to get server info"
+
# The message to send when the chat is cleared by an admin.
# You can use if you would like to display who cleared the chat.
chat-cleared-message="Chat has been cleared by an admin"
+
# 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.**
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 9672a01..4034716 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ plugins {
}
group = 'xyz.lncvrt'
-version = '1.0.0'
+version = '1.0.1'
repositories {
mavenCentral()
diff --git a/src/main/java/xyz/lncvrt/velocityClearChat/ConfigManager.java b/src/main/java/xyz/lncvrt/velocityClearChat/ConfigManager.java
index 3882105..ca15c6a 100644
--- a/src/main/java/xyz/lncvrt/velocityClearChat/ConfigManager.java
+++ b/src/main/java/xyz/lncvrt/velocityClearChat/ConfigManager.java
@@ -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("Chat has been cleared by an admin")
- .comment("The message to send when the chat is cleared by an admin.\nYou can use if you would like to display who cleared the chat.");
- root.node("chat-clear-failed-message")
- .set("Failed to get server info")
- .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);
}
diff --git a/src/main/java/xyz/lncvrt/velocityClearChat/VelocityClearChat.java b/src/main/java/xyz/lncvrt/velocityClearChat/VelocityClearChat.java
index 0b7f213..3e8b62b 100644
--- a/src/main/java/xyz/lncvrt/velocityClearChat/VelocityClearChat.java
+++ b/src/main/java/xyz/lncvrt/velocityClearChat/VelocityClearChat.java
@@ -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()));
}
}
}
diff --git a/src/main/java/xyz/lncvrt/velocityClearChat/commands/ClearChat.java b/src/main/java/xyz/lncvrt/velocityClearChat/commands/ClearChat.java
index edaa0e4..3189347 100644
--- a/src/main/java/xyz/lncvrt/velocityClearChat/commands/ClearChat.java
+++ b/src/main/java/xyz/lncvrt/velocityClearChat/commands/ClearChat.java
@@ -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 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.getUsername())));
+ if (!configManager.getClearedMessage().isEmpty()) targetPlayer.sendMessage(miniMessage.deserialize(configManager.getClearedMessage().replace("", player.getUsername())));
}
}
}
diff --git a/src/main/resources/config.conf b/src/main/resources/config.conf
new file mode 100644
index 0000000..78c0c22
--- /dev/null
+++ b/src/main/resources/config.conf
@@ -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="Failed to get server info"
+
+# The message to send when the chat is cleared by an admin.
+# You can use if you would like to display who cleared the chat.
+chat-cleared-message="Chat has been cleared by an admin"
+
+# 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