new version 1.3.3

This commit is contained in:
loki 2026-03-10 12:39:21 +01:00
parent 2d5c5eea48
commit d9eb747c1b
37 changed files with 1021 additions and 471 deletions

View file

@ -43,7 +43,7 @@ public abstract class LPMenu {
ItemStack item = new ItemStack(Material.RED_DYE);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.setDisplayName(ColorUtil.color("<#DE1F1F><bold>«"));
meta.setDisplayName(ColorUtil.color("<#DE1F1F><bold>Назад"));
item.setItemMeta(meta);
}
return item;
@ -53,7 +53,7 @@ public abstract class LPMenu {
ItemStack item = new ItemStack(Material.LIME_DYE);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.setDisplayName(ColorUtil.color("<#0DCB07><bold>»"));
meta.setDisplayName(ColorUtil.color("<#0DCB07><bold>Далее"));
item.setItemMeta(meta);
}
return item;

View file

@ -60,7 +60,7 @@ public class MainMenu extends LPMenu {
int count = visibleItems.size();
if (count == 0) {
player.sendMessage("§cNo menu items available. Check your permissions and locale files.");
player.sendMessage(Locales.getString(player, "other.no_menu_items"));
return;
}

View file

@ -68,8 +68,8 @@ public class LobbyMenu extends LPMenu {
ItemStack item = new ItemStack(mat);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.setDisplayName(ColorUtil.color(
Locales.getString(locale, "lobby.visibility") + " §7» §f" + label));
String visibilityName = Locales.getString(locale, "lobby.visibility.name");
meta.setDisplayName(ColorUtil.color(visibilityName + " §7» §f" + label));
item.setItemMeta(meta);
}
return item;

View file

@ -28,11 +28,19 @@ public class SingleMenu extends LPMenu {
List<ItemStack> items = new ArrayList<>();
for (Mode mode : Registry.getModes()) {
// Skip spectator mode in single menu
if (mode.getName().equals("spectator")) continue;
// Check if mode is enabled in config
if (!Config.CONFIG.getBoolean("modes." + mode.getName() + ".enabled")) continue;
boolean blocked = Config.CONFIG.getBoolean("permissions.enabled")
&& !player.hasPermission("LoParkour.gamemode." + mode.getName());
if (blocked || mode instanceof MultiMode) continue;
if (blocked) continue;
var item = mode.getItem(locale);
if (item == null) continue;
availableModes.add(mode);
items.add(item.build());
}

View file

@ -46,6 +46,7 @@ public class LangMenu extends LPMenu {
gui = gui.setItem(10 + i, item, e -> {
pp.locale = lang;
pp._locale = lang;
pp.updateHotbar(); // Update hotbar with new language
Menus.SETTINGS.open(player);
});
}

View file

@ -62,8 +62,7 @@ public class ParkourSettingsMenu extends LPMenu {
pp.updateGeneratorSettings(pp.session.generator);
open(pp);
})
.setItem(19, localeItem(player, "settings.parkour_settings.styles.item"),
e -> openStyleMenu(pp))
.setItem(19, styleItem(pp), e -> openStyleMenu(pp))
.setItem(20, schemDiffItem(pp), e -> {
if (pp.session.generator.state.score == 0) {
List<Double> diffs = List.of(0.0, 0.25, 0.5, 0.75, 1.0);
@ -80,11 +79,20 @@ public class ParkourSettingsMenu extends LPMenu {
private ItemStack toggleItem(String locale, String key, boolean value) {
Material mat = value ? Material.LIME_STAINED_GLASS_PANE : Material.RED_STAINED_GLASS_PANE;
String symbol = Locales.getString(locale, "settings.parkour_settings." + (value ? "enabled" : "disabled"));
String label = Locales.getString(locale, "settings.parkour_settings." + key + ".item");
String name = Locales.getString(locale, "settings.parkour_settings.items." + key + ".name");
String lore = Locales.getString(locale, "settings.parkour_settings.items." + key + ".lore");
ItemStack item = new ItemStack(mat);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.setDisplayName(ColorUtil.color(label + " §7[" + symbol + "§7]"));
meta.setDisplayName(ColorUtil.color(name + " §7[" + symbol + "§7]"));
if (lore != null && !lore.isEmpty()) {
List<String> loreLines = new ArrayList<>();
for (String line : lore.split("\\|\\|")) {
loreLines.add(ColorUtil.color(line.replace("%s", symbol)));
}
meta.setLore(loreLines);
}
item.setItemMeta(meta);
}
return item;
@ -92,7 +100,7 @@ public class ParkourSettingsMenu extends LPMenu {
private ItemStack schemDiffItem(ParkourPlayer pp) {
List<Double> diffs = List.of(0.0, 0.25, 0.5, 0.75, 1.0);
List<String> values = Locales.getStringList(pp.locale, "settings.parkour_settings.schematics.values");
List<String> values = Locales.getStringList(pp.locale, "settings.parkour_settings.items.schematics.values");
int idx = Math.max(0, diffs.indexOf(pp.schematicDifficulty));
String label = idx < values.size() ? values.get(idx) : String.valueOf(pp.schematicDifficulty);
Material[] mats = {Material.RED_STAINED_GLASS_PANE, Material.LIME_STAINED_GLASS_PANE,
@ -100,7 +108,35 @@ public class ParkourSettingsMenu extends LPMenu {
ItemStack item = new ItemStack(idx < mats.length ? mats[idx] : Material.PAPER);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.setDisplayName(ColorUtil.color("§eSchematics §7» §f" + label));
String name = Locales.getString(pp.locale, "settings.parkour_settings.items.schematics.name");
String lore = Locales.getString(pp.locale, "settings.parkour_settings.items.schematics.lore");
meta.setDisplayName(ColorUtil.color(name.replace("%s", label)));
if (lore != null && !lore.isEmpty()) {
List<String> loreLines = new ArrayList<>();
for (String line : lore.split("\\|\\|")) {
loreLines.add(ColorUtil.color(line.replace("%s", label)));
}
meta.setLore(loreLines);
}
item.setItemMeta(meta);
}
return item;
}
private ItemStack styleItem(ParkourPlayer pp) {
String name = Locales.getString(pp.locale, "settings.parkour_settings.items.styles.item.name");
String lore = Locales.getString(pp.locale, "settings.parkour_settings.items.styles.item.lore");
ItemStack item = new ItemStack(Material.CRAFTING_TABLE);
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.setDisplayName(ColorUtil.color(name.replace("%s", pp.style)));
if (lore != null && !lore.isEmpty()) {
List<String> loreLines = new ArrayList<>();
for (String line : lore.split("\\|\\|")) {
loreLines.add(ColorUtil.color(line.replace("%s", pp.style)));
}
meta.setLore(loreLines);
}
item.setItemMeta(meta);
}
return item;