fancynpcs: Add permissions for adding action types

This commit is contained in:
Oliver
2025-09-14 10:49:48 +02:00
parent f5107067d1
commit 2dad4bc692
3 changed files with 44 additions and 5 deletions

View File

@@ -211,28 +211,36 @@ Learn more about actions and triggers in the [Action System](../tutorials/action
Adds an action to the specified NPC's trigger. Adds an action to the specified NPC's trigger.
- **Syntax**: `/npc action (npc) (trigger) add (actionType) [value]` - **Syntax**: `/npc action (npc) (trigger) add (actionType) [value]`
- **Permissions**: `fancynpcs.command.npc.action.add` - **Permissions**:
- `fancynpcs.command.npc.action.add`
- and `fancynpcs.command.npc.action.(actionType)` for the specific action type
### Add action before ### Add action before
Adds an action before the specified index in the NPC's action list for the given trigger. Adds an action before the specified index in the NPC's action list for the given trigger.
- **Syntax**: `/npc action (npc) (trigger) add_before (index) (actionType) [value]` - **Syntax**: `/npc action (npc) (trigger) add_before (index) (actionType) [value]`
- **Permissions**: `fancynpcs.command.npc.action.addBefore` - **Permissions**:
- `fancynpcs.command.npc.action.addBefore`
- and `fancynpcs.command.npc.action.(actionType)` for the specific action type
### Add action after ### Add action after
Adds an action after the specified index in the NPC's action list for the given trigger. Adds an action after the specified index in the NPC's action list for the given trigger.
- **Syntax**: `/npc action (npc) (trigger) add_after (index) (actionType) [value]` - **Syntax**: `/npc action (npc) (trigger) add_after (index) (actionType) [value]`
- **Permissions**: `fancynpcs.command.npc.action.addAfter` - **Permissions**:
- `fancynpcs.command.npc.action.addAfter`
- and `fancynpcs.command.npc.action.(actionType)` for the specific action type
### Set action ### Set action
Sets an action at the specified number in the NPC's action list for the given trigger. Sets an action at the specified number in the NPC's action list for the given trigger.
- **Syntax**: `/npc action (npc) (trigger) set (number) (actionType) [value]` - **Syntax**: `/npc action (npc) (trigger) set (number) (actionType) [value]`
- **Permissions**: `fancynpcs.command.npc.action.set` - **Permissions**:
- `fancynpcs.command.npc.action.set`
- and `fancynpcs.command.npc.action.(actionType)` for the specific action type
### Remove action ### Remove action

View File

@@ -1 +1 @@
2.7.1.293 2.7.1.294

View File

@@ -34,6 +34,10 @@ public enum ActionCMD {
final @NotNull NpcAction actionType, final @NotNull NpcAction actionType,
final @Nullable @Greedy String value final @Nullable @Greedy String value
) { ) {
if (!checkAddPermissions(sender, actionType)) {
return;
}
if (actionType.requiresValue() && (value == null || value.isEmpty())) { if (actionType.requiresValue() && (value == null || value.isEmpty())) {
translator translator
.translate("npc_action_requires_value") .translate("npc_action_requires_value")
@@ -65,6 +69,10 @@ public enum ActionCMD {
final @NotNull NpcAction actionType, final @NotNull NpcAction actionType,
final @Nullable @Greedy String value final @Nullable @Greedy String value
) { ) {
if (!checkAddPermissions(sender, actionType)) {
return;
}
if (actionType.requiresValue() && (value == null || value.isEmpty())) { if (actionType.requiresValue() && (value == null || value.isEmpty())) {
translator translator
.translate("npc_action_requires_value") .translate("npc_action_requires_value")
@@ -98,6 +106,10 @@ public enum ActionCMD {
final @NotNull NpcAction actionType, final @NotNull NpcAction actionType,
final @Nullable @Greedy String value final @Nullable @Greedy String value
) { ) {
if (!checkAddPermissions(sender, actionType)) {
return;
}
if (actionType.requiresValue() && (value == null || value.isEmpty())) { if (actionType.requiresValue() && (value == null || value.isEmpty())) {
translator translator
.translate("npc_action_requires_value") .translate("npc_action_requires_value")
@@ -131,6 +143,10 @@ public enum ActionCMD {
final @NotNull NpcAction actionType, final @NotNull NpcAction actionType,
final @Nullable @Greedy String value final @Nullable @Greedy String value
) { ) {
if (!checkAddPermissions(sender, actionType)) {
return;
}
if (actionType.requiresValue() && (value == null || value.isEmpty())) { if (actionType.requiresValue() && (value == null || value.isEmpty())) {
translator translator
.translate("npc_action_requires_value") .translate("npc_action_requires_value")
@@ -303,6 +319,21 @@ public enum ActionCMD {
return newActions; return newActions;
} }
private boolean checkAddPermissions(final CommandSender sender, final NpcAction action) {
boolean hasGeneralPerms = sender.hasPermission("fancynpcs.command.npc.action.add.*");
boolean hasSpecificPerms = sender.hasPermission("fancynpcs.command.npc.action.add." + action.getName());
if (hasGeneralPerms || hasSpecificPerms) {
return true;
}
translator
.translate("action_missing_permissions")
.send(sender);
return false;
}
/* PARSERS AND SUGGESTIONS */ /* PARSERS AND SUGGESTIONS */