FilterBlast has own item filter parser, which fully supports PoE item filter syntax and commnity's extra syntax, but also has own extended syntax, which allows to write an item filter with less code and more functionality. Here you can learn more about all those syntaxes.
If you're new to item filter code you can learn more about it on Official PoE item filter info page and Community Wiki's item filter page.
After item filters were introduced in the game some members of community came up with ideas how to organize and customize filters. Those ideas found a good use and also was supported by Filtration (another filter editing tool).
Syntax: # Section: Section Name
Sections are made to improve code organization and navigation. Blocks are grouped in sections by some common sense.
Usually, at the start of the filter code athors place Section list, which allows to use sections as bookmarks by copying section name and searching for it.
In Filtration sections are represented as special blocks in editor, but there is also Section Browser for quick navigation.
Syntax: Show/Hide # Root category - sub-category 1 - sub-category 2 - etc
SmartBlocks is a powerful feature, which represents blocks in hierarchical view and allow to easily toggle visibility of all blocks in selected category at once (also toggling all nested blocks).
Nested blocks are defined by " - " after parent block category's name.
* SmartBlocks can also be marked as Advanced by adding "~" prefix to the block category's name. Such SmartBlocks in most cases should not be modified by players, but provide additional customization for Advanced users.
FilterBlast highlights Advanced SmartBlocks and also shows notification about their use.
Filtration supports Advanced Blocks too (more details here)
* SmartBlocks can also be marked as Associated by adding "@" prefix to the block category's name. This tells users that selected blocks are associated with some custom UI options in FilterBlast.
* In FilterBlast there is extra option for SmartBlocks, which changes how desired blocks toggle:
Syntax: Show # Root category - sub-category 1 - sub-category 2 - etc | mode
Possible modes:
Hide - Switches block's state to "Hide". This is default behavior, if mode is not defined.
Remove - Completely removes block from the filter, which can be better then hiding in specific cases
Comment - in the game has same effect as Remove, but instead of enterily removing the block from the code - it will become commented (with Filtration's "#Disabled block start/end" wrap).
Disable, Disabled - aliases of Comment for different tastes, since Filtration names commented blocks as "Disabled".
Syntax:
#Disabled Block Start
# Commented Show/Hide Block
#Disabled Block End
Initially, this was Filtration specific feature, but actually is very good for standardized use.
From Filtration's wiki: Disabled blocks are blocks that are saved in a filter file but won't be used in game (due to being commented out). Filtration implements Disabled Blocks by wrapping them in two special lines... These blocks can then be enabled/disabled from within Filtration by clicking the relevant buttons on the ribbon menu.
FilterBlast fully supports Disabled Blocks and uses this syntax when passing commented blocks to resulting filter.
Syntax: SetTextColor/SetBackgroundColor/SetBorderColor value # Color Tag Name
SmartColors is a powerful feature, which allows to quickly change specific color in the filter to desired one, by searching and replacing color value with specific tag.
Filtration allows to replace those by clicking "Edit Master Theme".
FilterBlast supports SmartColors and allows to customize them in Color Theme Editor.
Syntax: PlayAlertSound value # Sound Tag Name
SmartSounds is a powerful feature, which allows to quickly change specific sound and it's volume in the filter to desired values, by searching and replacing sound value with specific tag.
FilterBlast supports SmartSounds and allows to customize them in Sound Theme Editor.
FilterBlast is designed not only to provide many new possibilities to item filters, but also to be compatible with ingame parser.
There is two ways how you can use FilterBlast as code processor:
In first case you'll be able to create your filter very effectively, but before use in the game you need to pass it through FilterBlast. However this is fairly easy: paste your code into editor in Advanced mode and click Reparse or Download button and you'll get parsed filter, which will perfectly work in Path of Exile. You can also put parsed file at your github/pastebin/etc to be available for download outside FilterBlast.
In second case you'll write filter code as usual, adding desired customization syntax as comments with special prefixes. This way the game will work fine even with unparsed filter code. And FilterBlast will parse it finely too, showing all custom options you specified in User Interface.
Note: If you want your filter to be integrated into the platform - just submit it at feedback page and, after its integration, every user will be able to download it in few clicks.
Those commented prefixes are detected by FilterBlast and all commands and values in them are parsed like they are not commented, so you can use multiple $variables or even mix them with any predefined values:
There is also special comment prefix, useful to make comments related to Extended syntax commands:
* Note: don't forget to put space after any of forementioned prefixes, otherwise they will not work.
FilterBlast have different parsing modes and parameters. Integrated filters, which use auto-update feature, can change them in config file. But there is also a way to do it in filter's code.
SetConfig $Parameter Value - allows you to set some FilterBlast's parameters. Available parameters are listed below:
$SmartTabs_Position - changes position (if not redifined) of auto-generated tabs with SmartBlocks and Theme editors in Customization UI. Possible values: top, bottom.
If set to top - first Option with Type = info, link still will be displayed above SmartTabs (so you can add some intro text etc), however other options/tabs will be below.
$DisabledBlocks - changes parsing mode of disabled blocks. Possible values: ignore, detect, wrapped.
Default and recommended mode is wrapped. If you want to use "detect" be sure to not put space between # and Show/Hide, otherwise it'll count as regular comment (this behavior is based on analysis of many filters).
$BlockGroups - changes parsing mode of block groups. Possible values: off, neversink, smart.
Default is smart, which uses standard SmartBlocks syntax, described above. For neversink mode syntax see source code of NeverSink's lootfilter.
SetVar $Variable_Name Value - allows you to store speicific values in variable and put variable in filter code instead of values.
$Variable_Name can contain latin letters, numbers, _ and -.
Value can be any word, "quoted long name", number, operator or modifier.
Also you can specify mulptiple Values separated by space.
SetTab [Tab Name] - allows you to group options in sets of tabs. Every option after SetTab will be added to that tab. You still can add options outside tabs, using "SetTab None".
SmartBlocks, Color and Sound theme editors (if anything for them is set) by default are added to separate automaticly generate tab group (so-called SmartTabs) after custom options. However you can re-difine their placement by using SetTab with corresponding tab name ("Block switches" / "Color theme" / "Sound theme"), also this way you can add custom options to that tabs.
SetOption $Variable_Name Type Default_Value Optional_Values # Description - allows you to set variable which will show in FilterBlast UI as customizable option, which user-selected value will be used when generating resulting filter.
$Variable_Name can contain latin letters, numbers, _ and -.
Type - possible values: info, link, input, textarea, switch, slider, checkbox, list, dropdown
Default_Value, Optional_Values can be any word, "quoted long name", number, operator, modifier or even another option or variable, so nesting is supported!
info, link options doesn't have Default_Value parameter.
For link option use pairs of values: [name] [link]. Each pair of values of the option will be shown as link in one line, with spacing.
For info option each value is: [text paragraph]
For slider option should be passed 2 or 3 (only numeric) values, corresponding to (default), min, max. If default value is not set, minimum will be used.
If # Description is set to no title the option will appear without title and description in UI, which can be useful when grouping few options related to same thing.
SetOption $EmptyLine - special type of option, which adds empty line to UI, so if you have many options - it may help to improve appearance.
$EmptyLine - this is constant and should not be changed, otherwise it will not work.
SetSound $Variable_Name id volume # description - special type of variable-option, which makes sound variable customizable in Sound Theme editor tab.
$Variable_Name can contain latin letters, numbers, _ and -.
id - id of the in-game sound, possible values: 1-9
volume - possible values: 0-300 (optional parameter)
SetGlobalDisableDropSoundMode mode - globally removes/adds DisableDropSound command to filter's blocks, which fall into desired conditions.
NOTE: this command has no effect on filter's Alert Sounds - it only affects default drop sounds of items, which can not be customized - only turned off.
Mode:
SetGlobalSoundPositioning mode - globally changes sound positioning, affecting all PlayAlertSound and PlayAlertSoundPositional commands.
Mode - "default" keeps sound positioning as it defined in source code, "on" makes all sounds positional, "off" makes all sounds non-positional.
SetGlobalFontSizeRange min max mode - globally sets font size range, affecting all SetFontSize and ModFontSize commands.
Mode - optional parameter, defines behavior: "limit" cuts off exceeding values, "resize" compresses value to a new range. If not specified - defaults to "limit".
Resize mode also affects blocks without SetFontSize command (adds it with resize based on default middle value).
SetFontSizeRange min max - locally sets font size range for current block and all its branches. Can not be used inside Breaches Branches.
ModFontSize Modifier Value - modifies font size of current block by % percentage (withing size range) or +/- from current value (if not defined - from middle value of size range)
Modifier - possible values: +, -, %
Value - number. If modifier is % - value range is 0 - 100.
SetTag @Tag_Name - block command (like Show/Hide), stores all defined commands and can be applied later in other blocks (including SetTag).
@Tag_Name can contain latin letters, numbers, _ and -.
Tags @Tag_Names - applies listed tags to current block (tags apply by listed order, adding condition-commands and replacing previous visualisation commands).
Remove - used instead Show/Hide block entirely removes block from resulting filter. Useful with options.
Comment - used instead Show/Hide block outputs fully commented Show block. Useful with options. Also has aliases: Disable and Disabled.
Branch Visibility - used inside regular Show/Hide block - allows you to simplify code, combining similar block into one and separating differences into branches. Each Branch inherits all commands from parent block and combines them with its own commands. If block has branches - it's by itself not passed to resulting filter, use Branch without extra commands to output it.
Visibility - optional parameter, possible values: Inherit, Show, Hide, Comment, Remove. If Type is not specified, it defaulted to Inherit parent's visibility.
SwitchTo Value - allows to switch visibility of a block (especially useful in SetTag).
Value - optional parameter, possible values: Show, Hide, Comment, Remove. Value can be empty, so this allows more flexibility with Options.