-
- Notifications
You must be signed in to change notification settings - Fork 1k
Description
Currently, command-costs
and command-cooldowns
are separate and behave slightly differently - command-costs
only supports EssentialsX's own commands and doesn't support regexes, while command-cooldowns
supports external plugins commands but doesn't ensure that the command succeeds before setting the cooldown.
The new filters system could be implemented in a separate config, which is a list of filters that contain the following options:
name
(optional): a name for the filter, allowing perms to bypass specific filters (as well as allowing us to track cooldowns in player data; if none is provided then we can auto generate a name)command
(required unlesspattern
is provided): the name of an EssentialsX command; these filters will ensure that the command succeeds before charging the player or starting the cooldownpattern
(required unlesscommand
is provided): a regex to match any plugin's command against; these filters will not check whether the command succeedscooldown
(optional): the length of time that the player will have to wait until they can use a command matching this filter again, in secondscost
(optional): the amount that will be deducted from the player's economy balance when they use the command
An example looks something like this:
filters: - pattern: "ban([^ip])(.*)?" # regex - doesn't ensure success cooldown: 60 - command: "warp" # EssentialsX built-in command - ensures success before deducting cost and starting cooldown cost: 100 cooldown: 10 - name: "projectiles" # option pattern: "(fireball|kittycannon|beezooka)" cost: 10000
The use of a command
or pattern
parameter instead of a map key also avoids a bug with the current command-cooldowns
where any regex pattern that includes .
fails to parse due to YAML syntax errors.
It would be ideal to also migrate over old cooldowns to the new system (similar to how kits were done).