9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-25 18:09:27 +00:00

Menus now support permissions

This commit is contained in:
LoJoSho
2023-01-12 13:02:36 -06:00
parent 3acd2b7480
commit 65257d8a3f
3 changed files with 33 additions and 2 deletions

View File

@@ -3,6 +3,7 @@ package com.hibiscusmc.hmccosmetics.command;
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic;
import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot;
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
import com.hibiscusmc.hmccosmetics.gui.Menu;
import com.hibiscusmc.hmccosmetics.gui.Menus;
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
@@ -54,7 +55,9 @@ public class CosmeticCommandTabComplete implements TabCompleter {
}
}
case "menu" -> {
completions.addAll(Menus.getMenuNames());
for (Menu menu : Menus.getMenu()) {
if (menu.canOpen(user.getPlayer())) completions.add(menu.getId());
}
}
case "dataclear", "wardrobe" -> {
for (Player player : Bukkit.getOnlinePlayers()) {
@@ -80,6 +83,12 @@ public class CosmeticCommandTabComplete implements TabCompleter {
case "dye" -> {
completions.add("#FFFFFF");
}
case "menu", "apply", "unapply" -> {
for (Player player : Bukkit.getOnlinePlayers()) {
completions.add(player.getName());
}
}
}
StringUtil.copyPartialMatches(args[2], completions, finalCompletitons);
}

View File

@@ -31,6 +31,7 @@ public class Menu {
private String title;
private int rows;
private ConfigurationNode config;
private String permissionNode;
public Menu(String id, ConfigurationNode config) {
this.id = id;
@@ -38,6 +39,7 @@ public class Menu {
title = config.node("title").getString("chest");
rows = config.node("rows").getInt(1);
permissionNode = config.node("permission").getString("");
Menus.addMenu(this);
}
@@ -55,8 +57,18 @@ public class Menu {
}
public void openMenu(CosmeticUser user) {
openMenu(user, false);
}
public void openMenu(CosmeticUser user, boolean ignorePermission) {
Player player = user.getPlayer();
if (player == null) return;
if (!ignorePermission && !permissionNode.isEmpty()) {
if (!player.hasPermission(permissionNode) && !player.isOp()) {
MessagesUtil.sendMessage(player, "no-permission");
return;
}
}
final Component component = Adventure.MINI_MESSAGE.deserialize(Placeholder.applyPapiPlaceholders(player, this.title));
Gui gui = Gui.gui().
title(component).
@@ -194,4 +206,14 @@ public class Menu {
}
return itemStack;
}
public String getPermissionNode() {
return permissionNode;
}
public boolean canOpen(Player player) {
if (permissionNode.isEmpty()) return true;
if (player.isOp() || player.hasPermission(permissionNode)) return true;
return false;
}
}

View File

@@ -19,6 +19,6 @@ public class ActionMenu extends Action {
return;
}
Menu menu = Menus.getMenu(raw);
menu.openMenu(user);
menu.openMenu(user, true);
}
}