Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details

Modular Storage System (MSS) brings mod style network storage to your server. Build a network out of custom blocks, store hundreds of thousands of items on tiered disks, find anything from a single terminal, and move items in and out of chests, furnaces and brewing stands automatically. It is a server plugin: players need no mods and nothing to install.
One jar runs on Spigot, Paper and Paper forks, Minecraft 1.21 to 26.3.
Source code | Report an issue | Changelog

Storage
- Network storage: link a Storage Server, Drive Bays and Terminals with PoE Cables. Up to 128 blocks and 800 cables per network, all configurable.
- Four disk tiers: 1k, 4k, 16k and 64k disks hold up to 520,192 items each. Disks are hot swappable and recycle into their parts when empty.
- Terminals: search, sort by name or quantity, shift click to deposit, click to withdraw. Each terminal remembers its search and sort until the server restarts.
- Disk safety: every disk has a unique id and records who crafted it. Admins can recover a lost disk with its contents intact.
Automation
- Importers pull items from chests, barrels, hoppers, furnaces, brewing stands and more into the network.
- Exporters push the items in their filter out, and target furnace fuel and input slots or brewing stand slots separately.
- XP bottling: an importer on a furnace turns the furnace's stored XP into Bottles o' Enchanting, using glass bottles from the network.
- Bucket ejection: importers can pull empty buckets out of furnace fuel slots.
Security
- Security Terminal: lock a network to you and the players you trust, with separate access and build permissions.
- Claim plugins: WorldGuard, GriefPrevention, Towny and other claim plugins are respected out of the box.
- Hardened: audited for duplication and item loss, tested with automated clients on 1.21.x and 26.1, and boot tested on 26.2 and 26.3.
Quality of life
- Optional resource pack with custom models for MSS items and for the placed Server, Drive Bay, Terminal and Security Terminal. It ships inside the jar. Importers and exporters keep their head textures.
- Iron Wrench: shift and right click picks up any MSS block. With the resource pack on, right click rotates a Server, Drive Bay or Terminal.
- Cable pipes: optional connection aware cables when the resource pack is on.
- Vanilla recipes: everything crafts at a crafting table and shows in the recipe book once unlocked with
/recipe give <player> <recipe>. Every recipe is configurable inrecipes.yml. - Translatable: every message lives in
lang/en_US.yml.


- Craft a Storage Server and place it. It is the controller, and each network has exactly one.
- Place a Drive Bay touching it and insert storage disks.
- Place a Terminal touching the network and right click it to open your storage.
- Use PoE Cables to reach blocks further away, then attach Importers and Exporters to containers, on top or on a side.
Admins can list every recipe in game with /mss recipes.


Craft disks directly, or assemble them from a Disk Housing and a Platter of the matching tier. Each disk shows its tier, used cells and crafter in its tooltip. Shift and right click an empty disk to recycle it into its parts.

Attach an Importer or Exporter to a container, connect it to the network with a PoE Cable, then right click it to set filters. An importer with no filter pulls everything. An exporter only pushes what is in its filter.
| Container | Importer | Exporter |
|---|---|---|
| Chests, barrels, hoppers, shulker boxes and others | Pulls items into the network | Pushes filtered items out |
| Furnaces, blast furnaces, smokers | Pulls the output, with optional XP bottling and bucket ejection | Separate fuel and input filters |
| Brewing stands | Pulls from the three bottle slots; set a filter per slot to take only finished potions | Separate ingredient, fuel and bottle filters |

- A network without a Security Terminal is open to everyone. Place one to lock the network to you and your trusted players, with separate permissions for opening MSS blocks and for building on the network.
- With
permissions.respect_claimson (the default), using an MSS block needs build access where it stands, and nobody can cable into a network or attach an importer or exporter on land they can't build on. This works with any claim plugin that protects blocks from breaking. - Ops, or anyone with
mss.admin, bypass network security.

Oraxen, ItemsAdder and Nexo build their custom blocks on note blocks, and so does the MSS resource pack. MSS detects them and adapts:
- Coexist (default): MSS stops using note blocks itself and keeps its placed blocks vanilla. With the resource pack on, its item models go into that plugin's resource pack.
- Blocks (experimental): MSS also registers its four cube blocks with that plugin, so placed MSS blocks get their custom look too. Run that plugin's reload once after the first start.
Both modes are built on each plugin's public API but have not been tested with the real plugins yet. Please report anything that misbehaves.


- Server software: Spigot, Paper, Purpur, Pufferfish and other Paper forks.
- Minecraft: 1.21 to 26.3 from one jar. Java 21 for 1.21.x servers, Java 25 for 26.x.
- Database: SQLite (default, zero setup) or MySQL. MariaDB should work but is untested. Switch backends without losing data using
/mss migratedb. - Tested on Paper 1.21, 1.21.11, 26.1.2, 26.2 and 26.3, and Spigot 1.21.1, 1.21.11, 26.1.2, 26.2 and 26.3.
- Moving an existing database from Paper to Spigot is not supported. Spigot to Paper works.

Every command except /mss help needs modularstoragesystem.admin, and /mss recovery needs modularstoragesystem.recovery.
| Command | Description |
|---|---|
/mss help |
Show the help menu |
/mss give <item> [player] |
Give an MSS item |
/mss info |
Show plugin and storage statistics |
/mss recipes |
List all recipes |
/mss recipe <name> |
Show one recipe |
/mss reload [config, recipes, lang or all] |
Reload configuration, messages and the resource pack |
/mss recovery <disk_id> |
Recover a lost storage disk |
/mss cleanup |
Remove orphaned data |
/mss migratedb <sqlite or mysql> [confirm] |
Replace the active database with the other backend's data |
/mss convert [confirm] |
Update placed blocks after turning the resource pack on or off |
Items for /mss give: server, bay, terminal, security, cable, exporter, importer, wrench, housing, platter1k, platter4k, platter16k, platter64k, disk1k, disk4k, disk16k, disk64k.

| Permission | Default | Grants |
|---|---|---|
modularstoragesystem.admin |
Op | Admin commands |
mss.admin |
Op | Bypassing network security |
modularstoragesystem.recovery |
Op | /mss recovery |
modularstoragesystem.bypass_cooldown |
Op | Skipping command and menu cooldowns |
modularstoragesystem.use |
Everyone | Using MSS blocks, when permissions.require_use_permission is on |
modularstoragesystem.craft |
Everyone | Crafting MSS items, when permissions.require_craft_permission is on |
mss.craft.<item> and mss.use.<item> |
Everyone | Per item control, with mss.craft.* and mss.use.* wildcards |
Both require options are off by default. The per item nodes always apply, so denying one blocks that item for everyone without op.





More in the gallery.

- Found a bug or have an idea? Open an issue on GitHub.
- Please include your server software and version, the MSS version, and any errors from the console.
- Back up
plugins/ModularStorageSystembefore updating. The database upgrades itself on start.


