- New | Added
#tagsyntax inmatchpatterns for Minecraft item/block tags. Use vanilla tag names like#swords,#enchantable/durability, or#anvilto match item groups instead ofmatch *. Tags resolve at plugin load for O(1) matching. Combine with materials:match #swords|TRIDENT. See Minecraft Wiki for all available tags. Requires MC 1.13+- New | Added per-rule
ignore displayname,ignore lore, andignore modeldataoperators. Whitelist specific items without relying on the global Ignore settings insettings.yml. Supports wildcard matching- Fix | Solved "IllegalArgumentException: Specified enchantment cannot be applied to this itemstack" when nerfing hacked items with enchantments not applicable to that item type (e.g. Sharpness on boots)
- Fix | Fixed
then confiscate excesscombined withcheck stack sizenot removing excess items from per-slot stacks whenignore inventory amountwas not set. Items with hackedmax_stack_sizecomponents (e.g. 99x Totem of Undying) are now properly reduced to vanilla limits- Fix | Fixed
/protect iteminfoshowing empty output when run from console instead of in-game
- Fix | The new scan rules shipped in 2.7.1 (enchant-conflicting, unbreakable, attribute-modified) are now disabled by default. They are still available as commented-out examples in
rules/main.rs.- Fix | The new Gamemode_Change and Creative_Click scan triggers now default to
falseinsettings.yml.
- Fix | Solved "IllegalArgumentException" crash when loading confiscated items with Infinity/NaN attribute modifier amounts from the database (hacked items)
- Fix | Fixed misleading "Matched rule" debug message — renamed to "Checking rule" since it only indicates the material pattern matched, not that the item violated the rule
- Fix | Fixed
check stack sizeoperator not catching exploited items with custommax_stack_sizecomponent on 1.20.5+ (e.g. Totem of Undying stacked to 99)
- New | Added
check enchant conflictingoperator — detects mutually exclusive enchantments on the same item (e.g. Sharpness + Smite). Enabled by default inmain.rs.- New | Added
check unbreakableoperator — detects the unbreakable flag on items. Enabled by default withthen strip-nbt.- New | Added
check attribute modifiedandrequire attribute valueoperators — detects custom attribute modifiers (damage, speed, etc.) above a configurable threshold. Enabled by default at value 100.- New | Added
then strip-attributesaction — removes all custom attribute modifiers from an item while keeping it intact.- New | Added
then strip-nbtaction — strips all NBT data from an item, keeping only the material type and stack amount.- New | Added Creative Click scan trigger — scans inventory when players interact with creative mode inventory (Saved Hotbars, NBT editors). Configurable in
settings.ymlunderScan.Creative_Click.- New | Added Gamemode Change scan trigger — scans with a 2-tick delay when switching gamemodes (catches F3+F4). Configurable in
settings.ymlunderScan.Gamemode_Change.- New | Added Item Pickup scan trigger — scans on item pickup. Disabled by default for performance. Configurable in
settings.ymlunderScan.Item_Pickup.- Fix | Fixed periodic scan task not restarting after
/protect reload.
- Fix | Fixed
then cloneduplicating items when combined withthen confiscate excess— the clone handler now preserves reduced item amounts instead of restoring originals- Fix | Fixed
ignore inventory amountandthen confiscate excesscounting all items of the same material type instead of respectingrequire nameandrequire loreconditions. Rules for different custom items sharing a material (e.g. two types of TRIPWIRE_HOOK keys) now count independently- Fix | Solved "ArrayIndexOutOfBoundsException: Index 68 out of bounds for length 68" when scanning inventories with containers open
- Improve | Fixed overall grammar and spelling throughout the plugin
- Improve | Folia compatibility for entity-bound scheduling
- Improve | Citizens and DiscordSRV hooks now load via their own classloaders
- Fix | Solved NPE when serializing operator options containing Permission or Component objects
- Fix | Database row logging no longer dumps full data blobs into console
