LobbySystem commit
This commit is contained in:
254
src/main/java/net/senorpollo/lobbysenor/SenorPollo_sLobby.java
Normal file
254
src/main/java/net/senorpollo/lobbysenor/SenorPollo_sLobby.java
Normal file
@@ -0,0 +1,254 @@
|
||||
package net.senorpollo.lobbysenor;
|
||||
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public final class SenorPollo_sLobby extends JavaPlugin implements Listener, CommandExecutor {
|
||||
|
||||
private List<UUID> hiddenPlayers = new ArrayList<>();
|
||||
private HashMap<UUID, Long> cooldowns = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// Setup plugin logic
|
||||
getServer().getPluginManager().registerEvents(this, this);
|
||||
getCommand("build").setExecutor(this);
|
||||
}
|
||||
|
||||
|
||||
private ItemStack createEmptyGlass() {
|
||||
ItemStack glass = new ItemStack(Material.GRAY_STAINED_GLASS_PANE);
|
||||
ItemMeta meta = glass.getItemMeta();
|
||||
meta.setDisplayName(" "); // Leerzeichen, damit kein Name angezeigt wird
|
||||
glass.setItemMeta(meta);
|
||||
return glass;
|
||||
}
|
||||
|
||||
private void fillEmptySlots(Inventory inv) {
|
||||
ItemStack glass = createEmptyGlass();
|
||||
for (int i = 0; i < inv.getSize(); i++) {
|
||||
if (inv.getItem(i) == null) {
|
||||
inv.setItem(i, glass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void giveStartItems(Player player) {
|
||||
// Clear player inventory
|
||||
player.getInventory().clear();
|
||||
|
||||
// Add items to the player's inventory
|
||||
//player.getInventory().setItem(4, createItem(Material.COMPASS, "§8» §eTeleporter"));
|
||||
player.getInventory().setItem(6, createItem(Material.COMPARATOR, "§8» §cEinstellungen"));
|
||||
player.getInventory().setItem(2, createItem(Material.LIME_DYE, "§8» §aSpieler sichtbar"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
private ItemStack createItem(Material material, String name) {
|
||||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
giveStartItems(player);
|
||||
player.teleport(new Location(player.getWorld(), 0.5, 68, -2.5, 0, 0 ));
|
||||
player.sendTitle("§eWillkommen", "§7auf §6Senor§fPollo§7!", 10, 70, 20);
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 3, 3);
|
||||
player.setGameMode(GameMode.ADVENTURE);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
ItemStack item = event.getItem();
|
||||
if (item != null && item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {
|
||||
Player player = event.getPlayer();
|
||||
String displayName = item.getItemMeta().getDisplayName();
|
||||
switch (displayName) {
|
||||
case "§8» §aSpieler sichtbar":
|
||||
case "§8» §cSpieler versteckt":
|
||||
togglePlayerVisibility(player, item);
|
||||
break;
|
||||
case "§8» §cEinstellungen":
|
||||
openSettingsMenu(player);
|
||||
break;
|
||||
case "§8» §eTeleporter":
|
||||
openTeleportMenu(player);
|
||||
break;
|
||||
case "§8» §dParkour":
|
||||
player.teleport(new Location(player.getWorld(), 12.500, 10.00, 5.500, -50, -10));
|
||||
break;
|
||||
case "§8» §6Gadgets§8 (§cKommt noch§8)":
|
||||
Inventory gadgetMenu = Bukkit.createInventory(null, InventoryType.CHEST, "§8» §6Gadgets");
|
||||
player.openInventory(gadgetMenu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void togglePlayerVisibility(Player player, ItemStack item) {
|
||||
if (hiddenPlayers.contains(player.getUniqueId())) {
|
||||
hiddenPlayers.remove(player.getUniqueId());
|
||||
item.setType(Material.LIME_DYE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§8» §aSpieler sichtbar");
|
||||
item.setItemMeta(meta);
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
player.showPlayer(this, onlinePlayer);
|
||||
}
|
||||
} else {
|
||||
hiddenPlayers.add(player.getUniqueId());
|
||||
item.setType(Material.GRAY_DYE);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§8» §cSpieler versteckt");
|
||||
item.setItemMeta(meta);
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
if (!onlinePlayer.equals(player)) {
|
||||
player.hidePlayer(this, onlinePlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void openSettingsMenu(Player player) {
|
||||
Inventory settingsMenu = Bukkit.createInventory(null, 27, "§8» §cEinstellungen");
|
||||
|
||||
ItemStack levelDisplayItem = new ItemStack(Material.EXPERIENCE_BOTTLE);
|
||||
ItemMeta meta = levelDisplayItem.getItemMeta();
|
||||
meta.setDisplayName("§8» §eLevelbar");
|
||||
meta.setLore(Collections.singletonList("§8 §cVerstecken §8/ §aSichtbar"));
|
||||
levelDisplayItem.setItemMeta(meta);
|
||||
settingsMenu.setItem(11, levelDisplayItem);
|
||||
|
||||
// Slots auffüllen
|
||||
fillEmptySlots(settingsMenu);
|
||||
|
||||
player.openInventory(settingsMenu);
|
||||
}
|
||||
|
||||
private void openTeleportMenu(Player player) {
|
||||
Inventory teleportMenu = Bukkit.createInventory(null, 54, "§8» §eTeleportationsmenü");
|
||||
|
||||
createServerItem(teleportMenu, Material.ENDER_EYE, "§8» §aSpawn", 13);
|
||||
createServerItem(teleportMenu, Material.GOLDEN_SWORD, "§8» §eChicken Competition", 19);
|
||||
createServerItem(teleportMenu, Material.IRON_PICKAXE, "§8» §cCityBuild", 25);
|
||||
createServerItem(teleportMenu, Material.CLOCK, "§8» §aSpielzeit", 38);
|
||||
createServerItem(teleportMenu, Material.CHEST_MINECART, "§8» §6Onkel Pollo", 40);
|
||||
createServerItem(teleportMenu, Material.EXPERIENCE_BOTTLE, "§8» §aLevel", 42);
|
||||
|
||||
// Slots auffüllen
|
||||
fillEmptySlots(teleportMenu);
|
||||
|
||||
player.openInventory(teleportMenu);
|
||||
}
|
||||
|
||||
|
||||
private void createServerItem(Inventory inventory, Material material, String name, int slot) {
|
||||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
inventory.setItem(slot, item);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent event) {
|
||||
Inventory inventory = event.getClickedInventory();
|
||||
if (inventory != null && event.getView().getTitle().equals("§8» §cEinstellungen")) {
|
||||
event.setCancelled(true);
|
||||
ItemStack clickedItem = event.getCurrentItem();
|
||||
if (clickedItem != null && clickedItem.hasItemMeta() && clickedItem.getItemMeta().hasDisplayName()) {
|
||||
String displayName = clickedItem.getItemMeta().getDisplayName();
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
if (displayName.equals("§8» §eLevelbar")) {
|
||||
player.performCommand("levelhide");
|
||||
}
|
||||
// Hier können weitere Optionen hinzugefügt werden
|
||||
}
|
||||
} else if (event.getView().getTitle().equals("§8» §eTeleportationsmenü")) {
|
||||
event.setCancelled(true);
|
||||
ItemStack clickedItem = event.getCurrentItem();
|
||||
if (clickedItem != null && clickedItem.hasItemMeta() && clickedItem.getItemMeta().hasDisplayName()) {
|
||||
String displayName = clickedItem.getItemMeta().getDisplayName();
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
switch (displayName) {
|
||||
case "§8» §aSpawn":
|
||||
player.teleport(new Location(player.getWorld(), 0.500, 12.25, 0.500, 180, 0 ));
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 3, 1);
|
||||
break;
|
||||
case "§8» §cCityBuild":
|
||||
player.teleport(new Location(player.getWorld(), -21.500, 10.25, 0.500, 90, -15));
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 3, 3);
|
||||
break;
|
||||
case "§8» §eChicken Competition":
|
||||
player.teleport(new Location(player.getWorld(), -0, 10.25, -20.5,180, 0 ));
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 3, 3);
|
||||
break;
|
||||
case "§8» §aSpielzeit":
|
||||
player.teleport(new Location(player.getWorld(), -22.5, 10.25, 33.5,50, 0 ));
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 3, 3);
|
||||
break;
|
||||
|
||||
case "§8» §aLevel":
|
||||
player.teleport(new Location(player.getWorld(), -25.5, 10.25, -27.5,120, 0 ));
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 3, 3);
|
||||
break;
|
||||
|
||||
case "§8» §6Onkel Pollo":
|
||||
player.teleport(new Location(player.getWorld(), 3.5, 12.25, 0.5,-145, 0 ));
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 3, 3);
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDropItem(PlayerDropItemEvent event) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
||||
if (cmd.getName().equalsIgnoreCase("build")) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (player.hasPermission("lobby.build")) {
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
player.sendMessage("§6Senor§fPollo§8 |§7 Du bist nun im Baumodus.");
|
||||
player.getInventory().clear();
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 3, 3);
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "§6Senor§fPollo§8 |§7Dieser Befehl kann nur von einem Spieler ausgeführt werden.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
4
src/main/resources/config.yml
Normal file
4
src/main/resources/config.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
chickens:
|
||||
"a1b2c3d4-e5f6-7890-abcd-ef1234567890": "Küken123"
|
||||
"123e4567-e89b-12d3-a456-426614174000": "Huhn456"
|
||||
|
||||
8
src/main/resources/plugin.yml
Normal file
8
src/main/resources/plugin.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
name: SenorPolloLobby
|
||||
version: 1.0
|
||||
main: net.senorpollo.lobbysenor.SenorPollo_sLobby
|
||||
api-version: 1.20
|
||||
author: Quattro
|
||||
commands:
|
||||
build:
|
||||
description: "Enter build mode"
|
||||
10
src/main/resources/settings.yml
Normal file
10
src/main/resources/settings.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
# settings.yml
|
||||
# Beispiel: UUID:
|
||||
# spawnAtSpawn: true/false (ob Spieler am Spawn spawnt)
|
||||
|
||||
settings:
|
||||
UUID1:
|
||||
spawnAtSpawn: true
|
||||
UUID2:
|
||||
spawnAtSpawn: false
|
||||
|
||||
Reference in New Issue
Block a user