Delete src/main/java/net/viper/status/modules/navigation/NavigationModule.java via Git Manager GUI
This commit is contained in:
@@ -1,149 +0,0 @@
|
|||||||
package net.viper.status.modules.navigation;
|
|
||||||
|
|
||||||
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.config.ServerInfo;
|
|
||||||
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.module.Module;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* NavigationModule - Erstellt automatisch Server-Switch Befehle basierend auf der verify.properties.
|
|
||||||
*/
|
|
||||||
public class NavigationModule implements Module {
|
|
||||||
|
|
||||||
private Plugin plugin;
|
|
||||||
private boolean isEnabled = true;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "NavigationModule";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onEnable(Plugin plugin) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
loadConfig(plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisable(Plugin plugin) {
|
|
||||||
// Befehle müssen nicht manuell entfernt werden (handled by Bungee)
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadConfig(Plugin plugin) {
|
|
||||||
String fileName = "verify.properties";
|
|
||||||
File file = new File(plugin.getDataFolder(), fileName);
|
|
||||||
Properties props = new Properties();
|
|
||||||
|
|
||||||
// 1. Datei kopieren falls nicht vorhanden
|
|
||||||
if (!file.exists()) {
|
|
||||||
// Wir müssen hier nichts erstellen, da GlobalChat oder Verify das schon tun
|
|
||||||
// Wir versuchen einfach nur zu laden
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Laden
|
|
||||||
try (InputStream in = new FileInputStream(file)) {
|
|
||||||
props.load(in);
|
|
||||||
} catch (IOException e) {
|
|
||||||
plugin.getLogger().warning("Konnte " + fileName + " nicht für Navigation laden.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Aktivierung prüfen
|
|
||||||
isEnabled = Boolean.parseBoolean(props.getProperty("navigation.enabled", "true"));
|
|
||||||
|
|
||||||
if (!isEnabled) {
|
|
||||||
plugin.getLogger().info("§eNavigation ist DEAKTIVIERT.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Befehle generieren
|
|
||||||
int registered = 0;
|
|
||||||
for (String key : props.stringPropertyNames()) {
|
|
||||||
if (key.startsWith("server.")) {
|
|
||||||
// Struktur: server.<ServerName>=<DisplayName>
|
|
||||||
// Wir ignorieren Unterpunkte wie .id oder .secret (teilen wir am Punkt)
|
|
||||||
String[] parts = key.split("\\.");
|
|
||||||
|
|
||||||
if (parts.length == 2) {
|
|
||||||
String targetServer = parts[1]; // Z.B. "bungee-server-1" oder "lobby"
|
|
||||||
String displayName = props.getProperty(key); // Z.B. "&aSurvival"
|
|
||||||
|
|
||||||
// Befehlsnamen generieren: Farbcodes entfernen und Leerzeichen entfernen
|
|
||||||
// "&aSurvival" -> "Survival" -> "/survival"
|
|
||||||
String alias = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', displayName))
|
|
||||||
.toLowerCase()
|
|
||||||
.replace(" ", "");
|
|
||||||
|
|
||||||
if (alias.isEmpty()) continue;
|
|
||||||
|
|
||||||
// Command registrieren
|
|
||||||
try {
|
|
||||||
plugin.getProxy().getPluginManager().registerCommand(plugin, new ServerSwitchCommand(targetServer, displayName, alias));
|
|
||||||
registered++;
|
|
||||||
plugin.getLogger().info("§aBefehl registered: /" + alias + " -> " + targetServer);
|
|
||||||
} catch (Exception e) {
|
|
||||||
plugin.getLogger().warning("Konnte Befehl für " + targetServer + " nicht registrieren: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (registered > 0) {
|
|
||||||
plugin.getLogger().info("§aNavigation aktiviert! " + registered + " Server-Befehle erstellt.");
|
|
||||||
} else {
|
|
||||||
plugin.getLogger().warning("§cKeine Server für Navigation gefunden (Überprüfe verify.properties).");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interne Klasse für den Switch-Befehl.
|
|
||||||
* Ein Objekt davon wird für jeden Server erstellt.
|
|
||||||
*/
|
|
||||||
private class ServerSwitchCommand extends Command {
|
|
||||||
|
|
||||||
private final String targetServer; // Der technische Name (z.B. bungee-server-1)
|
|
||||||
private final String displayName; // Der hübsche Name (z.B. &aSurvival)
|
|
||||||
|
|
||||||
public ServerSwitchCommand(String targetServer, String displayName, String alias) {
|
|
||||||
super(alias); // Befehl name
|
|
||||||
this.targetServer = targetServer;
|
|
||||||
this.displayName = displayName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(CommandSender sender, String[] args) {
|
|
||||||
if (!(sender instanceof ProxiedPlayer)) {
|
|
||||||
sender.sendMessage(ChatColor.RED + "Nur Spieler können den Server wechseln.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ProxiedPlayer p = (ProxiedPlayer) sender;
|
|
||||||
|
|
||||||
// Check ob Spieler schon auf dem Server ist
|
|
||||||
if (p.getServer() != null && p.getServer().getInfo().getName().equalsIgnoreCase(targetServer)) {
|
|
||||||
String name = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', displayName));
|
|
||||||
p.sendMessage(ChatColor.YELLOW + "Du bist bereits auf " + name + ChatColor.YELLOW + "!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Server Info holen
|
|
||||||
ServerInfo target = plugin.getProxy().getServerInfo(targetServer);
|
|
||||||
|
|
||||||
if (target == null) {
|
|
||||||
p.sendMessage(ChatColor.RED + "Der Server '" + targetServer + "' wurde nicht gefunden.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Connecten
|
|
||||||
p.sendMessage(ChatColor.GRAY + "Verbinde dich mit " + displayName + ChatColor.GRAY + "...");
|
|
||||||
p.connect(target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user