LoParkour/src/main/java/dev/loki/loparkour/menu/lobby/LobbyMenu.java
loki5512344 fd0ba2cc0e refactor: reorganize packages and replace LPSchematic with WorldEdit
Restructure core modules into subpackages (generator, schematic, config, session, etc.); add .schem/.nbt schematic pipeline, commands, adaptive stats skeleton, and bootstrap wiring.
2026-06-01 14:02:48 +02:00

77 lines
3 KiB
Java

package dev.loki.loparkour.menu.lobby;
import dev.loki.loparkour.config.locale.Locales;
import dev.loki.loparkour.menu.core.LPMenu;
import dev.loki.loparkour.menu.core.Menus;
import dev.loki.loparkour.menu.core.ParkourOption;
import dev.loki.loparkour.player.core.ParkourUser;
import dev.loki.loparkour.session.core.Session;
import dev.loki.loparkour.util.text.ColorUtil;
import dev.lolib.gui.InventoryGUI;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class LobbyMenu extends LPMenu {
@Override
public void open(@NotNull Player player) {
ParkourUser user = ParkourUser.getUser(player);
if (user == null) return;
String locale = user.locale;
String title = Locales.getString(locale, "lobby.name");
boolean isHost = !user.session.getPlayers().isEmpty()
&& user.session.getPlayers().get(0) == user;
InventoryGUI gui = baseGui(title, 3);
if (ParkourOption.PLAYER_MANAGEMENT.mayPerform(player) && isHost) {
gui = gui.setItem(11, localeItem(player, "lobby.player_management.item"),
e -> Menus.PLAYER_MANAGEMENT.open(player));
}
if (ParkourOption.VISIBILITY.mayPerform(player) && isHost) {
gui = gui.setItem(13, visibilityItem(user), e -> {
Session.Visibility next = switch (user.session.getVisibility()) {
case PUBLIC -> Session.Visibility.ID_ONLY;
case ID_ONLY -> Session.Visibility.PRIVATE;
case PRIVATE -> Session.Visibility.PUBLIC;
};
user.session.setVisibility(next);
open(player);
});
}
gui.setItem(22, closeButton(player), e -> player.closeInventory())
.open(player);
}
private ItemStack visibilityItem(ParkourUser user) {
String locale = user.locale;
List<String> values = Locales.getStringList(locale, "lobby.visibility.values");
String label = switch (user.session.getVisibility()) {
case PUBLIC -> values.size() > 2 ? values.get(2) : "Public";
case ID_ONLY -> values.size() > 1 ? values.get(1) : "ID Only";
case PRIVATE -> !values.isEmpty() ? values.get(0) : "Private";
};
Material mat = switch (user.session.getVisibility()) {
case PUBLIC -> Material.LIME_STAINED_GLASS_PANE;
case ID_ONLY -> Material.YELLOW_STAINED_GLASS_PANE;
case PRIVATE -> Material.RED_STAINED_GLASS_PANE;
};
ItemStack item = new ItemStack(mat);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
String visibilityName = Locales.getString(locale, "lobby.visibility.name");
meta.setDisplayName(ColorUtil.color(visibilityName + " §7» §f" + label));
item.setItemMeta(meta);
}
return item;
}
}