Skip to content

Commit

Permalink
Add action and kick-message sub-commands
Browse files Browse the repository at this point in the history
  • Loading branch information
SrBedrock committed Jun 21, 2023
1 parent 371ff23 commit 5ca4d1f
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 62 deletions.
12 changes: 5 additions & 7 deletions src/main/java/com/armamc/plugincontrol/PluginControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,12 @@ private void registerCommands() {
private void registerTask() {
Bukkit.getScheduler().runTaskLater(this, () -> {
if (config.isEnabled()) {
sendToConsole(lang.message("checking-plugins"));
sendToConsole(lang.message("console.checking-plugins"));
checkPlugins();
}
}, 20L);
}


public void checkPlugins() {
List<String> plugins = config.getPluginList();
List<String> missingPlugins = new ArrayList<>();
Expand All @@ -84,22 +83,21 @@ public void checkPlugins() {
if (hasPlugins) {
TagResolver.Single tag = Placeholder.parsed("plugins",
String.join(", ", missingPlugins));

if (config.getAction().equals("disallow-player-login")) {
new PlayerLoginListener(this);
sendToConsole(lang.message("log-to-console"), tag);
sendToConsole(lang.message("console.log-to-console"), tag);
return;
}
if (config.getAction().equals("log-to-console")) {
sendToConsole(lang.message("log-to-console"), tag);
sendToConsole(lang.message("console.log-to-console"), tag);
return;
}
if (config.getAction().equals("shutdown-server")) {
sendToConsole(lang.message("disabling-server"), tag);
sendToConsole(lang.message("console.disabling-server"), tag);
getServer().shutdown();
}
} else {
sendToConsole(lang.message("finished-checking"));
sendToConsole(lang.message("console.finished-checking"));
}
}

Expand Down
80 changes: 58 additions & 22 deletions src/main/java/com/armamc/plugincontrol/commands/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,84 +34,111 @@ public Command(PluginControl plugin) {
@Override
public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!sender.hasPermission("plugincontrol.use")) {
plugin.sendToPlayer(sender, lang.message("no-permission-error"));
plugin.sendToPlayer(sender, lang.message("command.no-permission-error"));
return true;
}
if (args.length >= 1) {
switch (args[0]) {
case "enable", "on" -> {
config.setEnabled(true);
plugin.sendToPlayer(sender, lang.message("plugin-enabled"));
plugin.sendToPlayer(sender, lang.message("command.plugin-enabled"));
return true;
}
case "disable", "off" -> {
config.setEnabled(false);
plugin.sendToPlayer(sender, lang.message("plugin-disabled"));
plugin.sendToPlayer(sender, lang.message("command.plugin-disabled"));
return true;
}
case "toggle" -> {
config.setEnabled(!config.isEnabled());
boolean enabled = config.isEnabled();
if (enabled) {
plugin.sendToPlayer(sender, lang.message("plugin-enabled"));
plugin.sendToPlayer(sender, lang.message("command.plugin-enabled"));
} else {
plugin.sendToPlayer(sender, lang.message("plugin-disabled"));
plugin.sendToPlayer(sender, lang.message("command.plugin-disabled"));
}
return true;
}
case "add" -> {
if (args.length < 2 || args[1].isBlank() || args.length >= 3) {
plugin.sendToPlayer(sender, lang.message("plugin-add-error"),
plugin.sendToPlayer(sender, lang.message("command.plugin-add-error"),
Placeholder.parsed(COMMAND_TAG, label));
return true;
}
if (config.addPlugin(args[1])) {
plugin.sendToPlayer(sender, lang.message("plugin-added"),
plugin.sendToPlayer(sender, lang.message("command.plugin-added"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
} else {
plugin.sendToPlayer(sender, lang.message("plugin-already-added"),
plugin.sendToPlayer(sender, lang.message("command.plugin-already-added"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
}
return true;
}
case "remove" -> {
if (config.getPluginList().isEmpty()) {
plugin.sendToPlayer(sender, lang.message("plugin-list-empty"));
plugin.sendToPlayer(sender, lang.message("command.plugin-list-empty"));
return true;
}
if (args.length < 2 || args[1].isBlank() || args.length >= 3) {
plugin.sendToPlayer(sender, lang.message("plugin-remove-error"),
plugin.sendToPlayer(sender, lang.message("command.plugin-remove-error"),
Placeholder.parsed(COMMAND_TAG, label));
return true;
}
if (config.removePlugin(args[1])) {
plugin.sendToPlayer(sender, lang.message("plugin-removed"),
plugin.sendToPlayer(sender, lang.message("command.plugin-removed"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
} else {
plugin.sendToPlayer(sender, lang.message("plugin-not-found"),
plugin.sendToPlayer(sender, lang.message("command.plugin-not-found"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
}
return true;
}
case "list" -> {
if (config.getPluginList().isEmpty()) {
plugin.sendToPlayer(sender, lang.message("plugin-list-empty"));
plugin.sendToPlayer(sender, lang.message("command.plugin-list-empty"));
} else {
plugin.sendToPlayer(sender, lang.message("plugin-list"),
plugin.sendToPlayer(sender, lang.message("command.plugin-list"),
Placeholder.parsed("plugins",
String.join(", ", config.getPluginList())));
}
return true;
}
case "action" -> {
if (args.length < 2 || args[1].isBlank() || args.length >= 3) {
plugin.sendToPlayer(sender, lang.message("command.action-type"),
Placeholder.parsed("action", config.getAction().toLowerCase()));
return true;
}
List<String> actions = new ArrayList<>(List.of("log-to-console", "disallow-player-login", "shutdown-server"));
if (actions.contains(args[1])) {
config.setAction(args[1]);
plugin.sendToPlayer(sender, lang.message("command.action-set"),
Placeholder.parsed("action", config.getAction().toLowerCase()));
} else {
plugin.sendToPlayer(sender, lang.message("command.action-list"),
Placeholder.parsed("actions", String.join(", ", actions)));
}
return true;
}
case "kick-message" -> {
if (args.length < 2 || args[1].isBlank() || args.length >= 3) {
plugin.sendToPlayer(sender, lang.message("command.kick-message"),
Placeholder.parsed("kick-message", config.getKickMessage()));
return true;
}
config.setKickMessage(String.join(" ", Arrays.copyOfRange(args, 1, args.length)));
plugin.sendToPlayer(sender, lang.message("command.kick-message-set"),
Placeholder.parsed("kick-message", config.getKickMessage()));
return true;
}
case "reload" -> {
plugin.reloadConfig();
lang.reloadLang();
plugin.checkPlugins();
plugin.sendToPlayer(sender, lang.message("plugin-reload"));
reload();
plugin.sendToPlayer(sender, lang.message("command.plugin-reload"));
return true;
}
default -> {
plugin.sendToPlayer(sender, lang.message("command-not-found"));
plugin.sendToPlayer(sender, lang.message("command.command-not-found"),
Placeholder.parsed(COMMAND_TAG, label));
return true;
}
}
Expand All @@ -124,26 +151,35 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN

List<String> completions = new ArrayList<>();
if (args.length == 1) {
List<String> subCommands = Arrays.asList("enable", "disable", "toggle", "add", "remove", "list");
List<String> subCommands = Arrays.asList("enable", "disable", "toggle", "add", "remove", "list", "action", "kick-message");
StringUtil.copyPartialMatches(args[0], subCommands, completions);
return completions;
}

if (args.length == 2 && (args[0].equals("add"))) {
List<String> add = Arrays.stream(Bukkit.getPluginManager().getPlugins())
.toList().stream().map(Plugin::getName).toList();
StringUtil.copyPartialMatches(args[1], add, completions);
return completions;
}

if (args.length == 2 && (args[0].equals("remove"))) {
List<String> remove = new ArrayList<>(config.getPluginList());
StringUtil.copyPartialMatches(args[1], remove, completions);
return completions;
}
if (args.length == 2 && (args[0].equals("action"))) {
List<String> actions = new ArrayList<>(List.of("log-to-console", "disallow-player-login", "shutdown-server"));
StringUtil.copyPartialMatches(args[1], actions, completions);
return completions;
} else {
return Collections.emptyList();
}
}

private void reload() {
plugin.reloadConfig();
config.reload();
lang.reload();
plugin.checkPlugins();
}

}
15 changes: 15 additions & 0 deletions src/main/java/com/armamc/plugincontrol/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.player.PlayerLoginEvent;

import java.io.File;
import java.io.IOException;
Expand Down Expand Up @@ -59,14 +60,28 @@ private void saveConfig() {
});
}

public void reload() {
PlayerLoginEvent.getHandlerList().unregister(plugin);
}

public String getAction() {
return config.getString("action");
}

public void setAction(String action) {
config.set("action", action);
saveConfig();
}

public String getKickMessage() {
return config.getString("kick-message");
}

public void setKickMessage(String kickMessage) {
config.set("kick-message", kickMessage);
saveConfig();
}

public boolean isEnabled() {
return config.getBoolean("enabled");
}
Expand Down
15 changes: 1 addition & 14 deletions src/main/java/com/armamc/plugincontrol/config/Lang.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package com.armamc.plugincontrol.config;

import com.armamc.plugincontrol.PluginControl;
import com.google.common.base.Charsets;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
Expand Down Expand Up @@ -40,17 +37,7 @@ private void saveDefaultLang() {
}
}

public void saveLang() {
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
try {
lang.save(langFile);
} catch (IOException e) {
plugin.getLogger().log(Level.SEVERE, "Error while saving the language file!", e);
}
});
}

public void reloadLang() {
public void reload() {
lang = YamlConfiguration.loadConfiguration(langFile);

final InputStream defLangStream = plugin.getResource(LANG_FILE_NAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public PlayerLoginListener(PluginControl plugin) {
private void onPlayerLogin(PlayerLoginEvent event) {
String kickMessage = config.getKickMessage();
if (kickMessage == null || kickMessage.isEmpty() || kickMessage.isBlank()) {
kickMessage = "You are not allowed to join the server!";
kickMessage = "[PluginControl] You are not allowed to join the server!";
}
if (event.getPlayer().hasPermission("plugincontrol.bypass")) {
return;
Expand Down
42 changes: 24 additions & 18 deletions src/main/resources/lang.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
prefix: '<dark_gray>[<red>PluginControl<dark_gray>]'
checking-plugins: '<prefix> <red>Checking plugins...'
command-not-found: '<red>Use <yellow>/plugincontrol <add|remove [plugin-name]> | <toggle|on|off|list|reload>'
disabling-server: '<prefix> <red>Disabling server because <yellow><plugins> <red>was not found or enabled successful!'
finished-checking: '<prefix> <green>Plugins successfully verified!'
log-to-console: '<prefix> <red>Plugin <yellow><plugins> <red>not found or enabled successful...'
no-permission-error: '<prefix> <red>You do not have permission to use this command'
plugin-add-error: '<red>Use <yellow>/<command> add [plugin-name]'
plugin-added: '<prefix> <green>Plugin <yellow><plugin> <green>added successfully!'
plugin-already-added: '<prefix> <red>Plugin already added!'
plugin-already-removed: '<prefix> <red>Plugin already removed!'
plugin-disabled: '<prefix> <red>Deactivating plugin features...'
plugin-enabled: '<prefix> <green>Activating plugin features...'
plugin-list: '<prefix> <green>List of plugins added: <yellow><plugins>'
plugin-list-empty: '<prefix> <red>No plugins added!'
plugin-not-found: '<prefix> <red>Plugin <yellow><plugin> <red>not found in the list!'
plugin-reload: '<prefix> <green>Language reloaded!'
plugin-remove-error: '<red>Use <yellow>/<command> remove <plugin-name>'
plugin-removed: '<prefix> <green>Plugin <yellow><plugin> <green>removed!'
console:
checking-plugins: '<prefix> <red>Checking plugins...'
disabling-server: '<prefix> <red>Disabling server because <yellow><plugins> <red>was not found or enabled successful!'
finished-checking: '<prefix> <green>Plugins successfully verified!'
log-to-console: '<prefix> <red>Plugin <yellow><plugins> <red>not found or enabled successful...'
command:
action-list: '<prefix> <green>Actions available: <yellow><actions>'
action-set: '<prefix> <green>Action set to <yellow><action> <green>!'
action-type: '<prefix> <green>Action type: <yellow><action> <green>!'
command-not-found: '<red>Use <yellow>/<command> <add|remove [plugin-name]> | <toggle|on|off|list|reload>'
kick-message: '<prefix> <green>Kick message: <yellow><kick-message>'
kick-message-set: '<prefix> <green>Kick message set to <yellow><kick-message> <green>!'
no-permission-error: '<prefix> <red>You do not have permission to use this command'
plugin-add-error: '<red>Use <yellow>/<command> add [plugin-name]'
plugin-added: '<prefix> <green>Plugin <yellow><plugin> <green>added successfully!'
plugin-already-added: '<prefix> <red>Plugin already added!'
plugin-disabled: '<prefix> <red>Deactivating plugin features...'
plugin-enabled: '<prefix> <green>Activating plugin features...'
plugin-list: '<prefix> <green>Plugins added: <yellow><plugins>'
plugin-list-empty: '<prefix> <red>No plugins added!'
plugin-not-found: '<prefix> <red>Plugin <yellow><plugin> <red>not found in the list!'
plugin-reload: '<prefix> <green>Config and Language reloaded!'
plugin-remove-error: '<red>Use <yellow>/<command> remove <plugin-name>'
plugin-removed: '<prefix> <green>Plugin <yellow><plugin> <green>removed!'

0 comments on commit 5ca4d1f

Please sign in to comment.