Delete src/main/java/net/viper/status/modules/help/HelpModule.java via Git Manager GUI
This commit is contained in:
@@ -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)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user