Skip to content

Commit

Permalink
v1.0.3 - New features
Browse files Browse the repository at this point in the history
  • Loading branch information
SrBedrock committed Jun 20, 2023
1 parent 3a9e67b commit 371ff23
Show file tree
Hide file tree
Showing 9 changed files with 292 additions and 74 deletions.
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
}

group = "com.armamc"
version = "1.0.2"
version = "1.0.3-SNAPSHOT"

repositories {
mavenCentral()
Expand All @@ -16,6 +16,7 @@ repositories {
dependencies {
implementation("net.kyori:adventure-api:4.14.0")
implementation("net.kyori:adventure-platform-bukkit:4.3.0")
implementation("net.kyori:adventure-text-minimessage:4.14.0")
compileOnly(dependencyNotation = "org.spigotmc:spigot-api:1.19.3-R0.1-SNAPSHOT")
}

Expand Down
82 changes: 66 additions & 16 deletions src/main/java/com/armamc/plugincontrol/PluginControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,32 @@

import com.armamc.plugincontrol.commands.Command;
import com.armamc.plugincontrol.config.Config;
import com.armamc.plugincontrol.config.Lang;
import com.armamc.plugincontrol.listeners.PlayerLoginListener;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
import org.checkerframework.checker.nullness.qual.NonNull;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;

public final class PluginControl extends JavaPlugin {
private static PluginControl instance;
private BukkitAudiences adventure;
private final MiniMessage miniMessage = MiniMessage.miniMessage();
private Config config;
private Lang lang;

@Override
public void onEnable() {
instance = this;
this.adventure = BukkitAudiences.create(this);
registerConfig();
registerCommands();
saveDefaultConfig();
Config.load();
registerTask();
}

Expand All @@ -33,12 +39,21 @@ public void onDisable() {
}
}

public static PluginControl getInstance() {
return instance;
public Config getPluginConfig() {
return config;
}

public Lang getPluginLang() {
return lang;
}

private void registerConfig() {
config = new Config(this);
lang = new Lang(this);
}

private void registerCommands() {
Command command = new Command();
Command command = new Command(this);
PluginCommand pluginCommand = getCommand("plugincontrol");
if (pluginCommand != null) {
pluginCommand.setExecutor(command);
Expand All @@ -48,28 +63,43 @@ private void registerCommands() {

private void registerTask() {
Bukkit.getScheduler().runTaskLater(this, () -> {
if (Config.isEnabled()) {
getLogger().info("Checking plugins...");
if (config.isEnabled()) {
sendToConsole(lang.message("checking-plugins"));
checkPlugins();
}
}, 20L);
}


private void checkPlugins() {
List<String> plugins = Config.getPluginList();
public void checkPlugins() {
List<String> plugins = config.getPluginList();
List<String> missingPlugins = new ArrayList<>();
boolean hasPlugins = false;
for (String plugin : plugins) {
if (getServer().getPluginManager().getPlugin(plugin) == null) {
getLogger().warning(() -> MessageFormat.format("Plugin {0} não encontrado!", plugin));
missingPlugins.add(plugin);
hasPlugins = true;
}
}
if (hasPlugins) {
getLogger().warning("One or more plugins required for the server to function properly were not found. Shutting down the server!");
getServer().shutdown();
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);
return;
}
if (config.getAction().equals("log-to-console")) {
sendToConsole(lang.message("log-to-console"), tag);
return;
}
if (config.getAction().equals("shutdown-server")) {
sendToConsole(lang.message("disabling-server"), tag);
getServer().shutdown();
}
} else {
getLogger().info("Plugins successfully verified!");
sendToConsole(lang.message("finished-checking"));
}
}

Expand All @@ -80,4 +110,24 @@ private void checkPlugins() {
return this.adventure;
}

public void sendToConsole(String message) {
TagResolver.Single prefix = Placeholder.parsed("prefix", lang.message("prefix"));
adventure().console().sendMessage(miniMessage.deserialize(message, prefix));
}

public void sendToConsole(String message, TagResolver tags) {
TagResolver.Single prefix = Placeholder.parsed("prefix", lang.message("prefix"));
adventure().console().sendMessage(miniMessage.deserialize(message, prefix, tags));
}

public void sendToPlayer(CommandSender sender, String message) {
TagResolver.Single prefix = Placeholder.parsed("prefix", lang.message("prefix"));
adventure().sender(sender).sendMessage(miniMessage.deserialize(message, prefix));
}

public void sendToPlayer(CommandSender sender, String message, TagResolver tags) {
TagResolver.Single prefix = Placeholder.parsed("prefix", lang.message("prefix"));
adventure().sender(sender).sendMessage(miniMessage.deserialize(message, prefix, tags));
}

}
97 changes: 55 additions & 42 deletions src/main/java/com/armamc/plugincontrol/commands/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import com.armamc.plugincontrol.PluginControl;
import com.armamc.plugincontrol.config.Config;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import com.armamc.plugincontrol.config.Lang;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
Expand All @@ -14,92 +13,106 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Command implements CommandExecutor, TabCompleter {
private final PluginControl plugin;
private final Config config;
private final Lang lang;
private static final String PLUGIN_TAG = "plugin";
private static final String COMMAND_TAG = "command";

private final BukkitAudiences adventure = PluginControl.getInstance().adventure();
public Command(PluginControl plugin) {
this.plugin = plugin;
this.config = plugin.getPluginConfig();
this.lang = plugin.getPluginLang();
}

@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"));
return true;
}
if (args.length >= 1) {
switch (args[0]) {
case "enable", "on" -> {
Config.setEnabled(true);
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Activating plugin features...")
.color(NamedTextColor.GREEN));
config.setEnabled(true);
plugin.sendToPlayer(sender, lang.message("plugin-enabled"));
return true;
}
case "disable", "off" -> {
Config.setEnabled(false);
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Disabling plugin features...")
.color(NamedTextColor.GREEN));
config.setEnabled(false);
plugin.sendToPlayer(sender, lang.message("plugin-disabled"));
return true;
}
case "toggle" -> {
Config.setEnabled(!Config.isEnabled());
boolean enabled = Config.isEnabled();
config.setEnabled(!config.isEnabled());
boolean enabled = config.isEnabled();
if (enabled) {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Activating plugin features...")
.color(NamedTextColor.GREEN));
plugin.sendToPlayer(sender, lang.message("plugin-enabled"));
} else {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Disabling plugin features...")
.color(NamedTextColor.GREEN));
plugin.sendToPlayer(sender, lang.message("plugin-disabled"));
}
return true;
}
case "add" -> {
if (args.length < 2 || args[1].isBlank() || args.length >= 3) {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Use /plugincontrol add <plugin-name>")
.color(NamedTextColor.RED));
plugin.sendToPlayer(sender, lang.message("plugin-add-error"),
Placeholder.parsed(COMMAND_TAG, label));
return true;
}
if (Config.addPlugin(args[1])) {
adventure.sender(sender).sendMessage(Component.text(MessageFormat.format("[PluginControl] Plugin {0} added!", args[1]))
.color(NamedTextColor.GREEN));
if (config.addPlugin(args[1])) {
plugin.sendToPlayer(sender, lang.message("plugin-added"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
} else {
adventure.sender(sender).sendMessage(Component.text(MessageFormat.format("[PluginControl] Plugin {0} is already added!", args[1]))
.color(NamedTextColor.RED));
plugin.sendToPlayer(sender, lang.message("plugin-already-added"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
}
return true;
}
case "remove" -> {
if (Config.getPluginList().isEmpty()) {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] No plugins added!").color(NamedTextColor.RED));
if (config.getPluginList().isEmpty()) {
plugin.sendToPlayer(sender, lang.message("plugin-list-empty"));
return true;
}
if (args.length < 2 || args[1].isBlank() || args.length >= 3) {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Use /plugincontrol remove <plugin-name>")
.color(NamedTextColor.RED));
plugin.sendToPlayer(sender, lang.message("plugin-remove-error"),
Placeholder.parsed(COMMAND_TAG, label));
return true;
}
if (Config.removePlugin(args[1])) {
adventure.sender(sender).sendMessage(Component.text(MessageFormat.format("[PluginControl] Plugin {0} removed!", args[1]))
.color(NamedTextColor.GREEN));
if (config.removePlugin(args[1])) {
plugin.sendToPlayer(sender, lang.message("plugin-removed"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
} else {
adventure.sender(sender).sendMessage(Component.text(MessageFormat.format("[PluginControl] Plugin {0} is not in the list!", args[1]))
.color(NamedTextColor.RED));
plugin.sendToPlayer(sender, lang.message("plugin-not-found"),
Placeholder.parsed(PLUGIN_TAG, args[1]));
}
return true;
}
case "list" -> {
if (Config.getPluginList().isEmpty()) {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] No plugins were added!")
.color(NamedTextColor.RED));
if (config.getPluginList().isEmpty()) {
plugin.sendToPlayer(sender, lang.message("plugin-list-empty"));
} else {
adventure.sender(sender).sendMessage(Component.text("[PluginControl] Plugins added:")
.color(NamedTextColor.YELLOW).appendNewline()
.append(Component.text(String.join(", ", Config.getPluginList()))
.color(NamedTextColor.GREEN)));
plugin.sendToPlayer(sender, lang.message("plugin-list"),
Placeholder.parsed("plugins",
String.join(", ", config.getPluginList())));
}
return true;
}
case "reload" -> {
plugin.reloadConfig();
lang.reloadLang();
plugin.checkPlugins();
plugin.sendToPlayer(sender, lang.message("plugin-reload"));
return true;
}
default -> {
return false;
plugin.sendToPlayer(sender, lang.message("command-not-found"));
return true;
}
}
}
Expand All @@ -124,7 +137,7 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
}

if (args.length == 2 && (args[0].equals("remove"))) {
List<String> remove = new ArrayList<>(Config.getPluginList());
List<String> remove = new ArrayList<>(config.getPluginList());
StringUtil.copyPartialMatches(args[1], remove, completions);
return completions;
} else {
Expand Down
Loading

0 comments on commit 371ff23

Please sign in to comment.