Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9fd0690ba8 | |||
| 233639dd52 | |||
| c646dba7da | |||
| ff02797107 |
2
pom.xml
2
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>de.nexuslobby</groupId>
|
<groupId>de.nexuslobby</groupId>
|
||||||
<artifactId>NexusLobby</artifactId>
|
<artifactId>NexusLobby</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.2</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>NexusLobby</name>
|
<name>NexusLobby</name>
|
||||||
|
|||||||
@@ -14,12 +14,18 @@ import de.nexuslobby.modules.portal.PortalManager;
|
|||||||
import de.nexuslobby.modules.portal.PortalCommand;
|
import de.nexuslobby.modules.portal.PortalCommand;
|
||||||
import de.nexuslobby.modules.servers.ServerSwitcherListener;
|
import de.nexuslobby.modules.servers.ServerSwitcherListener;
|
||||||
import de.nexuslobby.modules.armorstandtools.*;
|
import de.nexuslobby.modules.armorstandtools.*;
|
||||||
|
import de.nexuslobby.modules.gadgets.GadgetModule;
|
||||||
import de.nexuslobby.utils.VoidProtection;
|
import de.nexuslobby.utils.VoidProtection;
|
||||||
import de.nexuslobby.utils.DoubleJump;
|
import de.nexuslobby.utils.DoubleJump;
|
||||||
import de.nexuslobby.utils.PlayerHider;
|
import de.nexuslobby.utils.PlayerHider;
|
||||||
import de.nexuslobby.utils.MaintenanceListener;
|
import de.nexuslobby.utils.MaintenanceListener;
|
||||||
import de.nexuslobby.utils.ConfigUpdater;
|
import de.nexuslobby.utils.ConfigUpdater;
|
||||||
|
import de.nexuslobby.utils.UpdateChecker;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
|
import net.md_5.bungee.api.chat.HoverEvent;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
@@ -27,6 +33,7 @@ import org.bukkit.configuration.file.FileConfiguration;
|
|||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
@@ -41,10 +48,15 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
private PortalManager portalManager;
|
private PortalManager portalManager;
|
||||||
private TablistModule tablistModule;
|
private TablistModule tablistModule;
|
||||||
private LobbySettingsModule lobbySettingsModule;
|
private LobbySettingsModule lobbySettingsModule;
|
||||||
|
private ItemsModule itemsModule;
|
||||||
|
private GadgetModule gadgetModule;
|
||||||
|
|
||||||
private File visualsFile;
|
private File visualsFile;
|
||||||
private FileConfiguration visualsConfig;
|
private FileConfiguration visualsConfig;
|
||||||
|
|
||||||
|
private boolean updateAvailable = false;
|
||||||
|
private String latestVersion = "";
|
||||||
|
|
||||||
public static NexusLobby getInstance() {
|
public static NexusLobby getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
@@ -53,13 +65,12 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
|
// Erst Config initialisieren
|
||||||
initCustomConfigs();
|
initCustomConfigs();
|
||||||
|
|
||||||
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
|
|
||||||
moduleManager = new ModuleManager(this);
|
moduleManager = new ModuleManager(this);
|
||||||
|
|
||||||
// Initialisierung der GUI-Werkzeuge
|
|
||||||
ArmorStandGUI.init();
|
ArmorStandGUI.init();
|
||||||
|
|
||||||
registerModules();
|
registerModules();
|
||||||
@@ -72,37 +83,60 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
registerCommands();
|
registerCommands();
|
||||||
|
checkUpdates();
|
||||||
|
|
||||||
getLogger().info("NexusLobby wurde erfolgreich gestartet.");
|
getLogger().info("NexusLobby wurde erfolgreich gestartet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkUpdates() {
|
||||||
|
new UpdateChecker(this).getVersion(version -> {
|
||||||
|
if (!this.getDescription().getVersion().equalsIgnoreCase(version)) {
|
||||||
|
this.updateAvailable = true;
|
||||||
|
this.latestVersion = version;
|
||||||
|
getLogger().warning("====================================================");
|
||||||
|
getLogger().warning("Update gefunden! v" + getDescription().getVersion() + " -> v" + version);
|
||||||
|
getLogger().warning("Autor: M_Viper");
|
||||||
|
getLogger().warning("====================================================");
|
||||||
|
} else {
|
||||||
|
getLogger().info("NexusLobby ist aktuell (v" + version + ").");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void reloadPlugin() {
|
public void reloadPlugin() {
|
||||||
getLogger().info("Plugin Reload wird gestartet...");
|
getLogger().info("Plugin Reload wird gestartet...");
|
||||||
|
|
||||||
if (moduleManager != null) {
|
if (moduleManager != null) {
|
||||||
moduleManager.disableAll();
|
moduleManager.disableAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
initCustomConfigs();
|
visualsConfig = null;
|
||||||
|
reloadVisualsConfig();
|
||||||
|
Config.load();
|
||||||
|
|
||||||
if (portalManager != null) {
|
if (portalManager != null) {
|
||||||
portalManager.loadPortals();
|
portalManager.loadPortals();
|
||||||
}
|
}
|
||||||
|
ArmorStandGUI.init();
|
||||||
|
|
||||||
if (moduleManager != null) {
|
if (moduleManager != null) {
|
||||||
moduleManager.enableAll();
|
moduleManager.enableAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
ArmorStandGUI.init();
|
getLogger().info("Plugin Reload abgeschlossen. Änderungen wurden übernommen.");
|
||||||
Config.load();
|
|
||||||
|
|
||||||
getLogger().info("Plugin Reload abgeschlossen.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerModules() {
|
private void registerModules() {
|
||||||
moduleManager.registerModule(new ProtectionModule());
|
moduleManager.registerModule(new ProtectionModule());
|
||||||
moduleManager.registerModule(new ScoreboardModule());
|
moduleManager.registerModule(new ScoreboardModule());
|
||||||
moduleManager.registerModule(new ItemsModule());
|
|
||||||
|
this.itemsModule = new ItemsModule();
|
||||||
|
moduleManager.registerModule(this.itemsModule);
|
||||||
|
|
||||||
|
this.gadgetModule = new GadgetModule();
|
||||||
|
moduleManager.registerModule(this.gadgetModule);
|
||||||
|
|
||||||
moduleManager.registerModule(new SecurityModule());
|
moduleManager.registerModule(new SecurityModule());
|
||||||
moduleManager.registerModule(new BossBarModule());
|
moduleManager.registerModule(new BossBarModule());
|
||||||
moduleManager.registerModule(new ActionBarModule());
|
moduleManager.registerModule(new ActionBarModule());
|
||||||
@@ -127,38 +161,64 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
getServer().getPluginManager().registerEvents(new ASTListener(), this);
|
getServer().getPluginManager().registerEvents(new ASTListener(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onJoin(PlayerJoinEvent event) {
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
event.setJoinMessage(null);
|
event.setJoinMessage(null);
|
||||||
|
|
||||||
|
player.getInventory().clear();
|
||||||
|
player.getInventory().setArmorContents(null);
|
||||||
|
|
||||||
BuildCommand.removePlayerFromBuildMode(player);
|
BuildCommand.removePlayerFromBuildMode(player);
|
||||||
|
|
||||||
String defaultGmName = getConfig().getString("default-gamemode", "ADVENTURE");
|
String defaultGmName = getConfig().getString("default-gamemode", "ADVENTURE");
|
||||||
try {
|
try {
|
||||||
GameMode gm = GameMode.valueOf(defaultGmName.toUpperCase());
|
player.setGameMode(GameMode.valueOf(defaultGmName.toUpperCase()));
|
||||||
player.setGameMode(gm);
|
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
player.setGameMode(GameMode.ADVENTURE);
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player.hasPermission("nexuslobby.admin") && updateAvailable) {
|
||||||
|
player.sendMessage(" ");
|
||||||
|
player.sendMessage("§8[§6Nexus§8] §aEin neues §6Update §afür §eNexusLobby §aist verfügbar!");
|
||||||
|
player.sendMessage("§8» §7Version: §c" + getDescription().getVersion() + " §8-> §a" + latestVersion);
|
||||||
|
|
||||||
|
TextComponent link = new TextComponent("§8» §6Klicke §e§l[HIER] §6zum Herunterladen.");
|
||||||
|
link.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://git.viper.ipv64.net/M_Viper/NexusLobby/releases"));
|
||||||
|
link.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||||
|
new ComponentBuilder("§7Öffnet die Gitea Release-Seite").create()));
|
||||||
|
|
||||||
|
player.spigot().sendMessage(link);
|
||||||
|
player.sendMessage(" ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initCustomConfigs() {
|
private void initCustomConfigs() {
|
||||||
saveDefaultConfig();
|
if (!getDataFolder().exists()) {
|
||||||
ConfigUpdater.updateConfig("config.yml");
|
getDataFolder().mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
File configFile = new File(getDataFolder(), "config.yml");
|
||||||
|
if (!configFile.exists()) {
|
||||||
|
// Nur speichern wenn sie fehlt
|
||||||
|
saveResource("config.yml", false);
|
||||||
|
} else {
|
||||||
|
// WICHTIG: ConfigUpdater für config.yml deaktiviert, da er Sektionen nicht korrekt erkennt!
|
||||||
|
// ConfigUpdater.updateConfig("config.yml");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Einfaches Laden reicht völlig aus
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
|
|
||||||
File settingsFile = new File(getDataFolder(), "settings.yml");
|
File settingsFile = new File(getDataFolder(), "settings.yml");
|
||||||
if (!settingsFile.exists()) {
|
if (!settingsFile.exists()) {
|
||||||
saveResource("settings.yml", false);
|
saveResource("settings.yml", false);
|
||||||
}
|
}
|
||||||
ConfigUpdater.updateConfig("settings.yml");
|
|
||||||
|
|
||||||
visualsFile = new File(getDataFolder(), "visuals.yml");
|
visualsFile = new File(getDataFolder(), "visuals.yml");
|
||||||
if (!visualsFile.exists()) {
|
if (!visualsFile.exists()) {
|
||||||
saveResource("visuals.yml", false);
|
saveResource("visuals.yml", false);
|
||||||
}
|
}
|
||||||
ConfigUpdater.updateConfig("visuals.yml");
|
|
||||||
|
|
||||||
reloadVisualsConfig();
|
reloadVisualsConfig();
|
||||||
Config.load();
|
Config.load();
|
||||||
@@ -169,6 +229,7 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
visualsFile = new File(getDataFolder(), "visuals.yml");
|
visualsFile = new File(getDataFolder(), "visuals.yml");
|
||||||
}
|
}
|
||||||
visualsConfig = YamlConfiguration.loadConfiguration(visualsFile);
|
visualsConfig = YamlConfiguration.loadConfiguration(visualsFile);
|
||||||
|
getLogger().info("visuals.yml erfolgreich vom Speicher geladen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileConfiguration getVisualsConfig() {
|
public FileConfiguration getVisualsConfig() {
|
||||||
@@ -181,9 +242,7 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
getServer().getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord");
|
getServer().getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord");
|
||||||
if (moduleManager != null) {
|
if (moduleManager != null) moduleManager.disableAll();
|
||||||
moduleManager.disableAll();
|
|
||||||
}
|
|
||||||
getLogger().info("NexusLobby disabled");
|
getLogger().info("NexusLobby disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,13 +265,11 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
if (getCommand("settings") != null) getCommand("settings").setExecutor(new LobbySettingsCommand(lobbySettingsModule));
|
if (getCommand("settings") != null) getCommand("settings").setExecutor(new LobbySettingsCommand(lobbySettingsModule));
|
||||||
if (getCommand("build") != null) getCommand("build").setExecutor(new BuildCommand());
|
if (getCommand("build") != null) getCommand("build").setExecutor(new BuildCommand());
|
||||||
|
|
||||||
// --- NEXUS TOOLS & CMD REGISTRIERUNG ---
|
|
||||||
if (getCommand("nexustools") != null) {
|
if (getCommand("nexustools") != null) {
|
||||||
getCommand("nexustools").setExecutor(new ArmorStandCommand());
|
getCommand("nexustools").setExecutor(new ArmorStandCommand());
|
||||||
getCommand("nexustools").setTabCompleter(tabCompleter);
|
getCommand("nexustools").setTabCompleter(tabCompleter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wir registrieren nexuscmd (ehemals ascmd)
|
|
||||||
if (getCommand("nexuscmd") != null) {
|
if (getCommand("nexuscmd") != null) {
|
||||||
getCommand("nexuscmd").setExecutor(new ArmorStandCmdExecutor());
|
getCommand("nexuscmd").setExecutor(new ArmorStandCmdExecutor());
|
||||||
getCommand("nexuscmd").setTabCompleter(tabCompleter);
|
getCommand("nexuscmd").setTabCompleter(tabCompleter);
|
||||||
@@ -226,27 +283,17 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class NexusLobbyExpansion extends PlaceholderExpansion {
|
public class NexusLobbyExpansion extends PlaceholderExpansion {
|
||||||
@Override
|
@Override public @NotNull String getIdentifier() { return "nexuslobby"; }
|
||||||
public @NotNull String getIdentifier() { return "nexuslobby"; }
|
@Override public @NotNull String getAuthor() { return String.join(", ", NexusLobby.this.getDescription().getAuthors()); }
|
||||||
@Override
|
@Override public @NotNull String getVersion() { return NexusLobby.this.getDescription().getVersion(); }
|
||||||
public @NotNull String getAuthor() { return String.join(", ", NexusLobby.this.getDescription().getAuthors()); }
|
@Override public boolean persist() { return true; }
|
||||||
@Override
|
|
||||||
public @NotNull String getVersion() { return NexusLobby.this.getDescription().getVersion(); }
|
|
||||||
@Override
|
|
||||||
public boolean persist() { return true; }
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String onPlaceholderRequest(Player player, @NotNull String params) {
|
public String onPlaceholderRequest(Player player, @NotNull String params) {
|
||||||
if (player == null) return "";
|
if (player == null) return "";
|
||||||
if (params.equalsIgnoreCase("maintenance_status")) {
|
if (params.equalsIgnoreCase("maintenance_status")) return MaintenanceListener.isMaintenance() ? "§cAktiv" : "§aDeaktiviert";
|
||||||
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";
|
||||||
if (params.equalsIgnoreCase("version")) {
|
|
||||||
return NexusLobby.this.getDescription().getVersion();
|
|
||||||
}
|
|
||||||
if (params.equalsIgnoreCase("build_mode")) {
|
|
||||||
return BuildCommand.isInBuildMode(player) ? "§aAktiv" : "§cInaktiv";
|
|
||||||
}
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -254,4 +301,6 @@ public class NexusLobby extends JavaPlugin implements Listener {
|
|||||||
public ModuleManager getModuleManager() { return moduleManager; }
|
public ModuleManager getModuleManager() { return moduleManager; }
|
||||||
public TablistModule getTablistModule() { return tablistModule; }
|
public TablistModule getTablistModule() { return tablistModule; }
|
||||||
public LobbySettingsModule getLobbySettingsModule() { return lobbySettingsModule; }
|
public LobbySettingsModule getLobbySettingsModule() { return lobbySettingsModule; }
|
||||||
|
public ItemsModule getItemsModule() { return itemsModule; }
|
||||||
|
public GadgetModule getGadgetModule() { return gadgetModule; }
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,6 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class BuildCommand implements CommandExecutor {
|
public class BuildCommand implements CommandExecutor {
|
||||||
|
|
||||||
// Liste der Spieler im Baumodus
|
|
||||||
private static final ArrayList<UUID> buildModePlayers = new ArrayList<>();
|
private static final ArrayList<UUID> buildModePlayers = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -30,7 +29,16 @@ public class BuildCommand implements CommandExecutor {
|
|||||||
// BAUMODUS DEAKTIVIEREN
|
// BAUMODUS DEAKTIVIEREN
|
||||||
buildModePlayers.remove(uuid);
|
buildModePlayers.remove(uuid);
|
||||||
|
|
||||||
// Gamemode zurücksetzen (aus Config)
|
// Inventar leeren
|
||||||
|
player.getInventory().clear();
|
||||||
|
player.getInventory().setArmorContents(null);
|
||||||
|
|
||||||
|
// Lobby-Items über das Modul wiedergeben
|
||||||
|
if (NexusLobby.getInstance().getItemsModule() != null) {
|
||||||
|
NexusLobby.getInstance().getItemsModule().giveLobbyItems(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gamemode zurücksetzen
|
||||||
String defaultGmName = NexusLobby.getInstance().getConfig().getString("default-gamemode", "ADVENTURE");
|
String defaultGmName = NexusLobby.getInstance().getConfig().getString("default-gamemode", "ADVENTURE");
|
||||||
try {
|
try {
|
||||||
GameMode gm = GameMode.valueOf(defaultGmName.toUpperCase());
|
GameMode gm = GameMode.valueOf(defaultGmName.toUpperCase());
|
||||||
@@ -43,6 +51,9 @@ public class BuildCommand implements CommandExecutor {
|
|||||||
} else {
|
} else {
|
||||||
// BAUMODUS AKTIVIEREN
|
// BAUMODUS AKTIVIEREN
|
||||||
buildModePlayers.add(uuid);
|
buildModePlayers.add(uuid);
|
||||||
|
|
||||||
|
player.getInventory().clear();
|
||||||
|
player.getInventory().setArmorContents(null);
|
||||||
player.setGameMode(GameMode.CREATIVE);
|
player.setGameMode(GameMode.CREATIVE);
|
||||||
|
|
||||||
player.sendMessage("§8» §6§lBuild §8| §7Baumodus §aaktiviert§7.");
|
player.sendMessage("§8» §6§lBuild §8| §7Baumodus §aaktiviert§7.");
|
||||||
|
|||||||
47
src/main/java/de/nexuslobby/modules/BuildModule.java
Normal file
47
src/main/java/de/nexuslobby/modules/BuildModule.java
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package de.nexuslobby.modules;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import de.nexuslobby.api.Module;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class BuildModule implements Module {
|
||||||
|
|
||||||
|
private final ArrayList<UUID> buildModePlayers = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Build";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
// Falls du hier den Command registrierst, achte darauf,
|
||||||
|
// dass er nicht doppelt in der NexusLobby.java registriert wird.
|
||||||
|
}
|
||||||
|
|
||||||
|
public void toggleBuildMode(Player player) {
|
||||||
|
if (!player.hasPermission("nexuslobby.build")) return;
|
||||||
|
|
||||||
|
if (buildModePlayers.contains(player.getUniqueId())) {
|
||||||
|
buildModePlayers.remove(player.getUniqueId());
|
||||||
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
player.getInventory().clear();
|
||||||
|
|
||||||
|
// KORREKTUR: Hier muss getItemsModule() mit "s" stehen!
|
||||||
|
if (NexusLobby.getInstance().getItemsModule() != null) {
|
||||||
|
NexusLobby.getInstance().getItemsModule().giveLobbyItems(player);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
buildModePlayers.add(player.getUniqueId());
|
||||||
|
player.setGameMode(GameMode.CREATIVE);
|
||||||
|
player.getInventory().clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {}
|
||||||
|
}
|
||||||
@@ -1,12 +1,18 @@
|
|||||||
package de.nexuslobby.modules;
|
package de.nexuslobby.modules;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
import de.nexuslobby.api.Module;
|
import de.nexuslobby.api.Module;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
public class ItemsModule implements Module, Listener {
|
public class ItemsModule implements Module, Listener {
|
||||||
|
|
||||||
@@ -17,14 +23,97 @@ public class ItemsModule implements Module, Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
Bukkit.getPluginManager().registerEvents(this, Bukkit.getPluginManager().getPlugin("NexusLobby"));
|
Bukkit.getPluginManager().registerEvents(this, NexusLobby.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onJoin(PlayerJoinEvent event) {
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
event.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
|
Bukkit.getScheduler().runTaskLater(NexusLobby.getInstance(), () -> {
|
||||||
|
giveLobbyItems(event.getPlayer());
|
||||||
|
}, 2L);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInteract(PlayerInteractEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
ItemStack item = event.getItem();
|
||||||
|
|
||||||
|
if (item == null || item.getType() == Material.AIR) return;
|
||||||
|
if (!item.hasItemMeta() || !item.getItemMeta().hasDisplayName()) return;
|
||||||
|
|
||||||
|
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
|
FileConfiguration config = NexusLobby.getInstance().getConfig();
|
||||||
|
String displayName = item.getItemMeta().getDisplayName();
|
||||||
|
|
||||||
|
// 1. Baumodus Logik
|
||||||
|
String buildName = colorize(config.getString("items.lobby-tools.build-toggle.displayname", "&aBaumodus"));
|
||||||
|
if (displayName.equals(buildName)) {
|
||||||
|
player.performCommand("build");
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Gadget GUI Logik
|
||||||
|
String gadgetName = colorize(config.getString("items.lobby-tools.gadget.displayname", "&bGadgets"));
|
||||||
|
if (displayName.equals(gadgetName)) {
|
||||||
|
// Öffnet die GUI aus dem GadgetModule
|
||||||
|
NexusLobby.getInstance().getGadgetModule().openGUI(player);
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Kompass / Teleporter Logik (optional, falls du den Befehl schon hast)
|
||||||
|
String compassName = colorize(config.getString("items.lobby-tools.compass.displayname", "&eTeleporter"));
|
||||||
|
if (displayName.equals(compassName)) {
|
||||||
|
// Hier könnte z.B. player.performCommand("cp"); stehen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void giveLobbyItems(Player player) {
|
||||||
|
player.getInventory().clear();
|
||||||
|
FileConfiguration config = NexusLobby.getInstance().getConfig();
|
||||||
|
|
||||||
|
// 1. Kompass (Slot 4)
|
||||||
|
if (config.getBoolean("items.lobby-tools.compass.enabled", true)) {
|
||||||
|
int slot = config.getInt("items.lobby-tools.compass.slot", 4);
|
||||||
|
String name = config.getString("items.lobby-tools.compass.displayname", "&eTeleporter");
|
||||||
|
player.getInventory().setItem(slot, createItem(Material.COMPASS, name));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Baumodus (Slot 0)
|
||||||
|
if (player.isOp() || player.hasPermission("nexuslobby.build")) {
|
||||||
|
if (config.getBoolean("items.lobby-tools.build-toggle.enabled", true)) {
|
||||||
|
int slot = config.getInt("items.lobby-tools.build-toggle.slot", 0);
|
||||||
|
String name = config.getString("items.lobby-tools.build-toggle.displayname", "&aBaumodus");
|
||||||
|
player.getInventory().setItem(slot, createItem(Material.REDSTONE_TORCH, name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Gadgets (Slot 8)
|
||||||
|
if (config.getBoolean("items.lobby-tools.gadget.enabled", true)) { // Auf true gesetzt, damit es erscheint
|
||||||
|
int slot = config.getInt("items.lobby-tools.gadget.slot", 8);
|
||||||
|
String name = config.getString("items.lobby-tools.gadget.displayname", "&bGadgets");
|
||||||
|
player.getInventory().setItem(slot, createItem(Material.CHEST, name));
|
||||||
|
}
|
||||||
|
|
||||||
|
player.updateInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack createItem(Material mat, String name) {
|
||||||
|
ItemStack item = new ItemStack(mat);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
if (meta != null) {
|
||||||
|
meta.setDisplayName(colorize(name));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String colorize(String s) {
|
||||||
|
return (s == null) ? "" : s.replace("&", "§");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {}
|
public void onDisable() {}
|
||||||
}
|
}
|
||||||
77
src/main/java/de/nexuslobby/modules/gadgets/Balloon.java
Normal file
77
src/main/java/de/nexuslobby/modules/gadgets/Balloon.java
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
package de.nexuslobby.modules.gadgets;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class Balloon {
|
||||||
|
|
||||||
|
private final UUID playerUUID;
|
||||||
|
private final LivingEntity balloonEntity;
|
||||||
|
private final ArmorStand headStand;
|
||||||
|
|
||||||
|
public Balloon(Player player, Material balloonMaterial) {
|
||||||
|
this.playerUUID = player.getUniqueId();
|
||||||
|
Location loc = player.getLocation().add(0, 2, 0);
|
||||||
|
|
||||||
|
// Das unsichtbare Träger-Entity
|
||||||
|
this.balloonEntity = (LivingEntity) loc.getWorld().spawnEntity(loc, EntityType.PIG);
|
||||||
|
this.balloonEntity.setInvisible(true);
|
||||||
|
this.balloonEntity.setSilent(true);
|
||||||
|
this.balloonEntity.setInvulnerable(true);
|
||||||
|
this.balloonEntity.setGravity(false);
|
||||||
|
this.balloonEntity.setLeashHolder(player);
|
||||||
|
|
||||||
|
// Der ArmorStand, der den farbigen Block trägt
|
||||||
|
this.headStand = (ArmorStand) loc.getWorld().spawnEntity(loc, EntityType.ARMOR_STAND);
|
||||||
|
this.headStand.setVisible(false);
|
||||||
|
this.headStand.setGravity(false);
|
||||||
|
this.headStand.setMarker(true);
|
||||||
|
|
||||||
|
// Hier wird das übergebene Material gesetzt (z.B. RED_WOOL, BLUE_WOOL etc.)
|
||||||
|
this.headStand.setHelmet(new ItemStack(balloonMaterial));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update() {
|
||||||
|
Player player = org.bukkit.Bukkit.getPlayer(playerUUID);
|
||||||
|
|
||||||
|
if (player == null || !player.isOnline() || balloonEntity == null || !balloonEntity.isValid()) {
|
||||||
|
remove();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!balloonEntity.isLeashed()) {
|
||||||
|
remove();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location targetLoc = player.getLocation().clone().add(0, 2.5, 0);
|
||||||
|
Vector direction = targetLoc.toVector().subtract(balloonEntity.getLocation().toVector());
|
||||||
|
double distance = direction.length();
|
||||||
|
|
||||||
|
if (distance > 5) {
|
||||||
|
balloonEntity.teleport(targetLoc);
|
||||||
|
} else if (distance > 0.1) {
|
||||||
|
balloonEntity.setVelocity(direction.multiply(0.4));
|
||||||
|
}
|
||||||
|
|
||||||
|
headStand.teleport(balloonEntity.getLocation().clone().subtract(0, 1.5, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove() {
|
||||||
|
if (balloonEntity != null) {
|
||||||
|
balloonEntity.setLeashHolder(null);
|
||||||
|
balloonEntity.remove();
|
||||||
|
}
|
||||||
|
if (headStand != null) {
|
||||||
|
headStand.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
src/main/java/de/nexuslobby/modules/gadgets/ChickenRain.java
Normal file
54
src/main/java/de/nexuslobby/modules/gadgets/ChickenRain.java
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package de.nexuslobby.modules.gadgets;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Particle;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Chicken;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class ChickenRain {
|
||||||
|
|
||||||
|
public static void start(Player player) {
|
||||||
|
new BukkitRunnable() {
|
||||||
|
int ticks = 0;
|
||||||
|
final Random random = new Random();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (!player.isOnline() || ticks > 100) { // 100 Ticks = 5 Sekunden
|
||||||
|
this.cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alle 2 Ticks ein Huhn spawnen
|
||||||
|
if (ticks % 2 == 0) {
|
||||||
|
Location spawnLoc = player.getLocation().add(
|
||||||
|
(random.nextDouble() - 0.5) * 4,
|
||||||
|
4.0,
|
||||||
|
(random.nextDouble() - 0.5) * 4
|
||||||
|
);
|
||||||
|
|
||||||
|
Chicken chicken = (Chicken) spawnLoc.getWorld().spawnEntity(spawnLoc, EntityType.CHICKEN);
|
||||||
|
chicken.setBaby();
|
||||||
|
chicken.setInvulnerable(true);
|
||||||
|
|
||||||
|
// Nach 1.5 Sekunden "ploppt" das Huhn
|
||||||
|
Bukkit.getScheduler().runTaskLater(NexusLobby.getInstance(), () -> {
|
||||||
|
if (chicken.isValid()) {
|
||||||
|
chicken.getWorld().spawnParticle(Particle.CLOUD, chicken.getLocation(), 5, 0.2, 0.2, 0.2, 0.1);
|
||||||
|
chicken.getWorld().playSound(chicken.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1.0f, 1.5f);
|
||||||
|
chicken.remove();
|
||||||
|
}
|
||||||
|
}, 30L);
|
||||||
|
}
|
||||||
|
ticks++;
|
||||||
|
}
|
||||||
|
}.runTaskTimer(NexusLobby.getInstance(), 0L, 1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
200
src/main/java/de/nexuslobby/modules/gadgets/GadgetModule.java
Normal file
200
src/main/java/de/nexuslobby/modules/gadgets/GadgetModule.java
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
package de.nexuslobby.modules.gadgets;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import de.nexuslobby.api.Module;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class GadgetModule implements Module, Listener {
|
||||||
|
|
||||||
|
private final Map<UUID, Balloon> activeBalloons = new HashMap<>();
|
||||||
|
private final Map<UUID, ParticleEffect> activeEffects = new HashMap<>();
|
||||||
|
|
||||||
|
// Titel für die verschiedenen Inventare zur Identifikation
|
||||||
|
private final String MAIN_TITLE = "§b§lGadgets §8- §7Menü";
|
||||||
|
private final String BALLOON_TITLE = "§b§lGadgets §8- §eBallons";
|
||||||
|
private final String PARTICLE_TITLE = "§b§lGadgets §8- §dPartikel";
|
||||||
|
private final String FUN_TITLE = "§b§lGadgets §8- §6Lustiges";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() { return "Gadgets"; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, NexusLobby.getInstance());
|
||||||
|
Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), () -> {
|
||||||
|
activeBalloons.values().forEach(Balloon::update);
|
||||||
|
activeEffects.forEach((uuid, effect) -> {
|
||||||
|
Player p = Bukkit.getPlayer(uuid);
|
||||||
|
if (p != null && p.isOnline()) effect.update(p);
|
||||||
|
});
|
||||||
|
}, 1L, 1L);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- GUI ÖFFNER ---
|
||||||
|
|
||||||
|
public void openGUI(Player player) {
|
||||||
|
Inventory gui = Bukkit.createInventory(null, 27, MAIN_TITLE);
|
||||||
|
fillEdges(gui);
|
||||||
|
|
||||||
|
gui.setItem(10, createItem(Material.LEAD, "§e§lBallons", "§7Wähle einen fliegenden Begleiter"));
|
||||||
|
gui.setItem(13, createItem(Material.FIREWORK_ROCKET, "§6§lLustiges", "§7Witzige Effekte für zwischendurch"));
|
||||||
|
gui.setItem(16, createItem(Material.NETHER_STAR, "§d§lPartikel", "§7Wähle magische Effekte"));
|
||||||
|
|
||||||
|
gui.setItem(22, createItem(Material.BARRIER, "§c§lStopp", "§7Alle Gadgets entfernen"));
|
||||||
|
|
||||||
|
player.openInventory(gui);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openBalloonGUI(Player player) {
|
||||||
|
Inventory gui = Bukkit.createInventory(null, 36, BALLOON_TITLE);
|
||||||
|
fillEdges(gui);
|
||||||
|
|
||||||
|
Material[] wools = {Material.WHITE_WOOL, Material.ORANGE_WOOL, Material.MAGENTA_WOOL, Material.LIGHT_BLUE_WOOL,
|
||||||
|
Material.YELLOW_WOOL, Material.LIME_WOOL, Material.PINK_WOOL, Material.GRAY_WOOL,
|
||||||
|
Material.CYAN_WOOL, Material.PURPLE_WOOL, Material.BLUE_WOOL, Material.BROWN_WOOL,
|
||||||
|
Material.GREEN_WOOL, Material.RED_WOOL};
|
||||||
|
|
||||||
|
int slot = 10;
|
||||||
|
for (Material m : wools) {
|
||||||
|
if (slot == 17) slot = 19;
|
||||||
|
gui.setItem(slot++, createItem(m, "§fBallon: " + m.name().replace("_WOOL", ""), "§7Klicke zum Ausrüsten"));
|
||||||
|
}
|
||||||
|
gui.setItem(31, createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
||||||
|
player.openInventory(gui);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openParticleGUI(Player player) {
|
||||||
|
Inventory gui = Bukkit.createInventory(null, 27, PARTICLE_TITLE);
|
||||||
|
fillEdges(gui);
|
||||||
|
|
||||||
|
gui.setItem(11, createItem(Material.POPPY, "§cHerzchen-Aura", "§7Verbreite Liebe"));
|
||||||
|
gui.setItem(13, createItem(Material.BLAZE_POWDER, "§6Flammen-Ring", "§7Werde feurig"));
|
||||||
|
gui.setItem(15, createItem(Material.WATER_BUCKET, "§bRegenwolke", "§7Lass es regnen"));
|
||||||
|
|
||||||
|
gui.setItem(22, createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
||||||
|
player.openInventory(gui);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openFunGUI(Player player) {
|
||||||
|
Inventory gui = Bukkit.createInventory(null, 27, FUN_TITLE);
|
||||||
|
fillEdges(gui);
|
||||||
|
|
||||||
|
gui.setItem(13, createItem(Material.EGG, "§f§lChicken-Rain", "§7Lass es Küken regnen!"));
|
||||||
|
|
||||||
|
gui.setItem(22, createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
||||||
|
player.openInventory(gui);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- EVENT HANDLER ---
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(InventoryClickEvent event) {
|
||||||
|
String title = event.getView().getTitle();
|
||||||
|
if (!title.equals(MAIN_TITLE) && !title.equals(BALLOON_TITLE) && !title.equals(PARTICLE_TITLE) && !title.equals(FUN_TITLE)) return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
ItemStack item = event.getCurrentItem();
|
||||||
|
if (item == null || item.getType() == Material.AIR) return;
|
||||||
|
|
||||||
|
// Zurück-Button Logik
|
||||||
|
if (item.getType() == Material.ARROW) {
|
||||||
|
openGUI(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HAUPTMENÜ LOGIK
|
||||||
|
if (title.equals(MAIN_TITLE)) {
|
||||||
|
if (item.getType() == Material.LEAD) openBalloonGUI(player);
|
||||||
|
else if (item.getType() == Material.NETHER_STAR) openParticleGUI(player);
|
||||||
|
else if (item.getType() == Material.FIREWORK_ROCKET) openFunGUI(player);
|
||||||
|
else if (item.getType() == Material.BARRIER) {
|
||||||
|
removeGadgets(player);
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BALLON MENÜ LOGIK
|
||||||
|
else if (title.equals(BALLOON_TITLE)) {
|
||||||
|
if (item.getType().toString().endsWith("_WOOL")) {
|
||||||
|
if (activeBalloons.containsKey(player.getUniqueId())) activeBalloons.get(player.getUniqueId()).remove();
|
||||||
|
activeBalloons.put(player.getUniqueId(), new Balloon(player, item.getType()));
|
||||||
|
player.sendMessage("§8[§6Nexus§8] §aBallon ausgerüstet!");
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PARTIKEL MENÜ LOGIK
|
||||||
|
else if (title.equals(PARTICLE_TITLE)) {
|
||||||
|
if (item.getType() == Material.POPPY) activeEffects.put(player.getUniqueId(), new ParticleEffect("hearts"));
|
||||||
|
else if (item.getType() == Material.BLAZE_POWDER) activeEffects.put(player.getUniqueId(), new ParticleEffect("flames"));
|
||||||
|
else if (item.getType() == Material.WATER_BUCKET) activeEffects.put(player.getUniqueId(), new ParticleEffect("cloud"));
|
||||||
|
|
||||||
|
if (item.getType() != Material.GRAY_STAINED_GLASS_PANE) {
|
||||||
|
player.sendMessage("§8[§6Nexus§8] §aEffekt aktiviert!");
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUN MENÜ LOGIK
|
||||||
|
else if (title.equals(FUN_TITLE)) {
|
||||||
|
if (item.getType() == Material.EGG) {
|
||||||
|
ChickenRain.start(player);
|
||||||
|
player.sendMessage("§8[§6Nexus§8] §fEs regnet jetzt Hühner!");
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeGadgets(Player player) {
|
||||||
|
if (activeBalloons.containsKey(player.getUniqueId())) {
|
||||||
|
activeBalloons.get(player.getUniqueId()).remove();
|
||||||
|
activeBalloons.remove(player.getUniqueId());
|
||||||
|
}
|
||||||
|
activeEffects.remove(player.getUniqueId());
|
||||||
|
player.sendMessage("§8[§6Nexus§8] §cAlle Gadgets wurden entfernt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillEdges(Inventory inv) {
|
||||||
|
ItemStack glass = createItem(Material.GRAY_STAINED_GLASS_PANE, " ", null);
|
||||||
|
for (int i = 0; i < inv.getSize(); i++) {
|
||||||
|
if (i < 9 || i >= inv.getSize() - 9 || i % 9 == 0 || (i + 1) % 9 == 0) {
|
||||||
|
inv.setItem(i, glass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack createItem(Material mat, String name, String lore) {
|
||||||
|
ItemStack item = new ItemStack(mat);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
if (meta != null) {
|
||||||
|
meta.setDisplayName(name);
|
||||||
|
if (lore != null) {
|
||||||
|
java.util.List<String> l = new java.util.ArrayList<>();
|
||||||
|
l.add(lore);
|
||||||
|
meta.setLore(l);
|
||||||
|
}
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
activeBalloons.values().forEach(Balloon::remove);
|
||||||
|
activeBalloons.clear();
|
||||||
|
activeEffects.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package de.nexuslobby.modules.gadgets;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Particle;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ParticleEffect {
|
||||||
|
private final String type;
|
||||||
|
private double angle = 0;
|
||||||
|
|
||||||
|
public ParticleEffect(String type) { this.type = type; }
|
||||||
|
|
||||||
|
public void update(Player player) {
|
||||||
|
Location loc = player.getLocation();
|
||||||
|
switch (type.toLowerCase()) {
|
||||||
|
case "hearts":
|
||||||
|
player.getWorld().spawnParticle(Particle.HEART, loc.clone().add(0, 2.2, 0), 1, 0.3, 0.3, 0.3, 0);
|
||||||
|
break;
|
||||||
|
case "flames":
|
||||||
|
double x = 0.6 * Math.cos(angle);
|
||||||
|
double z = 0.6 * Math.sin(angle);
|
||||||
|
player.getWorld().spawnParticle(Particle.FLAME, loc.clone().add(x, 0.1, z), 1, 0, 0, 0, 0);
|
||||||
|
angle += 0.2;
|
||||||
|
break;
|
||||||
|
case "cloud":
|
||||||
|
player.getWorld().spawnParticle(Particle.CLOUD, loc.clone().add(0, 2.5, 0), 2, 0.2, 0.05, 0.2, 0);
|
||||||
|
player.getWorld().spawnParticle(Particle.FALLING_WATER, loc.clone().add(0, 2.4, 0), 1, 0.1, 0, 0.1, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,156 +1,311 @@
|
|||||||
package de.nexuslobby.modules.tablist;
|
package de.nexuslobby.modules.tablist;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import de.nexuslobby.NexusLobby;
|
import de.nexuslobby.NexusLobby;
|
||||||
|
|
||||||
import de.nexuslobby.api.Module;
|
import de.nexuslobby.api.Module;
|
||||||
|
|
||||||
import net.luckperms.api.LuckPerms;
|
import net.luckperms.api.LuckPerms;
|
||||||
|
|
||||||
import net.luckperms.api.LuckPermsProvider;
|
import net.luckperms.api.LuckPermsProvider;
|
||||||
|
|
||||||
import net.luckperms.api.model.user.User;
|
import net.luckperms.api.model.user.User;
|
||||||
|
|
||||||
import me.clip.placeholderapi.PlaceholderAPI;
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
|
||||||
import org.bukkit.scoreboard.Team;
|
import org.bukkit.scoreboard.Team;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class TablistModule implements Module {
|
public class TablistModule implements Module {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private BukkitTask refreshTask;
|
private BukkitTask refreshTask;
|
||||||
|
|
||||||
private int currentHeaderIndex = 0;
|
private int currentHeaderIndex = 0;
|
||||||
|
|
||||||
private int currentFooterIndex = 0;
|
private int currentFooterIndex = 0;
|
||||||
|
|
||||||
private LuckPerms luckPerms;
|
private LuckPerms luckPerms;
|
||||||
|
|
||||||
private boolean placeholderAPIEnabled;
|
private boolean placeholderAPIEnabled;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
public String getName() { return "Tablist"; }
|
public String getName() { return "Tablist"; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
if (!vConfig.getBoolean("tablist.enabled", true)) return;
|
if (!vConfig.getBoolean("tablist.enabled", true)) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (Bukkit.getPluginManager().getPlugin("LuckPerms") != null) luckPerms = LuckPermsProvider.get();
|
if (Bukkit.getPluginManager().getPlugin("LuckPerms") != null) luckPerms = LuckPermsProvider.get();
|
||||||
|
|
||||||
placeholderAPIEnabled = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null;
|
placeholderAPIEnabled = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Nutzt jetzt das Intervall aus der visuals.yml
|
// Nutzt jetzt das Intervall aus der visuals.yml
|
||||||
|
|
||||||
long interval = vConfig.getLong("tablist.interval-ticks", 40L);
|
long interval = vConfig.getLong("tablist.interval-ticks", 40L);
|
||||||
|
|
||||||
refreshTask = Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), this::refreshAll, 10L, interval);
|
refreshTask = Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), this::refreshAll, 10L, interval);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void refreshAll() {
|
private void refreshAll() {
|
||||||
|
|
||||||
updateAnimationIndices();
|
updateAnimationIndices();
|
||||||
|
|
||||||
for (Player viewer : Bukkit.getOnlinePlayers()) {
|
for (Player viewer : Bukkit.getOnlinePlayers()) {
|
||||||
|
|
||||||
viewer.setPlayerListHeader(getHeader(viewer));
|
viewer.setPlayerListHeader(getHeader(viewer));
|
||||||
|
|
||||||
viewer.setPlayerListFooter(getFooter(viewer));
|
viewer.setPlayerListFooter(getFooter(viewer));
|
||||||
|
|
||||||
updateTeams(viewer);
|
updateTeams(viewer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void updateTeams(Player viewer) {
|
private void updateTeams(Player viewer) {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
if (!vConfig.getBoolean("tablist.show-prefix-in-playerlist", true)) return;
|
if (!vConfig.getBoolean("tablist.show-prefix-in-playerlist", true)) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Scoreboard sb = viewer.getScoreboard();
|
Scoreboard sb = viewer.getScoreboard();
|
||||||
|
|
||||||
if (sb == Bukkit.getScoreboardManager().getMainScoreboard()) return;
|
if (sb == Bukkit.getScoreboardManager().getMainScoreboard()) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (Player target : Bukkit.getOnlinePlayers()) {
|
for (Player target : Bukkit.getOnlinePlayers()) {
|
||||||
|
|
||||||
String teamName = "tab_" + target.getName();
|
String teamName = "tab_" + target.getName();
|
||||||
|
|
||||||
if (teamName.length() > 16) teamName = teamName.substring(0, 16);
|
if (teamName.length() > 16) teamName = teamName.substring(0, 16);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Team team = sb.getTeam(teamName);
|
Team team = sb.getTeam(teamName);
|
||||||
|
|
||||||
if (team == null) team = sb.registerNewTeam(teamName);
|
if (team == null) team = sb.registerNewTeam(teamName);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String prefix = getPlayerPrefix(target);
|
String prefix = getPlayerPrefix(target);
|
||||||
|
|
||||||
String suffix = getPlayerSuffix(target);
|
String suffix = getPlayerSuffix(target);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!team.getPrefix().equals(prefix)) team.setPrefix(prefix);
|
if (!team.getPrefix().equals(prefix)) team.setPrefix(prefix);
|
||||||
|
|
||||||
if (!team.getSuffix().equals(suffix)) team.setSuffix(suffix);
|
if (!team.getSuffix().equals(suffix)) team.setSuffix(suffix);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!team.hasEntry(target.getName())) {
|
if (!team.hasEntry(target.getName())) {
|
||||||
|
|
||||||
team.addEntry(target.getName());
|
team.addEntry(target.getName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String getPlayerPrefix(Player player) {
|
private String getPlayerPrefix(Player player) {
|
||||||
|
|
||||||
String prefix = "";
|
String prefix = "";
|
||||||
|
|
||||||
if (luckPerms != null) {
|
if (luckPerms != null) {
|
||||||
|
|
||||||
User user = luckPerms.getUserManager().getUser(player.getUniqueId());
|
User user = luckPerms.getUserManager().getUser(player.getUniqueId());
|
||||||
|
|
||||||
if (user != null && user.getCachedData().getMetaData().getPrefix() != null) {
|
if (user != null && user.getCachedData().getMetaData().getPrefix() != null) {
|
||||||
|
|
||||||
prefix = user.getCachedData().getMetaData().getPrefix();
|
prefix = user.getCachedData().getMetaData().getPrefix();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prefix.isEmpty() && placeholderAPIEnabled) {
|
if (prefix.isEmpty() && placeholderAPIEnabled) {
|
||||||
|
|
||||||
prefix = PlaceholderAPI.setPlaceholders(player, "%luckperms_prefix%");
|
prefix = PlaceholderAPI.setPlaceholders(player, "%luckperms_prefix%");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return colorize(prefix.isEmpty() ? "&7" : prefix + " ");
|
return colorize(prefix.isEmpty() ? "&7" : prefix + " ");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String getPlayerSuffix(Player player) {
|
private String getPlayerSuffix(Player player) {
|
||||||
|
|
||||||
// Hier könnte man später auch Suffixe aus der Config laden
|
// Hier könnte man später auch Suffixe aus der Config laden
|
||||||
|
|
||||||
return colorize(" &8[&a" + player.getPing() + "ms&8]");
|
return colorize(" &8[&a" + player.getPing() + "ms&8]");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void updateAnimationIndices() {
|
private void updateAnimationIndices() {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
List<String> h = vConfig.getStringList("tablist.header-animations");
|
List<String> h = vConfig.getStringList("tablist.header-animations");
|
||||||
|
|
||||||
List<String> f = vConfig.getStringList("tablist.footer-animations");
|
List<String> f = vConfig.getStringList("tablist.footer-animations");
|
||||||
|
|
||||||
if (!h.isEmpty()) currentHeaderIndex = (currentHeaderIndex + 1) % h.size();
|
if (!h.isEmpty()) currentHeaderIndex = (currentHeaderIndex + 1) % h.size();
|
||||||
|
|
||||||
if (!f.isEmpty()) currentFooterIndex = (currentFooterIndex + 1) % f.size();
|
if (!f.isEmpty()) currentFooterIndex = (currentFooterIndex + 1) % f.size();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String getHeader(Player p) {
|
private String getHeader(Player p) {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
List<String> list = vConfig.getStringList("tablist.header-animations");
|
List<String> list = vConfig.getStringList("tablist.header-animations");
|
||||||
|
|
||||||
if (list.isEmpty()) return "§6NexusLobby";
|
if (list.isEmpty()) return "§6NexusLobby";
|
||||||
|
|
||||||
return replacePlaceholders(list.get(currentHeaderIndex), p);
|
return replacePlaceholders(list.get(currentHeaderIndex), p);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String getFooter(Player p) {
|
private String getFooter(Player p) {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
List<String> list = vConfig.getStringList("tablist.footer-animations");
|
List<String> list = vConfig.getStringList("tablist.footer-animations");
|
||||||
|
|
||||||
if (list.isEmpty()) return "§7Willkommen";
|
if (list.isEmpty()) return "§7Willkommen";
|
||||||
|
|
||||||
return replacePlaceholders(list.get(currentFooterIndex), p);
|
return replacePlaceholders(list.get(currentFooterIndex), p);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String replacePlaceholders(String text, Player p) {
|
private String replacePlaceholders(String text, Player p) {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
text = text.replace("{server}", vConfig.getString("tablist.server-name", "NexusLobby"));
|
text = text.replace("{server}", vConfig.getString("tablist.server-name", "NexusLobby"));
|
||||||
|
|
||||||
text = text.replace("{player}", p.getName());
|
text = text.replace("{player}", p.getName());
|
||||||
|
|
||||||
text = text.replace("{online}", String.valueOf(Bukkit.getOnlinePlayers().size()));
|
text = text.replace("{online}", String.valueOf(Bukkit.getOnlinePlayers().size()));
|
||||||
|
|
||||||
text = text.replace("{staff}", String.valueOf(getOnlineStaffCount()));
|
text = text.replace("{staff}", String.valueOf(getOnlineStaffCount()));
|
||||||
|
|
||||||
text = text.replace("{separator}", vConfig.getString("tablist.separator-line", ""));
|
text = text.replace("{separator}", vConfig.getString("tablist.separator-line", ""));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
text = text.replace("{website}", vConfig.getBoolean("tablist.show-website") ? vConfig.getString("tablist.website", "") : "");
|
text = text.replace("{website}", vConfig.getBoolean("tablist.show-website") ? vConfig.getString("tablist.website", "") : "");
|
||||||
|
|
||||||
text = text.replace("{teamspeak}", vConfig.getBoolean("tablist.show-teamspeak") ? vConfig.getString("tablist.teamspeak-address", "") : "");
|
text = text.replace("{teamspeak}", vConfig.getBoolean("tablist.show-teamspeak") ? vConfig.getString("tablist.teamspeak-address", "") : "");
|
||||||
|
|
||||||
text = text.replace("{discord}", vConfig.getBoolean("tablist.show-discord") ? vConfig.getString("tablist.discord-address", "") : "");
|
text = text.replace("{discord}", vConfig.getBoolean("tablist.show-discord") ? vConfig.getString("tablist.discord-address", "") : "");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (placeholderAPIEnabled) {
|
if (placeholderAPIEnabled) {
|
||||||
|
|
||||||
text = PlaceholderAPI.setPlaceholders(p, text);
|
text = PlaceholderAPI.setPlaceholders(p, text);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return colorize(text);
|
return colorize(text);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private int getOnlineStaffCount() {
|
private int getOnlineStaffCount() {
|
||||||
|
|
||||||
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
|
||||||
|
|
||||||
String permission = vConfig.getString("tablist.staff-permission", "nexuslobby.staff");
|
String permission = vConfig.getString("tablist.staff-permission", "nexuslobby.staff");
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
|
||||||
if (p.hasPermission(permission)) count++;
|
if (p.hasPermission(permission)) count++;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String colorize(String s) {
|
private String colorize(String s) {
|
||||||
|
|
||||||
return s == null ? "" : s.replace("&", "§");
|
return s == null ? "" : s.replace("&", "§");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisable() {
|
|
||||||
if (refreshTask != null) refreshTask.cancel();
|
@Override
|
||||||
|
|
||||||
|
public void onDisable() {
|
||||||
|
|
||||||
|
if (refreshTask != null) refreshTask.cancel();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
42
src/main/java/de/nexuslobby/utils/UpdateChecker.java
Normal file
42
src/main/java/de/nexuslobby/utils/UpdateChecker.java
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class UpdateChecker {
|
||||||
|
|
||||||
|
private final NexusLobby plugin;
|
||||||
|
// URL zur Gitea API für das neueste Release
|
||||||
|
private final String url = "https://git.viper.ipv64.net/api/v1/repos/M_Viper/NexusLobby/releases/latest";
|
||||||
|
|
||||||
|
public UpdateChecker(NexusLobby plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getVersion(final Consumer<String> consumer) {
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
|
||||||
|
try (InputStream inputStream = new URL(url).openStream(); Scanner scanner = new Scanner(inputStream)) {
|
||||||
|
StringBuilder response = new StringBuilder();
|
||||||
|
while (scanner.hasNextLine()) {
|
||||||
|
response.append(scanner.nextLine());
|
||||||
|
}
|
||||||
|
|
||||||
|
String content = response.toString();
|
||||||
|
// Einfaches Parsing des JSON "tag_name" Feldes
|
||||||
|
if (content.contains("\"tag_name\":")) {
|
||||||
|
String version = content.split("\"tag_name\":\"")[1].split("\"")[0];
|
||||||
|
// Entferne ein eventuelles 'v' Präfix (z.B. v1.0.0 -> 1.0.0)
|
||||||
|
version = version.replace("v", "");
|
||||||
|
consumer.accept(version);
|
||||||
|
}
|
||||||
|
} catch (IOException exception) {
|
||||||
|
this.plugin.getLogger().warning("Update-Check fehlgeschlagen: " + exception.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,11 +36,11 @@ items:
|
|||||||
build-toggle:
|
build-toggle:
|
||||||
enabled: true
|
enabled: true
|
||||||
displayname: "&aBaumodus"
|
displayname: "&aBaumodus"
|
||||||
slot: 1
|
slot: 0
|
||||||
gadget:
|
gadget:
|
||||||
enabled: true
|
enabled: false
|
||||||
displayname: "&bGadgets"
|
displayname: "&bGadgets"
|
||||||
slot: 2
|
slot: 8
|
||||||
|
|
||||||
# --- Portal Einstellungen ---
|
# --- Portal Einstellungen ---
|
||||||
portals:
|
portals:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: NexusLobby
|
name: NexusLobby
|
||||||
main: de.nexuslobby.NexusLobby
|
main: de.nexuslobby.NexusLobby
|
||||||
version: "1.0.0"
|
version: "1.0.2"
|
||||||
api-version: "1.21"
|
api-version: "1.21"
|
||||||
author: M_Viper
|
author: M_Viper
|
||||||
description: Modular Lobby Plugin
|
description: Modular Lobby Plugin
|
||||||
|
|||||||
Reference in New Issue
Block a user