Dateien nach "src/main/java/de/nexuslobby/commands" hochladen

This commit is contained in:
2026-01-22 14:54:41 +00:00
parent 64a2d82404
commit 09558932be
6 changed files with 393 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
package de.nexuslobby.commands;
import de.nexuslobby.NexusLobby;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.UUID;
public class BuildCommand implements CommandExecutor {
// Liste der Spieler im Baumodus
private static final ArrayList<UUID> buildModePlayers = new ArrayList<>();
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) return true;
Player player = (Player) sender;
if (!player.hasPermission("nexuslobby.build")) {
player.sendMessage("§cKeine Rechte.");
return true;
}
UUID uuid = player.getUniqueId();
if (buildModePlayers.contains(uuid)) {
// BAUMODUS DEAKTIVIEREN
buildModePlayers.remove(uuid);
// Gamemode zurücksetzen (aus Config)
String defaultGmName = NexusLobby.getInstance().getConfig().getString("default-gamemode", "ADVENTURE");
try {
GameMode gm = GameMode.valueOf(defaultGmName.toUpperCase());
player.setGameMode(gm);
} catch (IllegalArgumentException e) {
player.setGameMode(GameMode.ADVENTURE);
}
player.sendMessage("§8» §6§lBuild §8| §7Baumodus §cdeaktiviert§7.");
} else {
// BAUMODUS AKTIVIEREN
buildModePlayers.add(uuid);
player.setGameMode(GameMode.CREATIVE);
player.sendMessage("§8» §6§lBuild §8| §7Baumodus §aaktiviert§7.");
}
return true;
}
public static boolean isInBuildMode(Player player) {
return buildModePlayers.contains(player.getUniqueId());
}
public static void removePlayerFromBuildMode(Player player) {
buildModePlayers.remove(player.getUniqueId());
}
}

View File

@@ -0,0 +1,58 @@
package de.nexuslobby.commands;
import de.nexuslobby.NexusLobby;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import java.util.Arrays;
public class GivePortalToolCommand implements CommandExecutor {
private final NexusLobby plugin;
public GivePortalToolCommand(NexusLobby plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Nur Spieler können dieses Item erhalten.");
return true;
}
Player p = (Player) sender;
// Erstelle das Item
ItemStack wand = new ItemStack(Material.BLAZE_ROD);
ItemMeta meta = wand.getItemMeta();
// Design des Items
meta.setDisplayName("§cPortal-Werkzeug");
meta.setLore(Arrays.asList(
"§7Linksklick: Setze Position 1",
"§7Rechtsklick: Setze Position 2",
" ",
"§eNexusLobby Portal System"
));
// Füge einen unsichtbaren Tag hinzu (NBT), damit wir das Item eindeutig erkennen
NamespacedKey key = new NamespacedKey(plugin, "nexuslobby_portal_wand");
meta.getPersistentDataContainer().set(key, PersistentDataType.BYTE, (byte) 1);
wand.setItemMeta(meta);
p.getInventory().addItem(wand);
p.sendMessage(plugin.getName() + " §aDu hast das Portal-Werkzeug erhalten!");
p.playSound(p.getLocation(), org.bukkit.Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
return true;
}
}

View File

@@ -0,0 +1,36 @@
package de.nexuslobby.commands;
import de.nexuslobby.modules.settings.LobbySettingsModule;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class LobbySettingsCommand implements CommandExecutor {
private final LobbySettingsModule module;
public LobbySettingsCommand(LobbySettingsModule module) {
this.module = module;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("§cDieser Befehl kann nur von Spielern genutzt werden.");
return true;
}
Player player = (Player) sender;
// Permission zurückgesetzt auf nexuslobby.admin
if (!player.hasPermission("nexuslobby.admin")) {
player.sendMessage("§cKeine Rechte.");
return true;
}
// Öffnet das Hauptmenü des Einstellungs-Moduls
module.openMainMenu(player);
return true;
}
}

View File

@@ -0,0 +1,101 @@
package de.nexuslobby.commands;
import de.nexuslobby.modules.portal.PortalManager;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class LobbyTabCompleter implements TabCompleter {
private final PortalManager portalManager;
public LobbyTabCompleter(PortalManager portalManager) {
this.portalManager = portalManager;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
List<String> suggestions = new ArrayList<>();
// --- NexusLobby Hauptbefehl ---
if (command.getName().equalsIgnoreCase("nexuslobby") || command.getName().equalsIgnoreCase("nexus")) {
if (args.length == 1) {
if (sender.hasPermission("nexuslobby.admin")) suggestions.add("reload");
suggestions.add("sb");
} else if (args.length == 2 && args[0].equalsIgnoreCase("sb")) {
suggestions.add("on");
suggestions.add("off");
if (sender.hasPermission("nexuslobby.scoreboard.admin")) {
suggestions.add("admin");
suggestions.add("spieler");
}
}
}
// --- Wartungsmodus ---
else if (command.getName().equalsIgnoreCase("maintenance")) {
if (args.length == 1) {
suggestions.add("on");
suggestions.add("off");
}
}
// --- Portalsystem ---
else if (command.getName().equalsIgnoreCase("portal")) {
if (args.length == 1) {
suggestions.add("create");
suggestions.add("delete");
suggestions.add("list");
} else if (args.length == 2 && args[0].equalsIgnoreCase("delete")) {
suggestions.addAll(portalManager.getPortalNames());
}
}
// --- NexusTools (ehemals astools) ---
else if (command.getName().equalsIgnoreCase("nexustools") || command.getName().equalsIgnoreCase("astools") || command.getName().equalsIgnoreCase("nt")) {
if (args.length == 1) {
suggestions.add("reload");
}
}
// --- NexusCmd (ehemals ascmd) ---
else if (command.getName().equalsIgnoreCase("nexuscmd") || command.getName().equalsIgnoreCase("ascmd") || command.getName().equalsIgnoreCase("ncmd")) {
if (args.length == 1) {
suggestions.add("name"); // NEU
suggestions.add("list");
suggestions.add("add");
suggestions.add("remove");
}
// Vorschläge für: /nexuscmd name <Text>
else if (args.length == 2 && args[0].equalsIgnoreCase("name")) {
suggestions.add("none");
suggestions.add("<Text>");
}
// Vorschläge für: /nexuscmd add <delay> <cooldown> <type>
else if (args.length == 2 && args[0].equalsIgnoreCase("add")) {
suggestions.add("0");
}
else if (args.length == 3 && args[0].equalsIgnoreCase("add")) {
suggestions.add("0");
}
else if (args.length == 4 && args[0].equalsIgnoreCase("add")) {
suggestions.add("player");
suggestions.add("console");
suggestions.add("bungee");
}
else if (args.length == 5 && args[0].equalsIgnoreCase("add") && args[3].equalsIgnoreCase("bungee")) {
suggestions.add("<Servername>");
}
}
// Filtert die Liste basierend auf dem, was der Spieler bereits getippt hat
return suggestions.stream()
.filter(s -> s.toLowerCase().startsWith(args[args.length - 1].toLowerCase()))
.collect(Collectors.toList());
}
}

View File

@@ -0,0 +1,47 @@
package de.nexuslobby.commands;
import de.nexuslobby.NexusLobby;
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 MaintenanceCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!sender.hasPermission("nexuslobby.maintenance")) {
sender.sendMessage("§cKeine Rechte!");
return true;
}
if (args.length != 1) {
sender.sendMessage("§cBenutzung: /maintenance <on|off>");
return true;
}
boolean enable = args[0].equalsIgnoreCase("on");
NexusLobby.getInstance().getConfig().set("maintenance.enabled", enable);
NexusLobby.getInstance().saveConfig();
if (enable) {
sender.sendMessage("§aWartungsmodus §cAKTIVIERT§a!");
String kickMsg = ChatColor.translateAlternateColorCodes('&',
NexusLobby.getInstance().getConfig().getString("maintenance.kick_message", "&cDer Server ist nun im Wartungsmodus!"));
for (Player all : Bukkit.getOnlinePlayers()) {
// Kicke alle, die kein OP sind UND keine spezielle Permission haben
if (!all.isOp() && !all.hasPermission("nexuslobby.join.maintenance")) {
all.kickPlayer(kickMsg);
}
}
} else {
sender.sendMessage("§aWartungsmodus §7deaktiviert.");
}
return true;
}
}

View File

@@ -0,0 +1,90 @@
package de.nexuslobby.commands;
import de.nexuslobby.NexusLobby;
import de.nexuslobby.modules.ScoreboardModule;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class NexusLobbyCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
// Sub-Befehl: /nexus sb <on|off|admin|spieler>
if (args.length >= 2 && args[0].equalsIgnoreCase("sb")) {
if (!(sender instanceof Player)) {
sender.sendMessage("§cDieser Befehl ist nur für Spieler!");
return true;
}
Player player = (Player) sender;
ScoreboardModule sbModule = (ScoreboardModule) NexusLobby.getInstance().getModuleManager().getModule(ScoreboardModule.class);
if (sbModule == null) {
player.sendMessage("§cDas Scoreboard-Modul ist aktuell deaktiviert.");
return true;
}
String sub = args[1].toLowerCase();
switch (sub) {
case "on":
sbModule.setVisibility(player, true);
break;
case "off":
sbModule.setVisibility(player, false);
break;
case "admin":
if (!player.hasPermission("nexuslobby.scoreboard.admin")) {
player.sendMessage("§cKeine Rechte für den Admin-Modus.");
return true;
}
sbModule.setAdminMode(player, true);
break;
case "spieler":
if (!player.hasPermission("nexuslobby.scoreboard.admin")) {
player.sendMessage("§cKeine Rechte für den Admin-Modus.");
return true;
}
sbModule.setAdminMode(player, false);
break;
default:
player.sendMessage("§cBenutzung: /nexus sb <on|off|admin|spieler>");
break;
}
return true;
}
// Sub-Befehl: /nexus reload
if (args.length == 1 && args[0].equalsIgnoreCase("reload")) {
if (!sender.hasPermission("nexuslobby.admin")) {
sender.sendMessage("§cDu hast keine Berechtigung für diesen Befehl.");
return true;
}
sender.sendMessage("§7[§6NexusLobby§7] §eKonfigurationen und Module werden neu geladen...");
NexusLobby.getInstance().reloadPlugin();
sender.sendMessage("§7[§6NexusLobby§7] §aDas Plugin wurde erfolgreich neu geladen!");
return true;
}
// Standard-Info
String version = NexusLobby.getInstance().getDescription().getVersion();
sender.sendMessage("§8§m--------------------------------------");
sender.sendMessage("§6§lNexusLobby §7- Informationen");
sender.sendMessage("");
sender.sendMessage("§ePlugin Name: §fNexusLobby");
sender.sendMessage("§eVersion: §f" + version);
sender.sendMessage("§eAutor: §fM_Viper");
sender.sendMessage("");
sender.sendMessage("§6Befehle:");
sender.sendMessage("§f/nexus reload §7- Plugin neu laden");
sender.sendMessage("§f/nexus sb <on|off> §7- Scoreboard schalten");
if (sender.hasPermission("nexuslobby.scoreboard.admin")) {
sender.sendMessage("§f/nexus sb <admin|spieler> §7- Modus wechseln");
}
sender.sendMessage("§8§m--------------------------------------");
return true;
}
}