# Changes:
All checks were successful
Build Plugin / build-test (push) Successful in 43s

- Add D7 Command (Admin interface)
- Add remove func to status
- Add Color table to Status custom
- Add wordlist
This commit is contained in:
tobid7 2024-11-24 12:03:15 +01:00
parent 682f361ea2
commit befce5d7d0
8 changed files with 230 additions and 7 deletions

15
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "mvn",
"args": [
"clean",
"package"
],
"type": "shell",
"problemMatcher": []
}
]
}

View File

@ -0,0 +1,114 @@
package de.npid7.serverlite.Commands;
import de.npid7.serverlite.Configs.PluginConfig;
import de.npid7.serverlite.D7ServerLite;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class D7Command implements CommandExecutor {
private void printUsage(CommandSender sender) {
sender.sendMessage("Verwendung: ");
sender.sendMessage("/d7 config reload -> Läd Config nau");
sender.sendMessage("/d7 config save -> Speichert die Config");
sender.sendMessage("/d7 wordlist add <word>");
sender.sendMessage("/d7 wordlist remove <word>");
sender.sendMessage("/d7 status <playername> set <status> <color> (color ist optional)");
sender.sendMessage("/d7 status <playername> remove -> Entfernt einem Spieler den Status");
}
@Override
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
if (!sender.hasPermission("d7.d7")) {
sender.sendMessage(ChatColor.RED.toString() + "This is an admin command!");
return false;
}
if (strings.length < 2 || strings.length > 5) {
printUsage(sender);
return false;
}
if (strings[0].equals("config")) {
if (strings.length != 2) {
printUsage(sender);
return false;
}
if (strings[1].equals("reload")) {
D7ServerLite.getInst().getPluginConfig().Load();
sender.sendMessage(ChatColor.GREEN.toString() + "Config neu geladen!");
return false;
} else if (strings[1].equals("save")) {
D7ServerLite.getInst().getPluginConfig().Save();
sender.sendMessage(ChatColor.GREEN.toString() + "Config gespeichert!");
return false;
} else {
sender.sendMessage(
ChatColor.RED.toString() + strings[1] + " ist kein subcommand von config!");
return false;
}
} else if (strings[0].equals("wordlist")) {
if (strings.length != 3) {
printUsage(sender);
return false;
}
PluginConfig pcfg = D7ServerLite.getInst().getPluginConfig();
if (strings[1].equals("add")) {
if (!pcfg.getWordBlacklist().add(strings[2])) {
sender.sendMessage(ChatColor.RED.toString() + "Wort ist bereits in der Liste!");
} else {
sender.sendMessage(ChatColor.GREEN.toString() + "Wort hinzugefügt!");
}
pcfg.Save();
return false;
} else if (strings[1].equals("remove")) {
if (!pcfg.getWordBlacklist().remove(strings[2])) {
sender.sendMessage(ChatColor.RED.toString() + "Wort nicht gefunden!");
} else {
sender.sendMessage(ChatColor.GREEN.toString() + "Wort entfernt!");
}
pcfg.Save();
return false;
}
} else if (strings[0].equals("status")) {
if (strings.length < 3 || strings.length > 5) {
printUsage(sender);
return false;
}
if (strings[2].equals("remove")) {
Player pl = Bukkit.getPlayer(strings[1]);
if (pl == null) {
sender.sendMessage(ChatColor.RED.toString() + "Player existiert nicht!");
return false;
}
D7ServerLite.getInst().getPlayerConfig().setStatus(pl.getUniqueId(), "");
D7ServerLite.getInst().getPlayerConfig().Save();
sender.sendMessage(ChatColor.GREEN.toString() + "Status entfernt von " + pl.getName());
return false;
} else if (strings[2].equals("set")) {
Player pl = Bukkit.getPlayer(strings[1]);
if (pl == null) {
sender.sendMessage(ChatColor.RED.toString() + "Player existiert nicht!");
return false;
}
String status = strings[3];
String color = ChatColor.WHITE.toString();
if (strings.length == 5) {
for (ChatColor c : ChatColor.values()) {
if (c.isColor() && c.name().equals(strings[4])) {
color = c.toString();
}
}
}
if (D7ServerLite.getInst().getPluginConfig().getWordBlacklist().find(status) != null) {
sender.sendMessage(ChatColor.RED.toString() + "Dieser Status ist nicht erlaubt!");
return false;
}
D7ServerLite.getInst().getPlayerConfig().setStatus(pl.getUniqueId(), color + status);
D7ServerLite.getInst().getPlayerConfig().Save();
sender.sendMessage(ChatColor.GREEN.toString() + "Status gesetzt für " + pl.getName());
}
}
return false;
}
}

View File

@ -11,11 +11,12 @@ import org.bukkit.entity.Player;
public class StatusCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
if (strings.length != 1 && strings.length != 2) {
sender.sendMessage("Verwendung: /status Status");
if (strings.length < 1 || strings.length > 3) {
sender.sendMessage("Verwendung: /status <status/custom/remove>");
return false;
}
String str = "";
String color = ChatColor.WHITE.toString(); // Default to White
boolean is_def = false;
for (String st : D7ServerLite.getInst().getPluginConfig().getDefaultStatusList()) {
if (strings[0].equals(st)) {
@ -26,8 +27,8 @@ public class StatusCommand implements CommandExecutor {
if (is_def) {
// Leave empty
} else if (strings[0].equals("custom")) {
if (strings.length != 2) {
sender.sendMessage("Verwendung: /status custom Status");
if (strings.length < 2) {
sender.sendMessage("Verwendung: /status custom <status> <color>");
return false;
}
if (strings[1].length() > 10) {
@ -35,17 +36,29 @@ public class StatusCommand implements CommandExecutor {
return false;
}
str = strings[1];
if (strings.length == 3) {
for (ChatColor c : ChatColor.values()) {
if (c.isColor() && c.name().equals(strings[2])) {
color = c.toString();
}
}
}
} else if (strings[0].equals("remove")) {
PlayerConfig pcfg = D7ServerLite.getInst().getPlayerConfig();
pcfg.setStatus(((Player) sender).getUniqueId(), "");
pcfg.Save();
return false;
} else {
sender.sendMessage(
ChatColor.RED.toString() + "Was auch immer du versuchst... lass es einfach!");
return false;
}
if (D7ServerLite.getInst().getPluginConfig().getWordBlacklist().find(str) != null) {
sender.sendMessage(ChatColor.RED.toString() + "Diser Status ist nicht erlaubt!");
sender.sendMessage(ChatColor.RED.toString() + "Dieser Status ist nicht erlaubt!");
return false;
}
PlayerConfig pcfg = D7ServerLite.getInst().getPlayerConfig();
pcfg.setStatus(((Player) sender).getUniqueId(), str);
pcfg.setStatus(((Player) sender).getUniqueId(), color + str);
pcfg.Save();
return false;
}

View File

@ -104,6 +104,8 @@ public class PluginConfig {
wordBlacklist.add("MOD");
wordBlacklist.add("TEAM");
wordBlacklist.add("STAFF");
wordBlacklist.add("OWNER");
wordBlacklist.add("MODERATOR");
defaultStatus = "";
defaultStatusList.add("Online");
defaultStatusList.add("AFK");

View File

@ -1,10 +1,12 @@
package de.npid7.serverlite;
import de.npid7.serverlite.Commands.D7Command;
import de.npid7.serverlite.Commands.StatusCommand;
import de.npid7.serverlite.Configs.PlayerConfig;
import de.npid7.serverlite.Configs.PluginConfig;
import de.npid7.serverlite.Helpers.Spielzeit;
import de.npid7.serverlite.Listeners.JoinListener;
import de.npid7.serverlite.TabCompleters.D7Completer;
import de.npid7.serverlite.TabCompleters.StatusCompleter;
import de.npid7.serverlite.Tasks.TablistTask;
import java.util.logging.Logger;
@ -37,6 +39,8 @@ public class D7ServerLite extends JavaPlugin {
tablistUpdater = new TablistTask();
getCommand("status").setExecutor(new StatusCommand());
getCommand("status").setTabCompleter(new StatusCompleter());
getCommand("d7").setExecutor(new D7Command());
getCommand("d7").setTabCompleter(new D7Completer());
Bukkit.getPluginManager().registerEvents(new JoinListener(), this);
}

View File

@ -0,0 +1,62 @@
package de.npid7.serverlite.TabCompleters;
import de.npid7.serverlite.D7ServerLite;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
public class D7Completer implements TabCompleter {
@Override
public List<String> onTabComplete(
CommandSender sender, Command command, String alias, String[] args) {
List<String> completions = new ArrayList<>();
if (command.getName().equals("d7")) {
if (!sender.hasPermission("d7.d7")) {
return completions;
}
if (args.length == 1) {
completions.add("config");
completions.add("status");
completions.add("wordlist");
} else if (args.length == 2) {
if (args[0].equals("config")) {
completions.add("reload");
completions.add("save");
} else if (args[0].equals("status")) {
for (Player pl : Bukkit.getOnlinePlayers()) {
completions.add(pl.getName());
}
} else if (args[0].equals("wordlist")) {
completions.add("add");
completions.add("remove");
}
} else if (args.length == 3) {
if (args[0].equals("status")) {
completions.add("remove");
completions.add("set");
} else if (args[0].equals("wordlist")) {
if (args[1].equals("remove")) {
for (String s : D7ServerLite.getInst().getPluginConfig().getWordBlacklist().getList()) {
completions.add(s);
}
}
}
} else if (args.length == 5) {
if (args[2].equals("set")) {
for (ChatColor c : ChatColor.values()) {
if (c.isColor()) {
completions.add(c.name());
}
}
}
}
}
return completions;
}
}

View File

@ -3,6 +3,7 @@ package de.npid7.serverlite.TabCompleters;
import de.npid7.serverlite.D7ServerLite;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
@ -18,6 +19,15 @@ public class StatusCompleter implements TabCompleter {
completions.add(s);
}
completions.add("custom");
completions.add("remove");
} else if (args.length == 3) {
if (args[0].equals("custom")) {
for (ChatColor c : ChatColor.values()) {
if (c.isColor()) {
completions.add(c.name());
}
}
}
}
}
return completions;

View File

@ -6,3 +6,6 @@ api-version: 1.17
commands:
status:
description: Play Status Command
d7:
description: Admin Command Interface
permission: d7.d7