One server. Every obtainable block. A collection everyone builds together.
EveryBlock turns normal survival play into a shared collection challenge. The plugin automatically builds a catalogue of obtainable block items, watches participant inventories, remembers the first player to discover each block, and presents the entire journey through polished in-game menus.
| Automatic catalogue | Builds the challenge from placeable block items and excludes technical, administrative, and unobtainable materials |
| Source-independent discoveries | Counts legitimate blocks whether they were mined, crafted, traded, smelted, farmed, or looted |
| Collection GUI | Category hub, paginated collections, global search, and All/Missing/Found filters |
| Shared history | Stores the first finder, discovery time, recent discoveries, and contribution rankings in SQLite |
| Satisfying progression | Rarity-based effects, configurable milestones, and a staged server-wide completion finale |
| Every Item mode | Optional companion collection for every obtainable inventory item, disabled by default |
| PlaceholderAPI | Built-in expansion for totals, percentage, contributions, and latest discoveries |
- EveryBlock scans participating survival inventories at a configurable interval.
- New catalogue items are recorded once for the whole server.
- The first finder and timestamp are written to
progress.db. - Configurable messages, sounds, particles, titles, and celebrations announce the discovery.
/blocksimmediately reflects the new team progress.
The default participant mode is EVERYONE. Servers that want a closed team can switch to ALLOWLIST and add player UUIDs without changing the collection itself.
| Command | Purpose | Permission |
|---|---|---|
/blocks |
Open the block collection | everyblock.use |
/blocks status |
Show overall team progress | everyblock.use |
/blocks search <query> |
Search the collection | everyblock.use |
/blocks top |
Show leading contributors | everyblock.use |
/blocks add <block> |
Mark a block as collected | everyblock.admin |
/blocks remove <block> |
Remove a collected block | everyblock.admin |
/blocks reset confirm |
Reset the block challenge | everyblock.admin |
/blocks reload |
Reload configuration and messages | everyblock.admin |
/items |
Open the optional item collection | everyblock.items |
/items status |
Show item challenge progress | everyblock.items |
/items reset confirm |
Reset item progress, even while the item challenge is disabled | everyblock.admin |
Admin commands need only everyblock.admin; staff do not also need everyblock.use or everyblock.items.
A block removed with /blocks remove is not immediately re-discovered from players who were already holding it. Those players are skipped for that block until they stop holding it; anyone else who picks it up counts as normal.
Aliases include /everyblock, /blockchallenge, /blockdex, /everyitem, /itemchallenge, and /itemdex.
PlaceholderAPI is optional. When installed, EveryBlock registers its expansion automatically:
%everyblock_collected%
%everyblock_total%
%everyblock_remaining%
%everyblock_percent%
%everyblock_contribution%
%everyblock_latest%
%everyblock_latest_player%
No separate eCloud download is required.
- Paper 1.21.11
- Java 21
- PlaceholderAPI 2.12.3 or newer (optional)
- Build the project with
mvn package. - Copy
target/EveryBlock-*.jarinto the server'splugins/directory. - Restart Paper.
- Open the collection with
/blocks.
EveryBlock creates config.yml, messages.yml, and progress.db inside plugins/EveryBlock/.
The defaults work without setup. The most common customizations are:
participants:
mode: EVERYONE # Or ALLOWLIST
allowlist: []
counting:
scan-interval-ticks: 10
count-creative-mode: false
items:
enabled: false # Enable the companion Every Item challengeconfig.yml controls participants, catalogue exclusions, counting, GUI presentation, storage, and milestones. messages.yml contains ordered action lists for chat, broadcasts, sounds, particles, titles, boss bars, and fireworks, plus every menu title and GUI lore as YAML string lists.
The block collection title is gui.block-menu.title in messages.yml, alongside the other menu titles. The older gui.title in config.yml is deprecated and only used when that key is missing, so existing messages.yml files keep their current title.
Changing the database filename requires a full restart. Other supported settings can be refreshed with /blocks reload.
git clone https://github.com/MineWing/EveryBlock.git
cd EveryBlock
mvn packageThe Maven package runs the test suite and produces the plugin JAR. The SQLite JDBC driver is not bundled: Paper already ships org.xerial:sqlite-jdbc on the server classpath, and EveryBlock uses that copy.
The runnable artifact is target/EveryBlock-1.0.0.jar. Packaging does not deploy it
to a server. Copy that file to your server's plugins/ directory after the build.
EveryBlock is open source under the MIT License. It is also available on Modrinth.
Built by MineWing · See also Rivet and OneMillionCrops