> For the complete documentation index, see [llms.txt](https://edseries-plugins.gitbook.io/p/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edseries-plugins.gitbook.io/p/pinnablockselector/features/categories.md).

# Categories & Block List

## Which blocks can be chosen

`config.yml` → `blocks`: every placeable, solid, full (light-blocking) block of the game is listed in game order, plus `include`, minus `exclude`. Patterns are material names with `*` as a wildcard:

```yaml
blocks:
  include: ['GLASS', '*_STAINED_GLASS', '*_LEAVES', 'ICE']
  exclude: ['BEACON', 'BEDROCK', 'BARRIER', '*COMMAND_BLOCK', 'SPAWNER']
```

After `/blockselector reload` the chat says how many blocks can be chosen.

## Categories

The filter button cycles through `categories`, in the order of the file:

```yaml
categories:
  all:
    name: '&fAll Blocks'
    icon: GRASS_BLOCK
  ores:
    name: '&bOres & Minerals'
    icon: DIAMOND_ORE
    match: ['*_ORE', 'RAW_*_BLOCK', 'DIAMOND_BLOCK']
  others:
    name: '&8Other Blocks'
    icon: BOOKSHELF
    others: true
```

| Key           | Meaning                                                                                         |
| ------------- | ----------------------------------------------------------------------------------------------- |
| `name`        | shown on the filter button and in the menu title (`{category-name}`); may be an EdLang key      |
| `icon`        | the item the filter button shows while this category is open (default HOPPER)                   |
| `match`       | patterns; a block shows in every category one of its patterns matches. No `match` = every block |
| `others`      | `true` = every block no other category has                                                      |
| `permission`  | optional: only players with it may choose this category's blocks                                |
| `locked-text` | the `{requirement}` line locked blocks show, e.g. `'&cRequires the &6VIP &crank'`               |

## Rank-only blocks

Give a category a `permission` and its blocks are locked for players without it: they still see them, with the `locked-entry` look of the menu and the category's `locked-text`, but can't add them. A block in several locked categories is free with the permission of any of them. `permission` works on categories with `match` or `others: true` (not on the "every block" category).

```yaml
  vip:
    name: '&6VIP Blocks'
    icon: GOLD_BLOCK
    match: ['GOLD_BLOCK', 'DIAMOND_BLOCK', 'EMERALD_BLOCK', 'NETHERITE_BLOCK']
    permission: 'pinnablockselector.category.vip'
    locked-text: '&cRequires the &6VIP &crank'
```

A locked block a player already uses stays on their mine until they change their choice; the next time they open the menu it is no longer in their choice.

Admins (`/blockselector set`) and the API ignore category permissions.
