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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,6 @@ public class ActionMenu extends Action {
|
||||
return;
|
||||
}
|
||||
Menu menu = Menus.getMenu(raw);
|
||||
menu.openMenu(user);
|
||||
menu.openMenu(user, true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user