> For the complete documentation index, see [llms.txt](https://gitbook.ziyuesinicization.site/filters-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.ziyuesinicization.site/filters-api/using-filters-api/adding-items.md).

# Adding items

Filters API is an easy-to-use library.

{% hint style="danger" %}
The following codes are just examples. They will throw exceptions on the server. **You should ensure that Filters API codes are executed only on the client.**
{% endhint %}

{% hint style="warning" %}
The tab that has filters will display categorized items only, except that you have registered [uncategorized filter](/filters-api/advanced/registering-uncategorized-filter.md).
{% endhint %}

Call `Filter.addItems(Item...)` after registering items to add them to the filter.

## Fabric

```java
public static void registerItem(String path, Item item, Filter filter) {
    [...]
    filter.addItems(item);
}
```

## Forge

{% hint style="warning" %}
You should add items to filters after `ITEMS.register()` is called.
{% endhint %}

```java
public static final DeferredRegisterHolder<Item> ITEMS = new DeferredRegisterHolder<>(MOD_ID, Registry.ITEM_REGISTRY);
public static final ArrayList<Tuple<Filter, Item>> FILTER_ITEMS = new ArrayList<>();

public MainForge() {
    [...]
    ITEMS.register();
}

public static void registerItem(String path, Item item, Filter filter) {
    [...]
    FILTER_ITEMS.add(new Tuple<>(filter, item));
}

@SubscribeEvent
public static void onClientSetupEvent(FMLClientSetupEvent event) {
    [...]
    // initialize filters
    FILTER_ITEMS.forEach(tuple -> tuple.getA().addItems(tuple.getB()));
}
```

Congratulations! Now you can find filters when opening the creative mode tab.

## See also

{% embed url="<https://maven.ziyuesinicization.site/javadoc/releases/ziyue/filters/raw/ziyue/filters/Filter.html#addItems(net.minecraft.item.Item>...)" %}
The javadoc (1.16\~1.19.4)
{% endembed %}
