From 6eb5cf7d34f8fce295a2a21b119c3391e3171cdd Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 23 Jul 2026 04:23:11 +0000 Subject: [PATCH 1/2] Drop legacy quantumrpg/divinity dual-namespace permission shim Perms.has() accepted both the quantumrpg.* and divinity.* namespaces as equivalent, but the plugin only ever grants quantumrpg.* nodes (Perms.PREFIX). Replace all call sites with the plain Permissible#hasPermission() check and remove the now-unused divinity.* permission declarations from plugin.yml that existed solely to back the removed shim. --- .../studio/magemonkey/divinity/Perms.java | 20 +- .../modules/api/socketing/ModuleSocket.java | 2 +- .../api/socketing/merchant/MerchantCmd.java | 4 +- .../socketing/merchant/MerchantSocket.java | 2 +- .../modules/list/classes/api/RPGClass.java | 2 +- .../list/dismantle/DismantleManager.java | 2 +- .../list/extractor/ExtractorManager.java | 2 +- .../list/magicdust/MagicDustManager.java | 2 +- .../modules/list/repair/RepairManager.java | 2 +- .../modules/list/sell/SellManager.java | 2 +- .../list/soulbound/SoulboundManager.java | 2 +- .../magemonkey/divinity/utils/ItemUtils.java | 3 +- src/main/resources/plugin.yml | 550 +----------------- 13 files changed, 17 insertions(+), 578 deletions(-) diff --git a/src/main/java/studio/magemonkey/divinity/Perms.java b/src/main/java/studio/magemonkey/divinity/Perms.java index 7bf919d5..483f1c6e 100644 --- a/src/main/java/studio/magemonkey/divinity/Perms.java +++ b/src/main/java/studio/magemonkey/divinity/Perms.java @@ -1,13 +1,11 @@ package studio.magemonkey.divinity; -import org.bukkit.permissions.Permissible; import org.jetbrains.annotations.NotNull; import studio.magemonkey.divinity.modules.api.socketing.ModuleSocket; public class Perms { - private static final String PREFIX = "quantumrpg."; - private static final String DIVINITY = "divinity."; + private static final String PREFIX = "quantumrpg."; public static final String USER = PREFIX + "user"; public static final String ADMIN = PREFIX + "admin"; @@ -100,20 +98,4 @@ public static String getSocketGuiUser(@NotNull ModuleSocket module) { public static String getSocketGuiMerchant(@NotNull ModuleSocket module) { return SOCKET_GUI_MERCHANT.replace("%module%", module.getId()); } - - /** - * Checks whether the permissible has the given permission, accepting both - * the legacy {@code quantumrpg.*} namespace and the current {@code divinity.*} - * namespace as equivalent. - */ - public static boolean has(@NotNull Permissible permissible, @NotNull String permission) { - if (permissible.hasPermission(permission)) return true; - if (permission.startsWith(PREFIX)) { - return permissible.hasPermission(DIVINITY + permission.substring(PREFIX.length())); - } - if (permission.startsWith(DIVINITY)) { - return permissible.hasPermission(PREFIX + permission.substring(DIVINITY.length())); - } - return false; - } } diff --git a/src/main/java/studio/magemonkey/divinity/modules/api/socketing/ModuleSocket.java b/src/main/java/studio/magemonkey/divinity/modules/api/socketing/ModuleSocket.java index bc4bfa2f..c2c4f5d7 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/api/socketing/ModuleSocket.java +++ b/src/main/java/studio/magemonkey/divinity/modules/api/socketing/ModuleSocket.java @@ -160,7 +160,7 @@ protected boolean onDragDrop( @NotNull I mItem, @NotNull InventoryClickEvent e) { - if (!Perms.has(player, Perms.getSocketGuiUser(this))) { + if (!player.hasPermission(Perms.getSocketGuiUser(this))) { plugin.lang().Error_NoPerm.send(player); return false; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantCmd.java b/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantCmd.java index 55e127f4..e9b5306b 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantCmd.java +++ b/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantCmd.java @@ -40,7 +40,7 @@ public String description() { @Override @NotNull public List getTab(@NotNull Player player, int i, @NotNull String[] args) { - if (Perms.has(player, Perms.getSocketCmdMerchantOthers(this.module))) { + if (player.hasPermission(Perms.getSocketCmdMerchantOthers(this.module))) { if (i == 1) { return PlayerUT.getPlayerNames(); } @@ -57,7 +57,7 @@ protected void perform(@NotNull CommandSender sender, @NotNull String label, @No this.printUsage(sender); return; } - if (args.length > 1 && !Perms.has(sender, Perms.getSocketCmdMerchantOthers(this.module))) { + if (args.length > 1 && !sender.hasPermission(Perms.getSocketCmdMerchantOthers(this.module))) { this.errPerm(sender); return; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantSocket.java b/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantSocket.java index 19b92190..ec4ce624 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantSocket.java +++ b/src/main/java/studio/magemonkey/divinity/modules/api/socketing/merchant/MerchantSocket.java @@ -69,7 +69,7 @@ public void shutdown() { } public void openMerchantGUI(@NotNull Player player, boolean force) { - if (!force && !Perms.has(player, Perms.getSocketGuiMerchant(this.moduleSocket))) { + if (!force && !player.hasPermission(Perms.getSocketGuiMerchant(this.moduleSocket))) { plugin.lang().Error_NoPerm.send(player); return; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/classes/api/RPGClass.java b/src/main/java/studio/magemonkey/divinity/modules/list/classes/api/RPGClass.java index 2f71fa5f..43fc8add 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/classes/api/RPGClass.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/classes/api/RPGClass.java @@ -213,7 +213,7 @@ public boolean hasPermission(@NotNull Player player) { if (!this.isPermissionRequired()) return true; String node = Perms.CLASS_CLASS + "." + this.getId(); - return Perms.has(player, node); + return player.hasPermission(node); } @NotNull diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/dismantle/DismantleManager.java b/src/main/java/studio/magemonkey/divinity/modules/list/dismantle/DismantleManager.java index 2e456d2a..0fc70477 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/dismantle/DismantleManager.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/dismantle/DismantleManager.java @@ -105,7 +105,7 @@ public void shutdown() { // METHODS public void openDismantleGUI(@NotNull Player player, boolean isForce) { - if (!isForce && !Perms.has(player, Perms.DISMANTLE_GUI)) { + if (!isForce && !player.hasPermission(Perms.DISMANTLE_GUI)) { plugin.lang().Error_NoPerm.send(player); return; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/extractor/ExtractorManager.java b/src/main/java/studio/magemonkey/divinity/modules/list/extractor/ExtractorManager.java index 8fec8ec6..40c8196a 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/extractor/ExtractorManager.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/extractor/ExtractorManager.java @@ -110,7 +110,7 @@ public final boolean openExtraction( boolean force ) { - if (!force && !Perms.has(player, Perms.EXTRACTOR_GUI)) { + if (!force && !player.hasPermission(Perms.EXTRACTOR_GUI)) { plugin.lang().Error_NoPerm.send(player); return false; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/magicdust/MagicDustManager.java b/src/main/java/studio/magemonkey/divinity/modules/list/magicdust/MagicDustManager.java index aaa54da4..a3ded9f4 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/magicdust/MagicDustManager.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/magicdust/MagicDustManager.java @@ -171,7 +171,7 @@ public boolean isRateableItem(@NotNull ItemStack target) { } public void openGUIPaid(@NotNull Player player, @Nullable ItemStack target, boolean force) { - if (!force && !Perms.has(player, Perms.MAGIC_DUST_GUI)) { + if (!force && !player.hasPermission(Perms.MAGIC_DUST_GUI)) { plugin.lang().Error_NoPerm.send(player); return; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/repair/RepairManager.java b/src/main/java/studio/magemonkey/divinity/modules/list/repair/RepairManager.java index 5287400f..fb6a1214 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/repair/RepairManager.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/repair/RepairManager.java @@ -177,7 +177,7 @@ public boolean openAnvilGUI( @Nullable RepairType type, boolean isForce) { - if (!isForce && !Perms.has(player, Perms.REPAIR_GUI)) { + if (!isForce && !player.hasPermission(Perms.REPAIR_GUI)) { plugin.lang().Error_NoPerm.send(player); return false; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/sell/SellManager.java b/src/main/java/studio/magemonkey/divinity/modules/list/sell/SellManager.java index afe101b5..e9fbc5d5 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/sell/SellManager.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/sell/SellManager.java @@ -74,7 +74,7 @@ public void shutdown() { } public void openSellGUI(@NotNull Player player, boolean isForce) { - if (!isForce && !Perms.has(player, Perms.SELL_GUI)) { + if (!isForce && !player.hasPermission(Perms.SELL_GUI)) { plugin.lang().Error_NoPerm.send(player); return; } diff --git a/src/main/java/studio/magemonkey/divinity/modules/list/soulbound/SoulboundManager.java b/src/main/java/studio/magemonkey/divinity/modules/list/soulbound/SoulboundManager.java index 79613e30..17ba685b 100644 --- a/src/main/java/studio/magemonkey/divinity/modules/list/soulbound/SoulboundManager.java +++ b/src/main/java/studio/magemonkey/divinity/modules/list/soulbound/SoulboundManager.java @@ -210,7 +210,7 @@ public void onSoulStart(InventoryClickEvent e) { } } else { if (this.hasOwner(item)) { - if (!this.isOwner(item, p) && !Perms.has(p, Perms.BYPASS_REQ_USER_UNTRADEABLE)) { + if (!this.isOwner(item, p) && !p.hasPermission(Perms.BYPASS_REQ_USER_UNTRADEABLE)) { e.setCancelled(true); return; } diff --git a/src/main/java/studio/magemonkey/divinity/utils/ItemUtils.java b/src/main/java/studio/magemonkey/divinity/utils/ItemUtils.java index 91d18de2..6be05dbf 100644 --- a/src/main/java/studio/magemonkey/divinity/utils/ItemUtils.java +++ b/src/main/java/studio/magemonkey/divinity/utils/ItemUtils.java @@ -33,7 +33,6 @@ import studio.magemonkey.divinity.stats.items.ItemStats; import studio.magemonkey.divinity.stats.items.attributes.stats.DurabilityStat; import studio.magemonkey.divinity.stats.items.requirements.ItemRequirements; -import studio.magemonkey.divinity.Perms; import studio.magemonkey.divinity.stats.items.requirements.api.UserRequirement; import studio.magemonkey.divinity.types.ItemGroup; import studio.magemonkey.divinity.types.ItemSubType; @@ -63,7 +62,7 @@ public static boolean canUse(@NotNull ItemStack item, @NotNull Player player, bo if (!Hooks.isNPC(player)) { for (UserRequirement req : ItemRequirements.getUserRequirements()) { - if (!Perms.has(player, req.getBypassPermission()) && !req.canUse(player, item)) { + if (!player.hasPermission(req.getBypassPermission()) && !req.canUse(player, item)) { if (msg) req.getDenyMessage(player, item) .replace("%item%", ItemUT.getItemName(item)) .replace("%player%", player.getName()) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index edf93db9..54147ce9 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -58,38 +58,28 @@ permissions: description: Bypass all item player requirements. default: op children: - quantumrpg.bypass.requirement: true - divinity.bypass.requirement.class: true - divinity.bypass.requirement.level: true - divinity.bypass.requirement.soulbound: true - divinity.bypass.requirement.untradeable: true + divinity.bypass.class: true + divinity.bypass.level: true + divinity.bypass.soulbound: true + divinity.bypass.untradeable: true divinity.bypass.requirement.level: description: Bypass item player level requirement. default: op - children: - quantumrpg.bypass.requirement.level: true divinity.bypass.requirement.class: description: Bypass item player class requirement. default: op - children: - quantumrpg.bypass.requirement.class: true divinity.bypass.requirement.soulbound: description: Bypass item player soulbound requirement. default: op - children: - quantumrpg.bypass.requirement.soulbound: true divinity.bypass.requirement.untradeable: description: Bypass item untradeable requirement. default: op - children: - quantumrpg.bypass.requirement.untradeable: true # Classes ---------------------------------------------------- divinity.classes: description: Full access to Classes module. default: op children: - quantumrpg.classes: true divinity.classes.cmd: true divinity.classes.class.*: true divinity.classes.cmd: @@ -103,93 +93,13 @@ permissions: divinity.classes.cmd.aspects: true divinity.classes.cmd.addexp: true divinity.classes.cmd.addlevel: true - divinity.classes.cmd.addskill: true - divinity.classes.cmd.addaspectpoints: true - divinity.classes.cmd.addskillpoints: true - divinity.classes.cmd.setclass: true - divinity.classes.cmd.reset: true - divinity.classes.cmd.resetaspectpoints: true - divinity.classes.cmd.resetskillpoints: true - quantumrpg.classes.cmd.addskill: true - quantumrpg.classes.cmd.addaspectpoints: true - quantumrpg.classes.cmd.addskillpoints: true - quantumrpg.classes.cmd.setclass: true - quantumrpg.classes.cmd.reset: true - quantumrpg.classes.cmd.resetaspectpoints: true - quantumrpg.classes.cmd.resetskillpoints: true - divinity.classes.cmd.cast: - description: Access to /class cast command. - default: op - children: - quantumrpg.classes.cmd.cast: true - divinity.classes.cmd.select: - description: Access to /class select command. - default: true - children: - quantumrpg.classes.cmd.select: true - divinity.classes.cmd.skills: - description: Access to /class skills command. - default: true - children: - quantumrpg.classes.cmd.skills: true - divinity.classes.cmd.stats: - description: Access to /class stats command. - default: true - children: - quantumrpg.classes.cmd.stats: true - divinity.classes.cmd.aspects: - description: Access to /class aspects command. - default: true - children: - quantumrpg.classes.cmd.aspects: true - divinity.classes.cmd.addexp: - description: Access to /class addexp command. - default: op - children: - quantumrpg.classes.cmd.addexp: true - divinity.classes.cmd.addlevel: - description: Access to /class addlevel command. - default: op - children: - quantumrpg.classes.cmd.addlevel: true - divinity.classes.cmd.addskill: - description: Access to /class addskill command. - default: op - children: quantumrpg.classes.cmd.addskill: true - divinity.classes.cmd.addaspectpoints: - description: Access to /class addaspectpoints command. - default: op - children: quantumrpg.classes.cmd.addaspectpoints: true - divinity.classes.cmd.addskillpoints: - description: Access to /class addskillpoints command. - default: op - children: quantumrpg.classes.cmd.addskillpoints: true - divinity.classes.cmd.setclass: - description: Access to /class setclass command. - default: op - children: quantumrpg.classes.cmd.setclass: true - divinity.classes.cmd.reset: - description: Access to /class reset command. - default: op - children: quantumrpg.classes.cmd.reset: true - divinity.classes.cmd.resetaspectpoints: - description: Access to /class resetaspectpoints command. - default: op - children: quantumrpg.classes.cmd.resetaspectpoints: true - divinity.classes.cmd.resetskillpoints: - description: Access to /class resetskillpoints command. - default: op - children: quantumrpg.classes.cmd.resetskillpoints: true - divinity.classes.class.*: - description: Access to all classes. - default: op quantumrpg.classes.cmd.cast: description: Access to /class cast command. default: op @@ -234,23 +144,6 @@ permissions: default: op # Combat Log ---------------------------------------------------- - divinity.combatlog: - description: Full access to Combat Log module. - default: op - children: - divinity.combatlog.cmd: true - quantumrpg.combatlog.cmd: true - divinity.combatlog.cmd: - description: Access to all Combat Log commands. - default: op - children: - divinity.combatlog.cmd.log: true - quantumrpg.combatlog.cmd.log: true - divinity.combatlog.cmd.log: - description: Access to /combatlog log command. - default: true - children: - quantumrpg.combatlog.cmd.log: true quantumrpg.combatlog: description: Full access to Combat Log module. default: op @@ -266,30 +159,6 @@ permissions: default: true # Dismantle ---------------------------------------------------- - divinity.dismantle: - description: Full access to the Dismantle module. - default: op - children: - divinity.dismantle.cmd: true - divinity.dismantle.gui: true - quantumrpg.dismantle.cmd: true - quantumrpg.dismantle.gui: true - divinity.dismantle.cmd: - description: Access to Dismantle commands. - default: op - children: - divinity.dismantle.cmd.open: true - quantumrpg.dismantle.cmd.open: true - divinity.dismantle.cmd.open: - description: Access to /dismantle open command. - default: op - children: - quantumrpg.dismantle.cmd.open: true - divinity.dismantle.gui: - description: Access to Dismantle GUI. - default: op - children: - quantumrpg.dismantle.gui: true quantumrpg.dismantle: description: Full access to the Dismantle module. default: op @@ -306,50 +175,6 @@ permissions: default: op # Essences ---------------------------------------------------- - divinity.essences: - description: Full access to Essences module. - default: op - children: - divinity.essences.cmd: true - divinity.essences.gui: true - quantumrpg.essences.cmd: true - quantumrpg.essences.gui: true - divinity.essences.cmd: - description: Access to all Essences commands. - default: op - children: - divinity.essences.cmd.merchant: true - divinity.essences.cmd.merchant.others: true - quantumrpg.essences.cmd.merchant: true - quantumrpg.essences.cmd.merchant.others: true - divinity.essences.cmd.merchant: - description: Access to /essences merchant command. - default: op - children: - quantumrpg.essences.cmd.merchant: true - divinity.essences.cmd.merchant.others: - description: Access to /essences merchant [player] command. - default: op - children: - quantumrpg.essences.cmd.merchant.others: true - divinity.essences.gui: - description: Access to all Essences GUIs. - default: op - children: - divinity.essences.gui.user: true - divinity.essences.gui.merchant: true - quantumrpg.essences.gui.user: true - quantumrpg.essences.gui.merchant: true - divinity.essences.gui.user: - description: Access to Default Socketing GUI. - default: op - children: - quantumrpg.essences.gui.user: true - divinity.essences.gui.merchant: - description: Access to Merchant Socketing GUI. - default: op - children: - quantumrpg.essences.gui.merchant: true quantumrpg.essences: description: Full access to Essences module. default: op @@ -384,30 +209,6 @@ permissions: default: op # Extractor ---------------------------------------------------- - divinity.extractor: - description: Full access to Extractor module. - default: op - children: - divinity.extractor.cmd: true - divinity.extractor.gui: true - quantumrpg.extractor.cmd: true - quantumrpg.extractor.gui: true - divinity.extractor.cmd: - description: Access to all Extractor commands. - default: op - children: - divinity.extractor.cmd.open: true - quantumrpg.extractor.cmd.open: true - divinity.extractor.cmd.open: - description: Access to /extractor open command. - default: op - children: - quantumrpg.extractor.cmd.open: true - divinity.extractor.gui: - description: Access Extractor GUI. - default: op - children: - quantumrpg.extractor.gui: true quantumrpg.extractor: description: Full access to Extractor module. default: op @@ -427,30 +228,6 @@ permissions: default: op # Fortify ---------------------------------------------------- - divinity.fortify: - description: Full access to Fortify module. - default: op - children: - divinity.fortify.cmd: true - quantumrpg.fortify.cmd: true - divinity.fortify.cmd: - description: Access to all Fortify commands. - default: op - children: - divinity.fortify.cmd.fortify: true - divinity.fortify.cmd.unfortify: true - quantumrpg.fortify.cmd.fortify: true - quantumrpg.fortify.cmd.unfortify: true - divinity.fortify.cmd.fortify: - description: Access to /fortify fortify command. - default: op - children: - quantumrpg.fortify.cmd.fortify: true - divinity.fortify.cmd.unfortify: - description: Access to /fortify unfortify command. - default: op - children: - quantumrpg.fortify.cmd.unfortify: true quantumrpg.fortify: description: Full access to Fortify module. default: op @@ -470,50 +247,6 @@ permissions: default: op # Gems ---------------------------------------------------- - divinity.gems: - description: Full access to Gems module. - default: op - children: - divinity.gems.cmd: true - divinity.gems.gui: true - quantumrpg.gems.cmd: true - quantumrpg.gems.gui: true - divinity.gems.cmd: - description: Access to all Gems commands. - default: op - children: - divinity.gems.cmd.merchant: true - divinity.gems.cmd.merchant.others: true - quantumrpg.gems.cmd.merchant: true - quantumrpg.gems.cmd.merchant.others: true - divinity.gems.cmd.merchant: - description: Access to /gems merchant command. - default: op - children: - quantumrpg.gems.cmd.merchant: true - divinity.gems.cmd.merchant.others: - description: Access to /gems merchant [player] command. - default: op - children: - quantumrpg.gems.cmd.merchant.others: true - divinity.gems.gui: - description: Access to all Gems GUIs. - default: op - children: - divinity.gems.gui.user: true - divinity.gems.gui.merchant: true - quantumrpg.gems.gui.user: true - quantumrpg.gems.gui.merchant: true - divinity.gems.gui.user: - description: Access to user socketing GUI. - default: op - children: - quantumrpg.gems.gui.user: true - divinity.gems.gui.merchant: - description: Access to Merchant socketing GUI. - default: op - children: - quantumrpg.gems.gui.merchant: true quantumrpg.gems: description: Full access to Gems module. default: op @@ -546,23 +279,6 @@ permissions: default: op # Identify ---------------------------------------------------- - divinity.identify: - description: Full access to Identify module. - default: op - children: - divinity.identify.cmd: true - quantumrpg.identify.cmd: true - divinity.identify.cmd: - description: Access to all Identify commands. - default: op - children: - divinity.identify.cmd.identify: true - quantumrpg.identify.cmd.identify: true - divinity.identify.cmd.identify: - description: Access to /identify identify command. - default: op - children: - quantumrpg.identify.cmd.identify: true quantumrpg.identify: description: Full access to Identify module. default: op @@ -578,30 +294,6 @@ permissions: default: op # Magic Dust ---------------------------------------------------- - divinity.magicdust: - description: Full access to Magic Dust module. - default: op - children: - divinity.magicdust.cmd: true - divinity.magicdust.gui: true - quantumrpg.magicdust.cmd: true - quantumrpg.magicdust.gui: true - divinity.magicdust.cmd: - description: Full access to Magic Dust commands. - default: op - children: - divinity.magicdust.cmd.open: true - quantumrpg.magicdust.cmd.open: true - divinity.magicdust.cmd.open: - description: Allows to use /magicdust open command. - default: op - children: - quantumrpg.magicdust.cmd.open: true - divinity.magicdust.gui: - description: Allows to use Magic Dust GUI. - default: op - children: - quantumrpg.magicdust.gui: true quantumrpg.magicdust: description: Full access to Magic Dust module. default: op @@ -621,100 +313,6 @@ permissions: default: op # Party ---------------------------------------------------- - divinity.party: - description: Access to Party module. - default: true - children: - divinity.party.cmd: true - quantumrpg.party.cmd: true - divinity.party.cmd: - description: Access to Party commands. - default: op - children: - divinity.party.cmd.chat: true - divinity.party.cmd.create: true - divinity.party.cmd.disband: true - divinity.party.cmd.drop: true - divinity.party.cmd.exp: true - divinity.party.cmd.invite: true - divinity.party.cmd.join: true - divinity.party.cmd.kick: true - divinity.party.cmd.leave: true - divinity.party.cmd.menu: true - divinity.party.cmd.roll: true - divinity.party.cmd.tp: true - quantumrpg.party.cmd.chat: true - quantumrpg.party.cmd.create: true - quantumrpg.party.cmd.disband: true - quantumrpg.party.cmd.drop: true - quantumrpg.party.cmd.exp: true - quantumrpg.party.cmd.invite: true - quantumrpg.party.cmd.join: true - quantumrpg.party.cmd.kick: true - quantumrpg.party.cmd.leave: true - quantumrpg.party.cmd.menu: true - quantumrpg.party.cmd.roll: true - quantumrpg.party.cmd.tp: true - divinity.party.cmd.chat: - description: Access to /party chat command. - default: true - children: - quantumrpg.party.cmd.chat: true - divinity.party.cmd.create: - description: Access to /party create command. - default: true - children: - quantumrpg.party.cmd.create: true - divinity.party.cmd.disband: - description: Access to /party disband command. - default: true - children: - quantumrpg.party.cmd.disband: true - divinity.party.cmd.drop: - description: Access to /party drop command. - default: true - children: - quantumrpg.party.cmd.drop: true - divinity.party.cmd.exp: - description: Access to /party exp command. - default: true - children: - quantumrpg.party.cmd.exp: true - divinity.party.cmd.invite: - description: Access to /party invite command. - default: true - children: - quantumrpg.party.cmd.invite: true - divinity.party.cmd.join: - description: Access to /party join command. - default: true - children: - quantumrpg.party.cmd.join: true - divinity.party.cmd.kick: - description: Access to /party kick command. - default: true - children: - quantumrpg.party.cmd.kick: true - divinity.party.cmd.leave: - description: Access to /party leave command. - default: true - children: - quantumrpg.party.cmd.leave: true - divinity.party.cmd.menu: - description: Access to /party menu command. - default: true - children: - quantumrpg.party.cmd.menu: true - divinity.party.cmd.roll: - description: Access to /party roll command. - default: true - children: - quantumrpg.party.cmd.roll: true - divinity.party.cmd.tp: - description: Access to /party tp command. - default: true - children: - quantumrpg.party.cmd.tp: true quantumrpg.party: description: Access to Party module. default: true @@ -774,30 +372,6 @@ permissions: default: true # Refine ---------------------------------------------------- - divinity.refine: - description: Access to Refine module. - default: op - children: - divinity.refine.cmd: true - quantumrpg.refine.cmd: true - divinity.refine.cmd: - description: Access to Refine commands. - default: op - children: - divinity.refine.cmd.refine: true - divinity.refine.cmd.downgrade: true - quantumrpg.refine.cmd.refine: true - quantumrpg.refine.cmd.downgrade: true - divinity.refine.cmd.refine: - description: Access to /refine refine command. - default: op - children: - quantumrpg.refine.cmd.refine: true - divinity.refine.cmd.downgrade: - description: Access to /refine downgrade command. - default: op - children: - quantumrpg.refine.cmd.downgrade: true quantumrpg.refine: description: Access to Refine module. default: op @@ -811,30 +385,6 @@ permissions: quantumrpg.refine.cmd.downgrade: true # Repair ---------------------------------------------------- - divinity.repair: - description: Access to Repair module. - default: op - children: - divinity.repair.cmd: true - divinity.repair.gui: true - quantumrpg.repair.cmd: true - quantumrpg.repair.gui: true - divinity.repair.cmd: - description: Access to Repair commands. - default: op - children: - divinity.repair.cmd.open: true - quantumrpg.repair.cmd.open: true - divinity.repair.cmd.open: - description: Access to /repair open command. - default: op - children: - quantumrpg.repair.cmd.open: true - divinity.repair.gui: - description: Access to Repair GUI. - default: op - children: - quantumrpg.repair.gui: true quantumrpg.repair: description: Access to Repair module. default: op @@ -851,50 +401,6 @@ permissions: default: op # Runes ---------------------------------------------------- - divinity.runes: - description: Full access to Runes module. - default: op - children: - divinity.runes.cmd: true - divinity.runes.gui: true - quantumrpg.runes.cmd: true - quantumrpg.runes.gui: true - divinity.runes.cmd: - description: Access to all Runes commands. - default: op - children: - divinity.runes.cmd.merchant: true - divinity.runes.cmd.merchant.others: true - quantumrpg.runes.cmd.merchant: true - quantumrpg.runes.cmd.merchant.others: true - divinity.runes.cmd.merchant: - description: Access to /runes merchant command. - default: op - children: - quantumrpg.runes.cmd.merchant: true - divinity.runes.cmd.merchant.others: - description: Access to /runes merchant [player] command. - default: op - children: - quantumrpg.runes.cmd.merchant.others: true - divinity.runes.gui: - description: Access to all Runes GUIs. - default: op - children: - divinity.runes.gui.user: true - divinity.runes.gui.merchant: true - quantumrpg.runes.gui.user: true - quantumrpg.runes.gui.merchant: true - divinity.runes.gui.user: - description: Access to Default Socketing GUI. - default: op - children: - quantumrpg.runes.gui.user: true - divinity.runes.gui.merchant: - description: Access to Merchant Socketing GUI. - default: op - children: - quantumrpg.runes.gui.merchant: true quantumrpg.runes: description: Full access to Runes module. default: op @@ -929,30 +435,6 @@ permissions: default: op # Sell ---------------------------------------------------- - divinity.sell: - description: Full access to the Sell module. - default: op - children: - divinity.sell.cmd: true - divinity.sell.gui: true - quantumrpg.sell.cmd: true - quantumrpg.sell.gui: true - divinity.sell.cmd: - description: Access to Sell commands. - default: op - children: - divinity.sell.cmd.open: true - quantumrpg.sell.cmd.open: true - divinity.sell.cmd.open: - description: Access to /sell open command. - default: op - children: - quantumrpg.sell.cmd.open: true - divinity.sell.gui: - description: Access to Sell GUI. - default: op - children: - quantumrpg.sell.gui: true quantumrpg.sell: description: Full access to the Sell module. default: op @@ -969,30 +451,6 @@ permissions: default: op # Soulbound ---------------------------------------------------- - divinity.soulbound: - description: Access to Soulbound module. - default: op - children: - divinity.soulbound.cmd: true - quantumrpg.soulbound.cmd: true - divinity.soulbound.cmd: - description: Access to Soulbound commands. - default: op - children: - divinity.soulbound.cmd.soul: true - divinity.soulbound.cmd.untradeable: true - quantumrpg.soulbound.cmd.soul: true - quantumrpg.soulbound.cmd.untradeable: true - divinity.soulbound.cmd.soul: - description: Access to /soulbound soul command. - default: op - children: - quantumrpg.soulbound.cmd.soul: true - divinity.soulbound.cmd.untradeable: - description: Access to /soulbound untradeable command. - default: op - children: - quantumrpg.soulbound.cmd.untradeable: true quantumrpg.soulbound: description: Access to Soulbound module. default: op From f435222445b8deed9de14af60a036cb9c867eb71 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 24 Jul 2026 04:07:36 +0000 Subject: [PATCH 2/2] Preserve divinity.* permission aliases for backward compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous commit dropped both the Perms.has() dual-namespace shim AND the divinity.* permission declarations in plugin.yml, which would have broken any server whose permission plugin grants divinity.* nodes directly instead of quantumrpg.* ones. plugin.yml's divinity.* entries already alias to quantumrpg.* via Bukkit's native permission `children` mechanism (granting divinity.x automatically implies quantumrpg.x) — the same signal path the Java code now checks directly via Permissible#hasPermission(). Keep those declarations in plugin.yml unchanged; only the Java call sites change from the custom Perms.has() shim to native hasPermission(). This keeps existing divinity.* grants working with zero runtime cost and no admin action required. --- src/main/resources/plugin.yml | 550 +++++++++++++++++++++++++++++++++- 1 file changed, 546 insertions(+), 4 deletions(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 54147ce9..edf93db9 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -58,28 +58,38 @@ permissions: description: Bypass all item player requirements. default: op children: - divinity.bypass.class: true - divinity.bypass.level: true - divinity.bypass.soulbound: true - divinity.bypass.untradeable: true + quantumrpg.bypass.requirement: true + divinity.bypass.requirement.class: true + divinity.bypass.requirement.level: true + divinity.bypass.requirement.soulbound: true + divinity.bypass.requirement.untradeable: true divinity.bypass.requirement.level: description: Bypass item player level requirement. default: op + children: + quantumrpg.bypass.requirement.level: true divinity.bypass.requirement.class: description: Bypass item player class requirement. default: op + children: + quantumrpg.bypass.requirement.class: true divinity.bypass.requirement.soulbound: description: Bypass item player soulbound requirement. default: op + children: + quantumrpg.bypass.requirement.soulbound: true divinity.bypass.requirement.untradeable: description: Bypass item untradeable requirement. default: op + children: + quantumrpg.bypass.requirement.untradeable: true # Classes ---------------------------------------------------- divinity.classes: description: Full access to Classes module. default: op children: + quantumrpg.classes: true divinity.classes.cmd: true divinity.classes.class.*: true divinity.classes.cmd: @@ -93,13 +103,93 @@ permissions: divinity.classes.cmd.aspects: true divinity.classes.cmd.addexp: true divinity.classes.cmd.addlevel: true + divinity.classes.cmd.addskill: true + divinity.classes.cmd.addaspectpoints: true + divinity.classes.cmd.addskillpoints: true + divinity.classes.cmd.setclass: true + divinity.classes.cmd.reset: true + divinity.classes.cmd.resetaspectpoints: true + divinity.classes.cmd.resetskillpoints: true + quantumrpg.classes.cmd.addskill: true + quantumrpg.classes.cmd.addaspectpoints: true + quantumrpg.classes.cmd.addskillpoints: true + quantumrpg.classes.cmd.setclass: true + quantumrpg.classes.cmd.reset: true + quantumrpg.classes.cmd.resetaspectpoints: true + quantumrpg.classes.cmd.resetskillpoints: true + divinity.classes.cmd.cast: + description: Access to /class cast command. + default: op + children: + quantumrpg.classes.cmd.cast: true + divinity.classes.cmd.select: + description: Access to /class select command. + default: true + children: + quantumrpg.classes.cmd.select: true + divinity.classes.cmd.skills: + description: Access to /class skills command. + default: true + children: + quantumrpg.classes.cmd.skills: true + divinity.classes.cmd.stats: + description: Access to /class stats command. + default: true + children: + quantumrpg.classes.cmd.stats: true + divinity.classes.cmd.aspects: + description: Access to /class aspects command. + default: true + children: + quantumrpg.classes.cmd.aspects: true + divinity.classes.cmd.addexp: + description: Access to /class addexp command. + default: op + children: + quantumrpg.classes.cmd.addexp: true + divinity.classes.cmd.addlevel: + description: Access to /class addlevel command. + default: op + children: + quantumrpg.classes.cmd.addlevel: true + divinity.classes.cmd.addskill: + description: Access to /class addskill command. + default: op + children: quantumrpg.classes.cmd.addskill: true + divinity.classes.cmd.addaspectpoints: + description: Access to /class addaspectpoints command. + default: op + children: quantumrpg.classes.cmd.addaspectpoints: true + divinity.classes.cmd.addskillpoints: + description: Access to /class addskillpoints command. + default: op + children: quantumrpg.classes.cmd.addskillpoints: true + divinity.classes.cmd.setclass: + description: Access to /class setclass command. + default: op + children: quantumrpg.classes.cmd.setclass: true + divinity.classes.cmd.reset: + description: Access to /class reset command. + default: op + children: quantumrpg.classes.cmd.reset: true + divinity.classes.cmd.resetaspectpoints: + description: Access to /class resetaspectpoints command. + default: op + children: quantumrpg.classes.cmd.resetaspectpoints: true + divinity.classes.cmd.resetskillpoints: + description: Access to /class resetskillpoints command. + default: op + children: quantumrpg.classes.cmd.resetskillpoints: true + divinity.classes.class.*: + description: Access to all classes. + default: op quantumrpg.classes.cmd.cast: description: Access to /class cast command. default: op @@ -144,6 +234,23 @@ permissions: default: op # Combat Log ---------------------------------------------------- + divinity.combatlog: + description: Full access to Combat Log module. + default: op + children: + divinity.combatlog.cmd: true + quantumrpg.combatlog.cmd: true + divinity.combatlog.cmd: + description: Access to all Combat Log commands. + default: op + children: + divinity.combatlog.cmd.log: true + quantumrpg.combatlog.cmd.log: true + divinity.combatlog.cmd.log: + description: Access to /combatlog log command. + default: true + children: + quantumrpg.combatlog.cmd.log: true quantumrpg.combatlog: description: Full access to Combat Log module. default: op @@ -159,6 +266,30 @@ permissions: default: true # Dismantle ---------------------------------------------------- + divinity.dismantle: + description: Full access to the Dismantle module. + default: op + children: + divinity.dismantle.cmd: true + divinity.dismantle.gui: true + quantumrpg.dismantle.cmd: true + quantumrpg.dismantle.gui: true + divinity.dismantle.cmd: + description: Access to Dismantle commands. + default: op + children: + divinity.dismantle.cmd.open: true + quantumrpg.dismantle.cmd.open: true + divinity.dismantle.cmd.open: + description: Access to /dismantle open command. + default: op + children: + quantumrpg.dismantle.cmd.open: true + divinity.dismantle.gui: + description: Access to Dismantle GUI. + default: op + children: + quantumrpg.dismantle.gui: true quantumrpg.dismantle: description: Full access to the Dismantle module. default: op @@ -175,6 +306,50 @@ permissions: default: op # Essences ---------------------------------------------------- + divinity.essences: + description: Full access to Essences module. + default: op + children: + divinity.essences.cmd: true + divinity.essences.gui: true + quantumrpg.essences.cmd: true + quantumrpg.essences.gui: true + divinity.essences.cmd: + description: Access to all Essences commands. + default: op + children: + divinity.essences.cmd.merchant: true + divinity.essences.cmd.merchant.others: true + quantumrpg.essences.cmd.merchant: true + quantumrpg.essences.cmd.merchant.others: true + divinity.essences.cmd.merchant: + description: Access to /essences merchant command. + default: op + children: + quantumrpg.essences.cmd.merchant: true + divinity.essences.cmd.merchant.others: + description: Access to /essences merchant [player] command. + default: op + children: + quantumrpg.essences.cmd.merchant.others: true + divinity.essences.gui: + description: Access to all Essences GUIs. + default: op + children: + divinity.essences.gui.user: true + divinity.essences.gui.merchant: true + quantumrpg.essences.gui.user: true + quantumrpg.essences.gui.merchant: true + divinity.essences.gui.user: + description: Access to Default Socketing GUI. + default: op + children: + quantumrpg.essences.gui.user: true + divinity.essences.gui.merchant: + description: Access to Merchant Socketing GUI. + default: op + children: + quantumrpg.essences.gui.merchant: true quantumrpg.essences: description: Full access to Essences module. default: op @@ -209,6 +384,30 @@ permissions: default: op # Extractor ---------------------------------------------------- + divinity.extractor: + description: Full access to Extractor module. + default: op + children: + divinity.extractor.cmd: true + divinity.extractor.gui: true + quantumrpg.extractor.cmd: true + quantumrpg.extractor.gui: true + divinity.extractor.cmd: + description: Access to all Extractor commands. + default: op + children: + divinity.extractor.cmd.open: true + quantumrpg.extractor.cmd.open: true + divinity.extractor.cmd.open: + description: Access to /extractor open command. + default: op + children: + quantumrpg.extractor.cmd.open: true + divinity.extractor.gui: + description: Access Extractor GUI. + default: op + children: + quantumrpg.extractor.gui: true quantumrpg.extractor: description: Full access to Extractor module. default: op @@ -228,6 +427,30 @@ permissions: default: op # Fortify ---------------------------------------------------- + divinity.fortify: + description: Full access to Fortify module. + default: op + children: + divinity.fortify.cmd: true + quantumrpg.fortify.cmd: true + divinity.fortify.cmd: + description: Access to all Fortify commands. + default: op + children: + divinity.fortify.cmd.fortify: true + divinity.fortify.cmd.unfortify: true + quantumrpg.fortify.cmd.fortify: true + quantumrpg.fortify.cmd.unfortify: true + divinity.fortify.cmd.fortify: + description: Access to /fortify fortify command. + default: op + children: + quantumrpg.fortify.cmd.fortify: true + divinity.fortify.cmd.unfortify: + description: Access to /fortify unfortify command. + default: op + children: + quantumrpg.fortify.cmd.unfortify: true quantumrpg.fortify: description: Full access to Fortify module. default: op @@ -247,6 +470,50 @@ permissions: default: op # Gems ---------------------------------------------------- + divinity.gems: + description: Full access to Gems module. + default: op + children: + divinity.gems.cmd: true + divinity.gems.gui: true + quantumrpg.gems.cmd: true + quantumrpg.gems.gui: true + divinity.gems.cmd: + description: Access to all Gems commands. + default: op + children: + divinity.gems.cmd.merchant: true + divinity.gems.cmd.merchant.others: true + quantumrpg.gems.cmd.merchant: true + quantumrpg.gems.cmd.merchant.others: true + divinity.gems.cmd.merchant: + description: Access to /gems merchant command. + default: op + children: + quantumrpg.gems.cmd.merchant: true + divinity.gems.cmd.merchant.others: + description: Access to /gems merchant [player] command. + default: op + children: + quantumrpg.gems.cmd.merchant.others: true + divinity.gems.gui: + description: Access to all Gems GUIs. + default: op + children: + divinity.gems.gui.user: true + divinity.gems.gui.merchant: true + quantumrpg.gems.gui.user: true + quantumrpg.gems.gui.merchant: true + divinity.gems.gui.user: + description: Access to user socketing GUI. + default: op + children: + quantumrpg.gems.gui.user: true + divinity.gems.gui.merchant: + description: Access to Merchant socketing GUI. + default: op + children: + quantumrpg.gems.gui.merchant: true quantumrpg.gems: description: Full access to Gems module. default: op @@ -279,6 +546,23 @@ permissions: default: op # Identify ---------------------------------------------------- + divinity.identify: + description: Full access to Identify module. + default: op + children: + divinity.identify.cmd: true + quantumrpg.identify.cmd: true + divinity.identify.cmd: + description: Access to all Identify commands. + default: op + children: + divinity.identify.cmd.identify: true + quantumrpg.identify.cmd.identify: true + divinity.identify.cmd.identify: + description: Access to /identify identify command. + default: op + children: + quantumrpg.identify.cmd.identify: true quantumrpg.identify: description: Full access to Identify module. default: op @@ -294,6 +578,30 @@ permissions: default: op # Magic Dust ---------------------------------------------------- + divinity.magicdust: + description: Full access to Magic Dust module. + default: op + children: + divinity.magicdust.cmd: true + divinity.magicdust.gui: true + quantumrpg.magicdust.cmd: true + quantumrpg.magicdust.gui: true + divinity.magicdust.cmd: + description: Full access to Magic Dust commands. + default: op + children: + divinity.magicdust.cmd.open: true + quantumrpg.magicdust.cmd.open: true + divinity.magicdust.cmd.open: + description: Allows to use /magicdust open command. + default: op + children: + quantumrpg.magicdust.cmd.open: true + divinity.magicdust.gui: + description: Allows to use Magic Dust GUI. + default: op + children: + quantumrpg.magicdust.gui: true quantumrpg.magicdust: description: Full access to Magic Dust module. default: op @@ -313,6 +621,100 @@ permissions: default: op # Party ---------------------------------------------------- + divinity.party: + description: Access to Party module. + default: true + children: + divinity.party.cmd: true + quantumrpg.party.cmd: true + divinity.party.cmd: + description: Access to Party commands. + default: op + children: + divinity.party.cmd.chat: true + divinity.party.cmd.create: true + divinity.party.cmd.disband: true + divinity.party.cmd.drop: true + divinity.party.cmd.exp: true + divinity.party.cmd.invite: true + divinity.party.cmd.join: true + divinity.party.cmd.kick: true + divinity.party.cmd.leave: true + divinity.party.cmd.menu: true + divinity.party.cmd.roll: true + divinity.party.cmd.tp: true + quantumrpg.party.cmd.chat: true + quantumrpg.party.cmd.create: true + quantumrpg.party.cmd.disband: true + quantumrpg.party.cmd.drop: true + quantumrpg.party.cmd.exp: true + quantumrpg.party.cmd.invite: true + quantumrpg.party.cmd.join: true + quantumrpg.party.cmd.kick: true + quantumrpg.party.cmd.leave: true + quantumrpg.party.cmd.menu: true + quantumrpg.party.cmd.roll: true + quantumrpg.party.cmd.tp: true + divinity.party.cmd.chat: + description: Access to /party chat command. + default: true + children: + quantumrpg.party.cmd.chat: true + divinity.party.cmd.create: + description: Access to /party create command. + default: true + children: + quantumrpg.party.cmd.create: true + divinity.party.cmd.disband: + description: Access to /party disband command. + default: true + children: + quantumrpg.party.cmd.disband: true + divinity.party.cmd.drop: + description: Access to /party drop command. + default: true + children: + quantumrpg.party.cmd.drop: true + divinity.party.cmd.exp: + description: Access to /party exp command. + default: true + children: + quantumrpg.party.cmd.exp: true + divinity.party.cmd.invite: + description: Access to /party invite command. + default: true + children: + quantumrpg.party.cmd.invite: true + divinity.party.cmd.join: + description: Access to /party join command. + default: true + children: + quantumrpg.party.cmd.join: true + divinity.party.cmd.kick: + description: Access to /party kick command. + default: true + children: + quantumrpg.party.cmd.kick: true + divinity.party.cmd.leave: + description: Access to /party leave command. + default: true + children: + quantumrpg.party.cmd.leave: true + divinity.party.cmd.menu: + description: Access to /party menu command. + default: true + children: + quantumrpg.party.cmd.menu: true + divinity.party.cmd.roll: + description: Access to /party roll command. + default: true + children: + quantumrpg.party.cmd.roll: true + divinity.party.cmd.tp: + description: Access to /party tp command. + default: true + children: + quantumrpg.party.cmd.tp: true quantumrpg.party: description: Access to Party module. default: true @@ -372,6 +774,30 @@ permissions: default: true # Refine ---------------------------------------------------- + divinity.refine: + description: Access to Refine module. + default: op + children: + divinity.refine.cmd: true + quantumrpg.refine.cmd: true + divinity.refine.cmd: + description: Access to Refine commands. + default: op + children: + divinity.refine.cmd.refine: true + divinity.refine.cmd.downgrade: true + quantumrpg.refine.cmd.refine: true + quantumrpg.refine.cmd.downgrade: true + divinity.refine.cmd.refine: + description: Access to /refine refine command. + default: op + children: + quantumrpg.refine.cmd.refine: true + divinity.refine.cmd.downgrade: + description: Access to /refine downgrade command. + default: op + children: + quantumrpg.refine.cmd.downgrade: true quantumrpg.refine: description: Access to Refine module. default: op @@ -385,6 +811,30 @@ permissions: quantumrpg.refine.cmd.downgrade: true # Repair ---------------------------------------------------- + divinity.repair: + description: Access to Repair module. + default: op + children: + divinity.repair.cmd: true + divinity.repair.gui: true + quantumrpg.repair.cmd: true + quantumrpg.repair.gui: true + divinity.repair.cmd: + description: Access to Repair commands. + default: op + children: + divinity.repair.cmd.open: true + quantumrpg.repair.cmd.open: true + divinity.repair.cmd.open: + description: Access to /repair open command. + default: op + children: + quantumrpg.repair.cmd.open: true + divinity.repair.gui: + description: Access to Repair GUI. + default: op + children: + quantumrpg.repair.gui: true quantumrpg.repair: description: Access to Repair module. default: op @@ -401,6 +851,50 @@ permissions: default: op # Runes ---------------------------------------------------- + divinity.runes: + description: Full access to Runes module. + default: op + children: + divinity.runes.cmd: true + divinity.runes.gui: true + quantumrpg.runes.cmd: true + quantumrpg.runes.gui: true + divinity.runes.cmd: + description: Access to all Runes commands. + default: op + children: + divinity.runes.cmd.merchant: true + divinity.runes.cmd.merchant.others: true + quantumrpg.runes.cmd.merchant: true + quantumrpg.runes.cmd.merchant.others: true + divinity.runes.cmd.merchant: + description: Access to /runes merchant command. + default: op + children: + quantumrpg.runes.cmd.merchant: true + divinity.runes.cmd.merchant.others: + description: Access to /runes merchant [player] command. + default: op + children: + quantumrpg.runes.cmd.merchant.others: true + divinity.runes.gui: + description: Access to all Runes GUIs. + default: op + children: + divinity.runes.gui.user: true + divinity.runes.gui.merchant: true + quantumrpg.runes.gui.user: true + quantumrpg.runes.gui.merchant: true + divinity.runes.gui.user: + description: Access to Default Socketing GUI. + default: op + children: + quantumrpg.runes.gui.user: true + divinity.runes.gui.merchant: + description: Access to Merchant Socketing GUI. + default: op + children: + quantumrpg.runes.gui.merchant: true quantumrpg.runes: description: Full access to Runes module. default: op @@ -435,6 +929,30 @@ permissions: default: op # Sell ---------------------------------------------------- + divinity.sell: + description: Full access to the Sell module. + default: op + children: + divinity.sell.cmd: true + divinity.sell.gui: true + quantumrpg.sell.cmd: true + quantumrpg.sell.gui: true + divinity.sell.cmd: + description: Access to Sell commands. + default: op + children: + divinity.sell.cmd.open: true + quantumrpg.sell.cmd.open: true + divinity.sell.cmd.open: + description: Access to /sell open command. + default: op + children: + quantumrpg.sell.cmd.open: true + divinity.sell.gui: + description: Access to Sell GUI. + default: op + children: + quantumrpg.sell.gui: true quantumrpg.sell: description: Full access to the Sell module. default: op @@ -451,6 +969,30 @@ permissions: default: op # Soulbound ---------------------------------------------------- + divinity.soulbound: + description: Access to Soulbound module. + default: op + children: + divinity.soulbound.cmd: true + quantumrpg.soulbound.cmd: true + divinity.soulbound.cmd: + description: Access to Soulbound commands. + default: op + children: + divinity.soulbound.cmd.soul: true + divinity.soulbound.cmd.untradeable: true + quantumrpg.soulbound.cmd.soul: true + quantumrpg.soulbound.cmd.untradeable: true + divinity.soulbound.cmd.soul: + description: Access to /soulbound soul command. + default: op + children: + quantumrpg.soulbound.cmd.soul: true + divinity.soulbound.cmd.untradeable: + description: Access to /soulbound untradeable command. + default: op + children: + quantumrpg.soulbound.cmd.untradeable: true quantumrpg.soulbound: description: Access to Soulbound module. default: op