> For the complete documentation index, see [llms.txt](https://lethium.gitbook.io/origin-smp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lethium.gitbook.io/origin-smp/stackmaster/compatibility.md).

# Compatibility

Server software and versions StackMaster runs on, how it behaves on Folia and Canvas, and what to know when other plugins add custom items, custom mobs or count kills.

## Server software

|               |                                              |
| ------------- | -------------------------------------------- |
| **Paper**     | Supported.                                   |
| **Folia**     | Supported (`folia-supported: true`).         |
| **Canvas**    | Supported.                                   |
| **Spigot**    | Not supported. StackMaster uses Paper's API. |
| **Minecraft** | 1.21.11 to 26.3 (`api-version: 1.21.11`).    |
| **Java**      | 21 or newer. Minecraft 26.x needs Java 25.   |

One jar runs on all three platforms. StackMaster uses Paper's region schedulers for every task: mob and item work runs on the entity's own region thread, spawner and block work on the block's region thread. On Paper the whole server is one region, so nothing changes there.

{% hint style="warning" %}
**Origin SMP:** the full server setup runs on Paper today. Running it on Folia or Canvas is possible, but needs Folia support for OriginSurvival (ask through support on Discord) and a switch from ItemsAdder to Nexo, or a Folia release from LoneDev. See [Requirements](/origin-smp/getting-started/requirements.md).
{% endhint %}

## Folia and Canvas

* Mobs and items only merge with others on the **same region**. Keep `location.same-region-only: true` and `location.allow-cross-region-merging: false` (the defaults).
* A player picking up a pile that sits on another region thread is delayed until both are on the same region. Items are never counted twice.
* A placed spawner only joins a stack on the same region.
* The `folia` section of `config.yml` has no effect: the region-safe behaviour above is always on.

## Plugins StackMaster works with

| Plugin                        | Needed?  | What it adds                                                                                                                                                                        |
| ----------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Vault** + an economy plugin | Optional | Costs for [spawner upgrades](/origin-smp/stackmaster/spawners.md#upgrades). Without it, upgrades with a price are refused (`upgrade-no-economy`). Free upgrades work without Vault. |
| **ItemsAdder**, **Nexo**      | Optional | Listed as soft dependencies so they load first. There is no special hook: custom items and custom-named mobs are recognised by their data and names, see below.                     |

StackMaster has **no PlaceholderAPI placeholders**. Other plugins can read stack sizes through the [StackMaster API](/origin-smp/dev-api/stackmaster-api.md).

## Custom items

Item piles are matched by their full item data (`stacking-items.compatibility.compare-data-components: true`). Custom items from ItemsAdder, Nexo, Oraxen and similar plugins carry their identity in that data, so:

* identical custom items merge with each other,
* different custom items never merge,
* a custom item never merges with the vanilla item it is based on.

See [Item stacking](/origin-smp/stackmaster/item-stacking.md#when-two-items-count-as-the-same).

## Custom and named mobs

A mob with a custom name only ever merges with a mob of the **same type and the exact same name**. Mobs named by a name tag or by a custom mob plugin are never pulled into a plain stack, and StackMaster never puts its own size nametag on them.

Two custom mobs of the same type and same name **can** stack with each other. If a mob plugin should never be stacked, use one of these:

* put its entity type in `stacking-entities.blacklist` (affects all mobs of that type),
* set `stacking-entities.conditions.allow-named-mobs: false` (no named mob stacks at all),
* switch stacking off in its world with `general.disabled-worlds`.

## Plugins that count kills

When a mob is killed **out of a stack**, the hit is cancelled and the stack shrinks. No real mob dies, so **no death event** fires for it. Only the last mob of a stack dies normally and fires one.

This matters for plugins that react to mob deaths:

* jobs, quest, mob coin and bounty plugins count one kill per stack, not one per mob,
* loot that another plugin adds on death only drops for the last mob,
* the loot StackMaster drops for logical kills comes from the mob's **vanilla loot table**.

Mobs killed by `/kill`, the void or the world border take the whole stack with them in one death.

{% hint style="info" %}
If kill counting matters on your server, test it with the plugin in question. Lowering `stacking-entities.max-stack-size` for the mobs involved, or adding them to the blacklist, keeps counts closer to one per mob.
{% endhint %}

## Spawn reasons other plugins see

| Spawned by StackMaster           | Spawn reason |
| -------------------------------- | ------------ |
| Mobs from a stacked spawner      | `SPAWNER`    |
| Extra babies from stack breeding | `BREEDING`   |
| Mobs split out of a stack        | `CUSTOM`     |

Plugins that filter by spawn reason see these like any other spawn.

## Protection plugins

Spawner breaking is decided after other plugins (event priority `HIGHEST`, only when not cancelled) and applied at `MONITOR`. A claim or region plugin that cancels the break wins, and nobody gets spawner items. Placing and right-clicking also skip events other plugins have already cancelled or denied.

## Vanilla features

* **Hoppers and hopper minecarts** take items from piles one stack at a time. See [Item stacking](/origin-smp/stackmaster/item-stacking.md#hoppers).
* **Vanilla item merging** is switched off where item stacking is on.
* **World-generated spawners** stay vanilla until a player adds spawners to them or changes them in the menu. See [Spawners](/origin-smp/stackmaster/spawners.md#world-generated-spawners).
* **Name tags:** a name-tagged mob is protected, see above.
