package de.nexuslobby.modules; import de.nexuslobby.NexusLobby; import de.nexuslobby.api.Module; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.Listener; 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.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; public class ItemsModule implements Module, Listener { @Override public String getName() { return "Items"; } @Override public void onEnable() { Bukkit.getPluginManager().registerEvents(this, NexusLobby.getInstance()); } @EventHandler public void onJoin(PlayerJoinEvent event) { 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 public void onDisable() {} }