Paid signs
The paid-signs plugin is a plugin that lets you add costs for creating plugin signs. This allows restricting usage of signs such as CraftBook's gate/lift and other signs while still allowing every player to use the signs.
Note: OP players, and players with the '*' permission will have the paidsigns.paymentexempt permission and will not
see any payment messages. For testing, you'll need to un-set the paidsigns.paymentexempt permission.
Limitations
As this plugin only listens to sign change events, there are some limitations:
- The plugin is not aware of whether the creation of a sign is successful
 - It is assumed that any protection plugins run before this plugin, but it's not guaranteed
 - Plugins changing the lines on signs when successful might create confusion and mismatches
 
Commands
- /addpaidsign [permission] [ignore case] [ignore color] [match any condition]
 - /addpaidsigncondition <name (of a paid sign)> [executeRegEx] [ignoreCase] [ignoreColor]
 - /listpaidsigns [name (of a paid sign)] [line number]
 - /removepaidsigncondition <name (of a paid sign)>
 - /removepaidsign <name (of a paid sign)>
 - /reload
 
Command explanation
/addpaidsign
This command adds a new paid sign that does nothing until a condition is added.
- name - A recognizable name only used to differentiate between registered paid signs
 - cost - The cost a player need to pay to create any sign matching the paid sign
 - permission - If the paid sign is used to represent a plugin sign, the permission should be the permission necessary for creating the plugin sign. This is used to decide if the plugin sign was created, or the player was denied.
 - ignore case - Whether any conditions of the paid sign should ignore case by default, when matching against text ( default uses the config file value).
 - ignore color - Whether any condition of the paid sign should ignore color by default, when matching against text ( default uses the config file value).
 - match any condition - Whether to trigger a paid sign match if a single one of the sign's conditions is true. This is mainly useful if several lines may contain the match string, or if trying to match a word.
 
/addpaidsigncondition
This adds a condition to a paid sign which is used to decide if a sign created by a player matches the paid sign. Adding a paid sign condition to a line that already has one will replace the previous condition.
- name - The name of the paid sign to add the condition to
 - line number - The line on the sign (1-4) to search for any matches
 - string to match - The string or regular expression to look for on a sign
 - executeRegEx - Whether to use a regular expression match instead of looking for the exact string
 - ignoreCase - Whether this condition should ignore case when trying to match the string (default uses the "parent" sign's value)
 - ignoreColor - Whether this condition should ignore color when trying to match the string (default uses the "parent" sign's value)
 
/listpaidsigns
This lists registered paid signs and paid sign conditions. No arguments will print a list of paid signs
- name - The name of the paid sign to see information about
 - line number - The line number of the condition to see information about
 
/removepaidsigncondition
Removes a paid sign condition from a sign
- name - The name of the paid sign to remove the condition from
 - line number - The line the condition is associated with
 
/removepaidsign
Removes a registered paid sign
- name - The name of the paid sign to remove
 
Permissions
- paidsigns.* - Grants all paid signs permissions
 - paidsigns.manage - Grants the permission to add/remove a paid sign
 - paidsigns.reload - Grants the permissions to reload the plugin
 - paidsigns.paymentexempt - Makes this player exempt from the cost of paid signs
 
Configuration options
- language - The language to use for all messages displayed to players
 - ignoreCase - Whether to ignore the case (lowercase/uppercase) of the paid sign text. The option can be set on a per-sign basis, but this value is used if not specified. The correct value depends on whether the plugin signs it should match are case-sensitive or not.
 - ignoreColor - Whether to ignore any color or formatting applied to the text when trying to match a paid sign's text. The option can be set on a per-sign basis, but this value is used if not specified. The correct value depends on whether the plugin signs it should match allow coloring or not.
 - refundsEnabled - Whether to enable refunds to the sign creator when a sign detected as a paid sign is broken (payment will always go to the original creator)
 - refundPercentage - The percentage of the paid sign cost to refund (0-100)
 - refundAlways - Whether to refund when signs that players have paid for are broken by anything. This includes tnt, creepers, pistons and similar