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

This commit is contained in:
2026-01-22 14:53:48 +00:00
parent 74ce73efe5
commit 706408ddf8

View File

@@ -0,0 +1,257 @@
package de.nexuslobby;
import de.nexuslobby.api.ModuleManager;
import de.nexuslobby.commands.*;
import de.nexuslobby.modules.ProtectionModule;
import de.nexuslobby.modules.ScoreboardModule;
import de.nexuslobby.modules.ItemsModule;
import de.nexuslobby.modules.security.SecurityModule;
import de.nexuslobby.modules.tablist.TablistModule;
import de.nexuslobby.modules.bossbar.BossBarModule;
import de.nexuslobby.modules.actionbar.ActionBarModule;
import de.nexuslobby.modules.settings.LobbySettingsModule;
import de.nexuslobby.modules.portal.PortalManager;
import de.nexuslobby.modules.portal.PortalCommand;
import de.nexuslobby.modules.servers.ServerSwitcherListener;
import de.nexuslobby.modules.armorstandtools.*;
import de.nexuslobby.utils.VoidProtection;
import de.nexuslobby.utils.DoubleJump;
import de.nexuslobby.utils.PlayerHider;
import de.nexuslobby.utils.MaintenanceListener;
import de.nexuslobby.utils.ConfigUpdater;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.io.File;
public class NexusLobby extends JavaPlugin implements Listener {
private static NexusLobby instance;
private ModuleManager moduleManager;
private PortalManager portalManager;
private TablistModule tablistModule;
private LobbySettingsModule lobbySettingsModule;
private File visualsFile;
private FileConfiguration visualsConfig;
public static NexusLobby getInstance() {
return instance;
}
@Override
public void onEnable() {
instance = this;
initCustomConfigs();
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
moduleManager = new ModuleManager(this);
// Initialisierung der GUI-Werkzeuge
ArmorStandGUI.init();
registerModules();
moduleManager.enableAll();
registerListeners();
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new NexusLobbyExpansion().register();
getLogger().info("NexusLobby PAPI Expansion registriert.");
}
registerCommands();
getLogger().info("NexusLobby wurde erfolgreich gestartet.");
}
public void reloadPlugin() {
getLogger().info("Plugin Reload wird gestartet...");
if (moduleManager != null) {
moduleManager.disableAll();
}
reloadConfig();
initCustomConfigs();
if (portalManager != null) {
portalManager.loadPortals();
}
if (moduleManager != null) {
moduleManager.enableAll();
}
ArmorStandGUI.init();
Config.load();
getLogger().info("Plugin Reload abgeschlossen.");
}
private void registerModules() {
moduleManager.registerModule(new ProtectionModule());
moduleManager.registerModule(new ScoreboardModule());
moduleManager.registerModule(new ItemsModule());
moduleManager.registerModule(new SecurityModule());
moduleManager.registerModule(new BossBarModule());
moduleManager.registerModule(new ActionBarModule());
lobbySettingsModule = new LobbySettingsModule();
moduleManager.registerModule(lobbySettingsModule);
tablistModule = new TablistModule();
moduleManager.registerModule(tablistModule);
portalManager = new PortalManager(this);
moduleManager.registerModule(portalManager);
}
private void registerListeners() {
getServer().getPluginManager().registerEvents(this, this);
getServer().getPluginManager().registerEvents(new ServerSwitcherListener(), this);
getServer().getPluginManager().registerEvents(new VoidProtection(), this);
getServer().getPluginManager().registerEvents(new DoubleJump(), this);
getServer().getPluginManager().registerEvents(new PlayerHider(), this);
getServer().getPluginManager().registerEvents(new MaintenanceListener(), this);
getServer().getPluginManager().registerEvents(new ASTListener(), this);
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
event.setJoinMessage(null);
BuildCommand.removePlayerFromBuildMode(player);
String defaultGmName = getConfig().getString("default-gamemode", "ADVENTURE");
try {
GameMode gm = GameMode.valueOf(defaultGmName.toUpperCase());
player.setGameMode(gm);
} catch (IllegalArgumentException e) {
player.setGameMode(GameMode.ADVENTURE);
}
}
private void initCustomConfigs() {
saveDefaultConfig();
ConfigUpdater.updateConfig("config.yml");
reloadConfig();
File settingsFile = new File(getDataFolder(), "settings.yml");
if (!settingsFile.exists()) {
saveResource("settings.yml", false);
}
ConfigUpdater.updateConfig("settings.yml");
visualsFile = new File(getDataFolder(), "visuals.yml");
if (!visualsFile.exists()) {
saveResource("visuals.yml", false);
}
ConfigUpdater.updateConfig("visuals.yml");
reloadVisualsConfig();
Config.load();
}
public void reloadVisualsConfig() {
if (visualsFile == null) {
visualsFile = new File(getDataFolder(), "visuals.yml");
}
visualsConfig = YamlConfiguration.loadConfiguration(visualsFile);
}
public FileConfiguration getVisualsConfig() {
if (visualsConfig == null) {
reloadVisualsConfig();
}
return visualsConfig;
}
@Override
public void onDisable() {
getServer().getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord");
if (moduleManager != null) {
moduleManager.disableAll();
}
getLogger().info("NexusLobby disabled");
}
private void registerCommands() {
LobbyTabCompleter tabCompleter = new LobbyTabCompleter(portalManager);
PluginCommand portalCmd = this.getCommand("portal");
if (portalCmd != null) {
portalCmd.setExecutor(new PortalCommand(portalManager));
portalCmd.setTabCompleter(tabCompleter);
}
PluginCommand maintenanceCmd = this.getCommand("maintenance");
if (maintenanceCmd != null) {
maintenanceCmd.setExecutor(new MaintenanceCommand());
maintenanceCmd.setTabCompleter(tabCompleter);
}
if (getCommand("giveportalwand") != null) getCommand("giveportalwand").setExecutor(new GivePortalToolCommand(this));
if (getCommand("settings") != null) getCommand("settings").setExecutor(new LobbySettingsCommand(lobbySettingsModule));
if (getCommand("build") != null) getCommand("build").setExecutor(new BuildCommand());
// --- NEXUS TOOLS & CMD REGISTRIERUNG ---
if (getCommand("nexustools") != null) {
getCommand("nexustools").setExecutor(new ArmorStandCommand());
getCommand("nexustools").setTabCompleter(tabCompleter);
}
// Wir registrieren nexuscmd (ehemals ascmd)
if (getCommand("nexuscmd") != null) {
getCommand("nexuscmd").setExecutor(new ArmorStandCmdExecutor());
getCommand("nexuscmd").setTabCompleter(tabCompleter);
}
PluginCommand nexusCmd = this.getCommand("nexuslobby");
if (nexusCmd != null) {
nexusCmd.setExecutor(new NexusLobbyCommand());
nexusCmd.setTabCompleter(tabCompleter);
}
}
public class NexusLobbyExpansion extends PlaceholderExpansion {
@Override
public @NotNull String getIdentifier() { return "nexuslobby"; }
@Override
public @NotNull String getAuthor() { return String.join(", ", NexusLobby.this.getDescription().getAuthors()); }
@Override
public @NotNull String getVersion() { return NexusLobby.this.getDescription().getVersion(); }
@Override
public boolean persist() { return true; }
@Override
public String onPlaceholderRequest(Player player, @NotNull String params) {
if (player == null) return "";
if (params.equalsIgnoreCase("maintenance_status")) {
return MaintenanceListener.isMaintenance() ? "§cAktiv" : "§aDeaktiviert";
}
if (params.equalsIgnoreCase("version")) {
return NexusLobby.this.getDescription().getVersion();
}
if (params.equalsIgnoreCase("build_mode")) {
return BuildCommand.isInBuildMode(player) ? "§aAktiv" : "§cInaktiv";
}
return null;
}
}
public ModuleManager getModuleManager() { return moduleManager; }
public TablistModule getTablistModule() { return tablistModule; }
public LobbySettingsModule getLobbySettingsModule() { return lobbySettingsModule; }
}