Rules & Scanning Troubleshooting
Diagnostic Flow — "Rule not triggering / wrong items confiscated"
- Enable
Debug: [scan, operator]and check console output - Check rule has a unique
name(globally unique across ALL.rsfiles) - Check material name matches (case-sensitive, UPPER_CASE Bukkit names)
- Check global
Ignoresettings aren't suppressing the scan
Common Mistakes
- NEVER ship new scan rules with destructive actions enabled by default — Rules using
then confiscate,then strip-nbt, orthen strip-attributesmust ALWAYS be commented out inrules/main.rswhen shipped as defaults. Most Minecraft servers use custom items, RPG plugins, or custom enchantments that would be destroyed by aggressive rules. New rules should be provided as commented-out examples for admins to enable manually. Similarly, new scan triggers (e.g. Gamemode_Change, Creative_Click) must default tofalseinsettings.yml. This was learned the hard way in 2.7.1 → hotfixed in 2.7.3. then confiscate excessMUST be paired withignore inventory amount— without the amount threshold, excess confiscation has no reference point. Users report "confiscated everything instead of excess"- mcMMO items with "mcMMO Ability Tool" lore are auto-skipped — the plugin also checks
McMMOHook.isUsingAbility(). Users report "mcMMO items not being scanned" — this is intentional - Rule names must be globally unique across ALL
.rsfiles — not just within one file. Duplicate names silently override earlier rules Custom_Persistent_Tags: trueis the fix for custom plugin items being confiscated — many plugins add persistent data tags to items. Enable this to skip items with custom tags. Use/protect iteminfo nbtto inspect items- Debug
[scan]shows "Checking rule" not "Matched rule" — the scan debug fires when the material pattern matches (match *= every item), NOT when the item violates the rule. The actual violation check iscanFilter()which runs after. If users see all rules listed for all items, this is normal — addoperatorto Debug to see the actual filtering logic - 1.20.5+
max_stack_sizecomponent bypassescheck stack size— hacked items can set a custommax_stack_sizecomponent (e.g. 99 on TOTEM_OF_UNDYING). Protect must compare againstMaterial.getMaxStackSize()(vanilla default), notItemStack.getMaxStackSize()(respects hacked component). Fixed in PR #72. Theover-64rule withrequire amount 65can independently catch these items since it doesn't usecheck stack size