Dateien nach "src/main/java/de/viper/survivalplus/commands" hochladen
This commit is contained in:
127
src/main/java/de/viper/survivalplus/commands/PluginCommand.java
Normal file
127
src/main/java/de/viper/survivalplus/commands/PluginCommand.java
Normal file
@@ -0,0 +1,127 @@
|
||||
package de.viper.survivalplus.commands;
|
||||
|
||||
import de.viper.survivalplus.SurvivalPlus;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PluginCommand implements CommandExecutor {
|
||||
private final SurvivalPlus plugin;
|
||||
private static final int COMMANDS_PER_PAGE = 5;
|
||||
|
||||
public PluginCommand(SurvivalPlus plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
FileConfiguration lang = plugin.getLangConfig();
|
||||
|
||||
if (args.length == 0 || args[0].equalsIgnoreCase("help")) {
|
||||
int page = 1;
|
||||
if (args.length > 1 && args[0].equalsIgnoreCase("help")) {
|
||||
try {
|
||||
page = Integer.parseInt(args[1]);
|
||||
if (page < 1) page = 1;
|
||||
} catch (NumberFormatException e) {
|
||||
sender.sendMessage(color(lang.getString("sp.invalid-subcommand", "§cUngültiger Unterbefehl! Verwendung: /sp [reload|help]")));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
showHelp(sender, page);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (!sender.hasPermission("survivalplus.reload")) {
|
||||
sender.sendMessage(color(lang.getString("no-permission", "&cKeine Berechtigung!")));
|
||||
return true;
|
||||
}
|
||||
plugin.reloadPlugin();
|
||||
sender.sendMessage(color(lang.getString("plugin.reloaded", "&aPlugin neu geladen.")));
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(color(lang.getString("sp.invalid-subcommand", "&cUngültiger Unterbefehl!")));
|
||||
return true;
|
||||
}
|
||||
|
||||
private void showHelp(CommandSender sender, int page) {
|
||||
FileConfiguration help = plugin.getHelpConfig();
|
||||
FileConfiguration lang = plugin.getLangConfig();
|
||||
|
||||
if (help == null || help.getConfigurationSection("commands") == null) {
|
||||
sender.sendMessage(color(lang.getString("sp.help-not-found", "&cHilfe nicht gefunden.")));
|
||||
return;
|
||||
}
|
||||
|
||||
List<String> commands = new ArrayList<>(help.getConfigurationSection("commands").getKeys(false));
|
||||
if (commands.isEmpty()) {
|
||||
sender.sendMessage(color(lang.getString("sp.help-not-found", "&cKeine Befehle verfügbar.")));
|
||||
return;
|
||||
}
|
||||
|
||||
int totalPages = (int) Math.ceil((double) commands.size() / COMMANDS_PER_PAGE);
|
||||
if (page > totalPages) page = totalPages;
|
||||
if (page < 1) page = 1;
|
||||
|
||||
sender.sendMessage(color(help.getString("header", "&7===== &eSurvivalPlus Hilfe &7=====")));
|
||||
|
||||
int startIndex = (page - 1) * COMMANDS_PER_PAGE;
|
||||
int endIndex = Math.min(startIndex + COMMANDS_PER_PAGE, commands.size());
|
||||
|
||||
for (int i = startIndex; i < endIndex; i++) {
|
||||
String cmd = commands.get(i);
|
||||
String usage = help.getString("commands." + cmd + ".usage", "");
|
||||
String description = help.getString("commands." + cmd + ".description", "");
|
||||
sender.sendMessage(color(usage + " §7- " + description));
|
||||
}
|
||||
|
||||
if (sender instanceof Player player) {
|
||||
TextComponent navigation = new TextComponent();
|
||||
|
||||
if (page > 1) {
|
||||
TextComponent prev = new TextComponent(color(help.getString("navigation.prev", "« Vorherige ")));
|
||||
prev.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/sp help " + (page - 1)));
|
||||
navigation.addExtra(prev);
|
||||
} else {
|
||||
navigation.addExtra(color(help.getString("navigation.prev-disabled", "« ")));
|
||||
}
|
||||
|
||||
TextComponent pageInfo = new TextComponent(color(help.getString("navigation.page", " §fSeite {current} von {total} "))
|
||||
.replace("{current}", String.valueOf(page))
|
||||
.replace("{total}", String.valueOf(totalPages)));
|
||||
navigation.addExtra(pageInfo);
|
||||
|
||||
if (page < totalPages) {
|
||||
TextComponent next = new TextComponent(color(help.getString("navigation.next", " Nächste »")));
|
||||
next.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/sp help " + (page + 1)));
|
||||
navigation.addExtra(next);
|
||||
} else {
|
||||
navigation.addExtra(color(help.getString("navigation.next-disabled", " »")));
|
||||
}
|
||||
|
||||
player.spigot().sendMessage(navigation);
|
||||
} else {
|
||||
for (String cmd : commands) {
|
||||
String usage = help.getString("commands." + cmd + ".usage", "");
|
||||
String description = help.getString("commands." + cmd + ".description", "");
|
||||
sender.sendMessage(color(usage + " §7- " + description));
|
||||
}
|
||||
}
|
||||
|
||||
sender.sendMessage(color(help.getString("footer", "&7==========================")));
|
||||
}
|
||||
|
||||
private String color(String input) {
|
||||
return ChatColor.translateAlternateColorCodes('&', input);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user