- Improve | Corrected a two default localization keys for ranged chat having trailing single quotes around them.
- Improve | Added a check that sender is a player for the default JavaScript variable to avoid Discord-side errors.
- Fix | Solved "then abort" rule operator not working for individual rules, only for groups.
- Fix | Fixed a rare concurrency issues with JavaScript variables not being replaced.
- Fix | Solved some commands sending "Unknown command" message to the player if he did not have the appropriate command permission.
- Improve | Rewritten many error reports throughout the plugin to make them extremely clear where the problem is, such that when you have a broken javascript code you can easily fix it. Example:
- Misc | No longer force javascript code to run synchronized.
- New | Now supports tagging display names of players alongside their names and nicks in @ sound notify feature!
- Improve | If you set Tag.Backward_Compatible we will now listen to Essentials updating a player nick and update the nick in our own database as well. This makes work sound notify tagging when you don't use our nick system.
- New | Added "require npc" and "ignore npc" for death messages.
- Improve | Much better handling of errors in JavaScripts and improved support for PlaceholderAPI in them.
An example of not sending any death message when a player kills an NPC player (place this rule to messages/death.rs):
Code:group citizens-npc require npc then abort
- New | You can now completely customize the header of items being listed.
- These are the new keys in your localization/messages_x.yml file inside the Commands section that will be automatically updated to your file:
- Example customization of /ignore list:
- Fix | Solved header of some commands overflowing the "----" on multiple lines.
- Improve | Less false positives with the default domain filtering rule. As always, we do not update rules so if you wish to implement this change you can edit your rule in rules/global.rs and change the match to:
match [a-zA-Z0-9\-\.\*]+\s?(\.|\|dot|\(dot\)|-|\(\\)|;|:|,)\s?(c(| +)o(| +)m|o(| +)r(| +)g|n(| +)e(| +)t|(?<! )c(| +)z|(?<! )c(| +)o|(?<! )u(| +)k|(?<! )s(| +)k|b(| +)i(| +)z|(?<! )m(| +)o(| +)b(| +)i|(?<! )x(| +)x(| +)x|(?<! )e(| +)u|(?<! )m(| +)e|(?<! )i(| +)o|(?<! )o(| +)n(| +)l(| +)i(| +)n(| +)e|(?<! )x(| +)y(| +)z|(?<! )f(| +)r|(?<! )b(| +)e|(?<! )d(| +)e|(?<! )c(| +)a|(?<! )a(| +)l|(?<! )a(| +)i|(?<! )d(| +)e(| +)v|(?<! )a(| +)p(| +)p|(?<! )i(| +)n|(?<! )i(| +)s|(?<! )g(| +)g|(?<! )t(| +)o|(?<! )p(| +)h|(?<! )n(| +)l|(?<! )i(| +)d|(?<! )i(| +)n(| +)c|(?<! )u(| +)s|(?<! )p(| +)w|(?<! )p(| +)r(| +)o|(?<! )t(| +)v|(?<! )c(| +)x|(?<! )m(| +)x|(?<! )f(| +)m|(?<! )c(| +)c|(?<! )v(| +)i(| +)p|(?<! )f(| +)u(| +)n|(?<! )i(| +)c(| +)u)\b
