Delete src/main/java/net/viper/status/modules/help/HelpModule.java via Git Manager GUI

This commit is contained in:
2026-05-24 19:43:36 +00:00
parent 4cc661ae0e
commit 1b04892356

View File

@@ -1,252 +0,0 @@
package net.viper.status.modules.help;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Plugin;
import net.viper.status.StatusAPI;
import net.viper.status.module.Module;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* HelpModule seitenbasierte Ingame-Hilfe.
*
* verify.properties:
* statusapi.help=vn → /vn help [seite]
* statusapi.help.permission=statusapi.admin
*/
public class HelpModule implements Module {
private String commandName = "help";
private String adminPermission = "statusapi.admin";
@Override
public String getName() { return "HelpModule"; }
@Override
public void onEnable(Plugin plugin) {
Properties props = ((StatusAPI) plugin).getVerifyProperties();
if (props != null) {
String cn = props.getProperty("statusapi.help", "help").trim();
if (!cn.isEmpty()) commandName = cn;
String ap = props.getProperty("statusapi.help.permission", "statusapi.admin").trim();
if (!ap.isEmpty()) adminPermission = ap;
}
ProxyServer.getInstance().getPluginManager().registerCommand(plugin,
new HelpCommand(commandName, adminPermission));
plugin.getLogger().info("[HelpModule] /" + commandName + " help registriert (Admin-Permission: " + adminPermission + ")");
}
@Override
public void onDisable(Plugin plugin) {}
// ─────────────────────────────────────────────────────────────────────────
private static class HelpCommand extends Command {
private final String adminPerm;
// Jede Seite ist eine Liste von Zeilen
// Seiten werden zur Laufzeit je nach Berechtigung zusammengebaut
HelpCommand(String name, String adminPerm) {
super(name, null);
this.adminPerm = adminPerm;
}
@Override
public void execute(CommandSender sender, String[] args) {
if (args.length == 0) {
send(sender, "&7Nutze &e/" + getName() + " help &7für eine Befehlsübersicht.");
return;
}
if (!args[0].equalsIgnoreCase("help")) {
send(sender, "&cUnbekannter Unterbefehl. Nutze &e/" + getName() + " help&c.");
return;
}
boolean isAdmin = !(sender instanceof ProxiedPlayer)
|| sender.hasPermission(adminPerm)
|| sender.hasPermission("statusapi.admin");
// Seiten aufbauen
List<List<String>> pages = buildPages(isAdmin);
int totalPages = pages.size();
int page = 1;
if (args.length >= 2) {
try {
page = Integer.parseInt(args[1].trim());
} catch (NumberFormatException e) {
send(sender, "&cUngültige Seitenzahl. Nutze &e/" + getName() + " help <1-" + totalPages + ">&c.");
return;
}
}
if (page < 1 || page > totalPages) {
send(sender, "&cSeite &e" + page + " &cexistiert nicht. Verfügbar: &e1&c-&e" + totalPages + "&c.");
return;
}
// Header
send(sender, "");
send(sender, "&8&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
send(sender, " &6&lStatusAPI &8| &7Hilfe &8 &7Seite &e" + page + "&8/&e" + totalPages);
send(sender, "&8&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
send(sender, "");
// Seiteninhalte
for (String line : pages.get(page - 1)) {
send(sender, line);
}
send(sender, "");
// Navigation
sendNavigation(sender, getName(), page, totalPages);
send(sender, "");
}
/** Baut alle Seiten zusammen. Admins bekommen zusätzliche Seiten. */
private List<List<String>> buildPages(boolean isAdmin) {
List<List<String>> pages = new ArrayList<>();
// ── Seite 1: Allgemein & Chat ─────────────────────────────────────
List<String> p1 = new ArrayList<>();
p1.add(" &e&lAllgemein");
p1.add(" &a/verify <token> &8 &7Account verifizieren");
p1.add(" &a/forumlink &8(&7/fl&8) &8 &7Forum-Account verknüpfen");
p1.add(" &a/forum &8 &7Forum-Benachrichtigungen");
p1.add(" &a/go [server] &8(&7/wechsel, /switch&8) &8 &7Serverwechsel");
p1.add(" &a/scoreboard &8(&7/sb&8) [hide|show] &8 &7Scoreboard umschalten");
p1.add("");
p1.add(" &e&lChat");
p1.add(" &a/msg <Spieler> <Text> &8(&7/w, /tell&8) &8 &7Private Nachricht");
p1.add(" &a/r <Text> &8(&7/reply, /antwort&8) &8 &7Auf PN antworten");
p1.add(" &a/ignore <Spieler> &8(&7/block&8) &8 &7Spieler ignorieren");
p1.add(" &a/unignore <Spieler> &8(&7/unblock&8) &8 &7Ignorierung aufheben");
p1.add(" &a/channel [kanal] &8(&7/ch, /kanal&8) &8 &7Kanal wechseln");
p1.add(" &a/chataus &8(&7/togglechat&8) &8 &7Chat-Empfang umschalten");
pages.add(p1);
// ── Seite 2: Chat (weiter) & Account-Verknüpfungen ───────────────
List<String> p2 = new ArrayList<>();
p2.add(" &e&lChat (Fortsetzung)");
p2.add(" &a/emoji &8(&7/emojis&8) &8 &7Alle Emojis anzeigen");
p2.add(" &a/mentions &8(&7/mention&8) &8 &7Mention-Benachrichtigungen");
p2.add(" &a/helpop <Nachricht> &8 &7Team um Hilfe bitten");
p2.add(" &a/report <Spieler> <Grund> &8 &7Spieler melden");
p2.add(" &a/chatbypass &8(&7/cbp&8) &8 &7ChatModule überspringen");
p2.add("");
p2.add(" &e&lAccount-Verknüpfungen");
p2.add(" &a/discordlink &8(&7/dlink&8) &8 &7Discord verknüpfen");
p2.add(" &a/telegramlink &8(&7/tlink&8) &8 &7Telegram verknüpfen");
p2.add(" &a/unlink <discord|telegram|all> &8 &7Verknüpfung aufheben");
pages.add(p2);
// ── Admin-Seiten nur für Berechtigte ──────────────────────────────
if (isAdmin) {
// ── Seite 3: StatusAPI, AntiBot, Vanish ───────────────────────
List<String> p3 = new ArrayList<>();
p3.add(" &c&lAdmin &8 &eStatusAPI & AntiBot");
p3.add(" &c/statusapi reload &8(&7/sapi reload&8) &8 &7Scoreboard & Tablist neu laden");
p3.add(" &c/netinfo &8 &7Proxy- & Systeminfos");
p3.add("");
p3.add(" &c/antibot status &8 &7AntiBot-Status anzeigen");
p3.add(" &c/antibot clearblocks &8 &7IP-Blockliste leeren");
p3.add(" &c/antibot unblock <IP> &8 &7IP entsperren");
p3.add(" &c/antibot profile &8 &7Schutzprofil wechseln");
p3.add(" &c/antibot reload &8 &7AntiBot neu laden");
p3.add("");
p3.add(" &c&lAdmin &8 &eVanish");
p3.add(" &c/vanish [Spieler] &8(&7/v&8) &8 &7Unsichtbar schalten");
p3.add(" &c/vanishlist &8(&7/vlist&8) &8 &7Unsichtbare Spieler anzeigen");
pages.add(p3);
// ── Seite 4: Chat-Admin, Reports, sonstige ────────────────────
List<String> p4 = new ArrayList<>();
p4.add(" &c&lAdmin &8 &eChat-Administration");
p4.add(" &c/broadcast <Text> &8(&7/bc, /alert&8) &8 &7Broadcast an alle");
p4.add(" &c/chatmute <Spieler> [Min.] &8(&7/gmute&8) &8 &7Spieler muten");
p4.add(" &c/chatunmute <Spieler> &8(&7/gunmute&8) &8 &7Mute aufheben");
p4.add(" &c/socialspy &8(&7/spy&8) &8 &7Private Nachrichten mitlesen");
p4.add(" &c/chatinfo <Spieler> &8 &7Chat-Info eines Spielers");
p4.add(" &c/chathist [Spieler] [n] &8 &7Chat-Verlauf anzeigen");
p4.add(" &c/chatreload &8 &7Chat-Konfiguration neu laden");
p4.add("");
p4.add(" &c&lAdmin &8 &eReports, Tools");
p4.add(" &c/reports [all] &8 &7Offene Reports anzeigen");
p4.add(" &c/reportclose <ID> &8 &7Report schließen");
p4.add(" &c/automessage reload &8 &7AutoMessage neu laden");
p4.add(" &c/bcmds reload &8 &7Custom-Commands neu laden");
p4.add(" &c/cb <Befehl> &8 &7Command-Blocker verwalten");
p4.add(" &c/scoreboard admin|player &8 &7Admin/Spieler-Ansicht wechseln");
pages.add(p4);
}
return pages;
}
/** Sendet eine klickbare Navigationszeile mit ◀ Seite X/Y ▶ */
private void sendNavigation(CommandSender sender, String cmd, int page, int total) {
// Für Konsole: einfacher Text
if (!(sender instanceof ProxiedPlayer)) {
String nav = " ";
if (page > 1) nav += "&7[&e◀&7] ";
nav += "&8Seite &e" + page + "&8/&e" + total;
if (page < total) nav += " &7[&e▶&7]";
send(sender, nav);
return;
}
// Für Spieler: klickbare Buttons
TextComponent line = new TextComponent(" ");
// ◀ zurück
if (page > 1) {
TextComponent prev = new TextComponent(
ChatColor.translateAlternateColorCodes('&', "&7[&e◀&7] "));
prev.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
"/" + cmd + " help " + (page - 1)));
prev.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
new ComponentBuilder(ChatColor.translateAlternateColorCodes('&',
"&7Seite &e" + (page - 1) + " &7anzeigen")).create()));
line.addExtra(prev);
}
// Seitenanzeige
TextComponent mid = new TextComponent(
ChatColor.translateAlternateColorCodes('&',
"&8Seite &e" + page + "&8/&e" + total));
line.addExtra(mid);
// ▶ vor
if (page < total) {
TextComponent next = new TextComponent(
ChatColor.translateAlternateColorCodes('&', " &7[&e▶&7]"));
next.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
"/" + cmd + " help " + (page + 1)));
next.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
new ComponentBuilder(ChatColor.translateAlternateColorCodes('&',
"&7Seite &e" + (page + 1) + " &7anzeigen")).create()));
line.addExtra(next);
}
sender.sendMessage(line);
}
private static void send(CommandSender s, String text) {
s.sendMessage(new TextComponent(
ChatColor.translateAlternateColorCodes('&', text)));
}
}
}