119 lines
4.6 KiB
Java
119 lines
4.6 KiB
Java
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() {}
|
|
} |