config.yml:
Code (Text):
# Configuration for permission groups.
# Players will be checked for permissions in order (top to bottom).
# The first group they have permission for will be their applied limit group.
# inventoryfilters.group.default, inventoryfilters.group.vip, etc.
# Configuration for permission groups.
# context limiter
# Players will be checked for permissions to select presets (PREMUM ONLY)
# Permission example : inventoryfilters.preset.<preset_id>
PresetRequirePermission: true
autopickup:
enabled: true
# Limit the use of the filter to certain regions or disable it in certain worlds/regions.
context-limiter:
enabled: true
# Disable plugin in these worlds
worlds-blacklist: []
# WorldGuard-based region control
worldguard:
enabled: true
# Mode controls default behavior:
# - blacklist: disable inside any listed region
# - whitelist: enable only inside listed regions (blacklist still overrides)
mode: blacklist
# Region ids (as shown by WorldGuard)
blacklist: [ "if-disabled", "no-invfilter" ]
whitelist: []
# Permission groups and their limits (PREMIUM ONLY)
permission-groups:
default:
max-saved-filters: 3
max-filter-entries: 10
vip:
max-saved-filters: 8
max-filter-entries: 25
staff:
max-saved-filters: 15
max-filter-entries: 50
# NBT Rarity Configuration for nbt_data filter (it is reccomended to have less than 10 levels for easy of management)
rarities:
COMMON:
name: "COMMON"
value: 1
UNCOMMON:
name: "UNCOMMON"
value: 2
RARE:
name: "RARE"
value: 3
EPIC:
name: "EPIC"
value: 4
LEGENDARY:
name: "LEGENDARY"
value: 5
# NBT path to check for rarity values
nbt-path: "MMOITEMS_TIER"
sounds.yml:
Code (Text):
groups:
commands:
success:
- sound: ENTITY_EXPERIENCE_ORB_PICKUP
category: MASTER
volume: 0.8
pitch: 1.2
error:
- sound: BLOCK_NOTE_BLOCK_BASS
category: MASTER
volume: 1.0
pitch: 0.6
gui:
open:
- sound: UI_BUTTON_CLICK
category: MASTER
volume: 0.7
pitch: 1.1
click:
- sound: UI_BUTTON_CLICK
category: MASTER
volume: 0.7
pitch: 1.0
close:
- sound: UI_BUTTON_CLICK
category: MASTER
volume: 0.7
pitch: 0.9
menu:
hover:
- sound: UI_BUTTON_CLICK
category: MASTER
volume: 0.3
pitch: 1.5
select:
- sound: UI_BUTTON_CLICK
category: MASTER
volume: 0.8
pitch: 1.2
back:
- sound: UI_BUTTON_CLICK
category: MASTER
volume: 0.6
pitch: 0.8
delete:
- sound: ENTITY_ITEM_FRAME_REMOVE_ITEM
category: MASTER
volume: 0.8
pitch: 0.9
confirm:
- sound: BLOCK_NOTE_BLOCK_PLING
category: MASTER
volume: 0.9
pitch: 1.3
cancel:
- sound: BLOCK_NOTE_BLOCK_BASS
category: MASTER
volume: 0.7
pitch: 0.7
page:
- sound: ITEM_BOOK_PAGE_TURN
category: MASTER
volume: 0.8
pitch: 1.0
edit:
- sound: ITEM_BOOK_PUT
category: MASTER
volume: 0.7
pitch: 1.1
toggle:
- sound: BLOCK_LEVER_CLICK
category: MASTER
volume: 0.8
pitch: 1.0
filter:
toggle:
- sound: BLOCK_LEVER_CLICK
category: MASTER
volume: 0.8
pitch: 1.0
apply:
- sound: BLOCK_NOTE_BLOCK_PLING
category: MASTER
volume: 1.0
pitch: 1.2
change_type:
- sound: BLOCK_DISPENSER_DISPENSE
category: MASTER
volume: 0.7
pitch: 1.1
change_mode:
- sound: BLOCK_PISTON_EXTEND
category: MASTER
volume: 0.6
pitch: 1.2
entries:
add:
- sound: ENTITY_ITEM_PICKUP
category: MASTER
volume: 0.8
pitch: 1.1
remove:
- sound: ENTITY_ITEM_FRAME_REMOVE_ITEM
category: MASTER
volume: 0.9
pitch: 0.9
edit:
- sound: ITEM_BOOK_PUT
category: MASTER
volume: 0.7
pitch: 1.0
clear:
- sound: ENTITY_GENERIC_EXTINGUISH_FIRE
category: MASTER
volume: 0.8
pitch: 1.0
rarity:
change:
- sound: BLOCK_AMETHYST_BLOCK_CHIME
category: MASTER
volume: 0.8
pitch: 1.2
toggle:
- sound: BLOCK_ENCHANTMENT_TABLE_USE
category: MASTER
volume: 0.7
pitch: 1.0
disable:
- sound: BLOCK_FIRE_EXTINGUISH
category: MASTER
volume: 0.6
pitch: 0.8
presets:
apply:
- sound: UI_TOAST_CHALLENGE_COMPLETE
category: MASTER
volume: 0.8
pitch: 1.0
select:
- sound: ENTITY_VILLAGER_YES
category: MASTER
volume: 0.7
pitch: 1.1
browse:
- sound: ITEM_BOOK_PAGE_TURN
category: MASTER
volume: 0.6
pitch: 1.0
admin:
reload:
- sound: BLOCK_ENCHANTMENT_TABLE_USE
category: MASTER
volume: 0.9
pitch: 1.1
setfilter:
- sound: ENTITY_VILLAGER_WORK_CARTOGRAPHER
category: MASTER
volume: 0.8
pitch: 1.0
debug:
- sound: BLOCK_COMPARATOR_CLICK
category: MASTER
volume: 0.7
pitch: 1.3
PREMIUM ONLY:
messages.yml:
Code (Text):
# messages.yml
# InventoryFilters Messages Configuration
# Use MiniMessage format for rich text formatting
# NOTE: Keys and values are unchanged; this file is only reorganized for clarity.
# ───────────────────────────────────────────────────────────────────────────────
# PREFIXES — Shared prefixes for normal and error feedback.
# ───────────────────────────────────────────────────────────────────────────────
prefix: "<gradient:#FFD700:#FFA500><hover:show_text:'Click to see InventoryFilters help'><click:run_command:'/if help'>[IF]</click></hover></gradient> "
error-prefix: "<gradient:#FF0000:#CC0000>[IF | Error]</gradient> "
# ───────────────────────────────────────────────────────────────────────────────
# HELP — Player-facing help lines for /if.
# ───────────────────────────────────────────────────────────────────────────────
help-header: "<gradient:#FFD700:#FFA500>═══ InventoryFilters Commands ═══</gradient>"
help-toggle: "<yellow><click:run_command:'/if'><hover:show_text:'<yellow>Click to toggle filter on/off</yellow>'>/if</hover></click> - Toggle filter on/off</yellow>"
help-filter: "<yellow><click:run_command:'/if filter'><hover:show_text:'<yellow>Click to cycle through filter types</yellow>'>/if filter</hover></click> - Cycle through filter types</yellow>"
help-mode: "<yellow><click:run_command:'/if mode'><hover:show_text:'<yellow>Click to toggle between whitelist/blacklist</yellow>'>/if mode</hover></click> - Toggle between whitelist/blacklist</yellow>"
help-edit: "<yellow><click:run_command:'/if edit'><hover:show_text:'<yellow>Click to open filter editor GUI</yellow>'>/if edit</hover></click> - Open filter editor GUI</yellow>"
help-add: "<yellow><click:suggest_command:'/if add'><hover:show_text:'<yellow>Hold an item and click to add it</yellow>'>/if add</hover></click> - Add held item to filter</yellow>"
help-save: "<yellow><click:suggest_command:'/if save '><hover:show_text:'<yellow>Click to start typing save command</yellow>'>/if save <name></hover></click> - Save current filter</yellow>"
help-load: "<yellow><click:suggest_command:'/if load '><hover:show_text:'<yellow>Click to start typing load command</yellow>'>/if load <name></hover></click> - Load saved filter</yellow>"
help-presets: "<yellow><click:run_command:'/if presets'><hover:show_text:'<yellow>Click to browse filter presets</yellow>'>/if presets</hover></click> - Browse filter presets</yellow>"
help-select: "<yellow><click:run_command:'/if select'><hover:show_text:'<yellow>Click to browse saved filters</yellow>'>/if select</hover></click> - Browse saved filters</yellow>"
help-rarity: "<yellow><click:run_command:'/if rarity'><hover:show_text:'<yellow>Click to toggle rarity filter</yellow>'>/if rarity</hover></click> - Toggle rarity filter</yellow>"
help-cycle: "<yellow><click:run_command:'/ifc'><hover:show_text:'<yellow>Click to cycle rarity levels</yellow>'>/ifc</hover></click> - Cycle rarity levels</yellow>"
help-footer: "<gray><hover:show_text:'<yellow>Hover over commands for more info</yellow>'>Hover over commands for more information</hover>.</gray>"
# ───────────────────────────────────────────────────────────────────────────────
# FILTER CORE — Toggling, type/mode changes, and rarity toggles.
# ───────────────────────────────────────────────────────────────────────────────
filter-type-changed: "<green>Filter type changed to <click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to open filter editor</yellow>'><yellow><bold><type></bold></yellow></hover></click>. Settings have been reset.</green>"
filter-enabled: "<green>Filter <click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to configure your filter</yellow>'><bold>activated</bold></hover></click>.</green>"
filter-disabled: "<red>Filter <click:suggest_command:'/if'><hover:show_text:'<yellow>Click to re-enable</yellow>'><bold>deactivated</bold></hover></click>.</red>"
mode-changed: "<green>Mode changed to <click:suggest_command:'/if mode'><hover:show_text:'<yellow>Click to toggle mode again</yellow>'><yellow><bold><mode></bold></yellow></hover></click>.</green>"
rarity-changed: "<green>Rarity level changed to <click:suggest_command:'/ifc'><hover:show_text:'<yellow>Click to cycle rarity levels</yellow>'><rarity></hover></click>.</green>"
nbt-filter-enabled: "<green><click:suggest_command:'/ifc'><hover:show_text:'<yellow>Use /ifc to cycle rarity levels</yellow>'><bold>Rarity filter enabled</bold></hover></click>.</green>"
nbt-filter-disabled: "<red><click:suggest_command:'/if rarity'><hover:show_text:'<yellow>Click to re-enable rarity filter</yellow>'><bold>Rarity filter disabled</bold></hover></click>.</red>"
nbt-filter-not-enabled: "<red>Rarity filter is not enabled. <click:run_command:'/if edit'><hover:show_text:'<yellow>Click to open editor and enable it</yellow>'><yellow><bold>Enable it in the editor GUI first</bold></yellow></hover></click>.</red>"
filter-deleted-open-list: "<yellow>Deleted selected filter. <click:run_command:'/if select'><hover:show_text:'<yellow>Browse your saved filters</yellow>'><gold><bold>Click here</bold></gold></hover></click> to see saved filter list.</yellow>"
preset-status-unlocked: "<green>Unlocked</green>"
preset-status-locked: "<red>Locked</red>"
autopickup-enabled: "<green>Auto-pickup enabled.</green>"
autopickup-disabled: "<red>Auto-pickup disabled.</red>"
autopickup-disabled-server: "<red>Auto-pickup is disabled on this server.</red>"
inventory-full-actionbar: "<red>Inventory full!</red>"
# ───────────────────────────────────────────────────────────────────────────────
# INPUT (CHAT PROMPTS) — Free-text input flows and validation.
# ───────────────────────────────────────────────────────────────────────────────
enter-filter-name: "<yellow>Enter a name for your filter (or type 'cancel' to abort):</yellow>"
input-timeout: "<red>Input timeout. Please try again.</red>"
filter-save-cancelled: "<gray>Filter save cancelled.</gray>"
filter-name-too-long: "<red>Filter name must be 32 characters or less.</red>"
invalid-filter-name: "<red>Filter name can only contain letters, numbers, underscores and hyphens.</red>"
filter-already-exists: "<red>A filter with that name already exists.</red>"
# ───────────────────────────────────────────────────────────────────────────────
# GUI — Editor/explorer prompts and entry feedback.
# ───────────────────────────────────────────────────────────────────────────────
enter-name-add: "<yellow>Enter a keyword to add to the name filter:</yellow>"
enter-item_type-add: "<yellow>Enter an item type to add <gray>(use tab completion)</gray>:</yellow>"
enter-lore-add: "<yellow>Enter a keyword to add to the lore filter:</yellow>"
entry-added: "<green>Added '<click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to view in editor</yellow>'><yellow><bold><entry></bold></yellow></hover></click>' to filter.</green>"
entry-removed: "<yellow>Removed '<red><bold><entry></bold></red>' from filter.</yellow>"
entry-already-exists: "<red>This entry already exists in the filter.</red>"
no-entries-to-remove: "<red>No entries to remove from this filter.</red>"
no-entries-added: "<red>No entries were added from the provided items.</red>"
click-entry-to-remove: "<yellow><hover:show_text:'<red>Right-click any entry in the GUI to remove it</red>'>Right-click an entry to remove it</hover>.</yellow>"
rarity-selected: "<green>Selected rarity: <click:suggest_command:'/ifc'><hover:show_text:'<yellow>Click to cycle to next rarity</yellow>'><yellow><bold><rarity></bold></yellow></hover></click></green>"
invalid-material: "<red>Invalid material type. <hover:show_text:'<yellow>Press TAB while typing for suggestions</yellow>'>Use tab completion for valid materials</hover>.</red>"
entry-limit-reached: "<red>You have reached the maximum number of entries for this filter type.</red>"
filter-deleted: "<yellow>Filter '<red><bold><entry></bold></red>' has been deleted.</yellow>"
preset-selected: "<green>Applied preset: '<click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to view applied preset</yellow>'><yellow><bold><entry></bold></yellow></hover></click>'.</green>"
filter-explorer-help: "<yellow><click:run_command:'/if select'><hover:show_text:'<yellow>Click to open saved filter browser</yellow>'>/if select - Open saved filter browser</hover></click></yellow>"
# ───────────────────────────────────────────────────────────────────────────────
# COMMAND: ADD — Item add helper feedback.
# ───────────────────────────────────────────────────────────────────────────────
add-not-allowed: "<red>The <click:suggest_command:'/if add'><hover:show_text:'<yellow>This command only works with item_type filters</yellow>'>/if add command</hover></click> only works with item_type filters.</red>"
no-item-in-hand: "<red>You must <hover:show_text:'<yellow>Hold an item in your main hand first</yellow>'>hold an item</hover> to add it to the filter.</red>"
item-added-to-filter: "<green>Added <click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to view in editor</yellow>'><yellow><bold><entry></bold></yellow></hover></click> to your item filter.</green>"
# ───────────────────────────────────────────────────────────────────────────────
# SAVE/LOAD — Messages used by /if save and /if load.
# ───────────────────────────────────────────────────────────────────────────────
filter-saved: "<green>Filter saved as '<click:run_command:'/if load <name>'><hover:show_text:'<yellow>Click to load this filter</yellow>'><yellow><bold><name></bold></yellow></hover></click>'.</green>"
filter-loaded: "<green><click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to view loaded filter</yellow>'>Filter loaded successfully</hover></click>.</green>"
filter-not-found: "<red>Filter not found. <click:run_command:'/if select'><hover:show_text:'<yellow>Click to browse saved filters</yellow>'><yellow>Browse saved filters</yellow></hover></click>.</red>"
no-saved-filters: "<yellow>You have no saved filters yet. <click:suggest_command:'/if save '><hover:show_text:'<yellow>Use /if save <name> to save your current filter</yellow>'>Save your first filter!</hover></click></yellow>"
saved-filters-header: "<gold><bold>Your saved filters</bold> <gray>(click to select)</gray>:</gold>"
max-filters-reached: "<red>You have reached the maximum number of saved filters.</red>"
# ───────────────────────────────────────────────────────────────────────────────
# USAGE — One-line usage hints for commands.
# ───────────────────────────────────────────────────────────────────────────────
usage-save: "<yellow>Usage: <click:suggest_command:'/if save '><hover:show_text:'<yellow>Click to start typing save command</yellow>'>/if save <name></hover></click></yellow>"
usage-load: "<yellow>Usage: <click:suggest_command:'/if load '><hover:show_text:'<yellow>Click to start typing load command</yellow>'>/if load <name></hover></click></yellow>"
usage-setfilter: "<yellow>Usage: <click:suggest_command:'/ifadmin setfilter '><hover:show_text:'<yellow>Click to start typing setfilter command</yellow>'>/ifadmin setfilter <player> <type> <mode></hover></click></yellow>"
# ───────────────────────────────────────────────────────────────────────────────
# ERRORS — General error lines (permissions, syntax, lookups).
# ───────────────────────────────────────────────────────────────────────────────
unknown-command: "<red>Unknown command. <click:run_command:'/if help'><hover:show_text:'<yellow>Click to view help</yellow>'><yellow><bold>Use /if for help</bold></yellow></hover></click>.</red>"
player-only: "<red>This command can only be used by players.</red>"
no-permission: "<red>You don't have permission to use this command.</red>"
player-not-found: "<red>Player not found or not online.</red>"
invalid-filter-type: "<red>Invalid filter type. Use <hover:show_text:'<yellow>Filters items by display name</yellow>'><gold>'name'</gold></hover>, <hover:show_text:'<yellow>Filters items by material type</yellow>'><gold>'item_type'</gold></hover>, or <hover:show_text:'<yellow>Filters items by lore text</yellow>'><gold>'lore'</gold></hover>.</red>"
invalid-mode: "<red>Invalid mode. Use <hover:show_text:'<yellow>Only allows matching items</yellow>'><gold>'whitelist'</gold></hover> or <hover:show_text:'<yellow>Blocks matching items</yellow>'><gold>'blacklist'</gold></hover>.</red>"
# ───────────────────────────────────────────────────────────────────────────────
# CONTEXT LIMITER — Region/world locking.
# ───────────────────────────────────────────────────────────────────────────────
disabled-here: "<gray>This feature is disabled in this world or region.</gray>"
# ───────────────────────────────────────────────────────────────────────────────
# ADMIN — Admin help and action feedback.
# ───────────────────────────────────────────────────────────────────────────────
admin-help-title: "<gradient:#FFD700:#FFA500>═══ InventoryFilters Admin Commands ═══</gradient>"
admin-help-reload: "<yellow><click:run_command:'/ifadmin reload'><hover:show_text:'<yellow>Click to reload configuration</yellow>'>/ifadmin reload</hover></click> - Reload configuration files</yellow>"
admin-help-setfilter: "<yellow><click:suggest_command:'/ifadmin setfilter '><hover:show_text:'<yellow>Click to start typing setfilter command</yellow>'>/ifadmin setfilter <player> <type> <mode></hover></click> - Set player's filter settings</yellow>"
admin-help-footer: "<gray>Use these commands to manage the plugin.</gray>"
reloaded: "<green>Configuration reloaded successfully.</green>"
filter-set-success: "<green>Set filter for <click:run_command:'/msg <player> Your filter has been updated by an admin'><hover:show_text:'<yellow>Click to message player</yellow>'><yellow><bold><player></bold></yellow></hover></click> to type '<yellow><bold><type></bold></yellow>' with mode '<yellow><bold><mode></bold></yellow>'.</green>"
filter-set-by-admin: "<yellow>An administrator has set your filter to type '<click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to view your new filter settings</yellow>'><type></hover></click>' with mode '<mode>'.</yellow>"
save-new-filter-suggest: "<yellow>Use <click:suggest_command:'/if save '><hover:show_text:'<yellow>Click to start typing save command</yellow>'>/if save </hover></click> to save your current filter.</yellow>"
# ───────────────────────────────────────────────────────────────────────────────
# PREMIUM — Upgrade nudges and premium-only feature gating.
# ───────────────────────────────────────────────────────────────────────────────
premium-feature-disabled: "<red>This feature isn't available on this server.</red>"
premium-upgrade-suggestion: "<yellow>Some features may be unavailable on this server.</yellow>"
# ───────────────────────────────────────────────────────────────────────────────
# EXTRA ADMIN — Additional admin commands / errors.
# ───────────────────────────────────────────────────────────────────────────────
admin-help-info: "<yellow><click:suggest_command:'/ifadmin info '><hover:show_text:'<yellow>Click to start typing info command</yellow>'>/ifadmin info [player]</hover></click> - Show plugin or player information</yellow>"
admin-help-cleardata: "<yellow><click:suggest_command:'/ifadmin cleardata '><hover:show_text:'<yellow>Click to start typing cleardata command</yellow>'>/ifadmin cleardata <player></hover></click> - Reset player's filter data</yellow>"
reload-error: "<red>An error occurred during reload. Check console for details.</red>"
usage-saveaspreset: "<red>Usage: /ifadmin saveaspreset <name></red>"
preset-already-exists: "<red>A preset with that name already exists!</red>"
preset-saved-successfully: "<green>Successfully saved preset '<yellow><entry></yellow>'!</green>"
preset-save-failed: "<red>Failed to save preset. Check console for errors.</red>"
no-player-data: "<red>No player data found.</red>"
admin-help-saveaspreset: "<yellow><click:suggest_command:'/ifadmin saveaspreset '><hover:show_text:'<yellow>Click to start typing saveaspreset command</yellow>'>/ifadmin saveaspreset <name></hover></click> - Save current filter as preset</yellow>"
entry-limit-reached-free: "<red>You can only add up to 8 entries per filter in free mode.</red>"
config-updated: "<green>Display-item for GUI has been updated with item of your choice!</green>"
# ───────────────────────────────────────────────────────────────────────────────
# EXTRA PREMIUM — Presets access gating and direct apply notice.
# ───────────────────────────────────────────────────────────────────────────────
presets-disabled-free: "<red>Presets are disabled on this server.</red>"
preset-applied: "<green>Applied preset: '<click:suggest_command:'/if edit'><hover:show_text:'<yellow>Click to view applied preset</yellow>'><yellow><bold><entry></bold></yellow></hover></click>'.</green>"
# ───────────────────────────────────────────────────────────────────────────────
# SOUNDS — Optional defaults for sound keys used by SoundManager.
# ───────────────────────────────────────────────────────────────────────────────
sounds:
feedback-sound: "BLOCK_NOTE_BLOCK_PLING"
error-sound: "BLOCK_NOTE_BLOCK_BASS"
presets.yml:
Code (Text):
locked-lore: "<gray><b><yellow>You haven't unlocked this preset yet!</yellow></b></gray>\n\n<gray>Unlock it by purchasing <aqua><b><i>VIP</i></b></aqua> today!</gray>\n\n<gray><b><green>Link to store:</green></b> <click:open_url:'store.myserver.com'>Store.myserver.com</click></gray>"
presets:
starter_name_whitelist:
name: Starter Name Filter
type: name
mode: whitelist
rarity: none
entries:
- diamond
- pick
icon:
material: PAPER
name: "<yellow>Starter Name Filter</yellow>"
lore:
- "<gray>Allows items whose name contains 'diamond' or 'pick'.</gray>"
ores_blacklist:
name: Ores Blacklist
type: item_type
mode: blacklist
rarity: none
entries:
- COBBLESTONE
- DIRT
- GRAVEL
icon:
material: IRON_PICKAXE
name: "<red>Ores Blacklist</red>"
lore:
- "<gray>Blocks common junk blocks while mining.</gray>"