Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
BacapGuess
BacapGuess is a mini-game for two players on a Paper server with the BlazeandCave's Advancements Pack (BACAP) datapack installed.
Each participant is assigned a hidden advancement. A player can see their opponent's goal, but not their own, and must figure out their own goal by asking questions that can only be answered with “yes” or “no”. The winner is the first player to actually complete their hidden advancement.
Features
- automatically opens the menu when the second player joins;
- manual round start via command;
- three difficulty levels with separate clickable buttons;
- different random goals for each participant;
- only advancements the player has not yet completed are considered;
- the goal name is displayed as a vanilla advancement link with a description on hover;
- automatic winner detection via
PlayerAdvancementDoneEvent; - separate single-player test mode;
- complete difficulty map for BACAP 1.18.1;
- manual difficulty overrides for any advancement through the config;
- exclusion of technical and unsuitable advancements from selection.
Requirements
- Java 21;
- Paper 1.21.x (the plugin is built against Paper API 1.21.4);
- BlazeandCave's Advancements Pack with the
blazeandcavenamespace; - Maven 3.9+ is required only for building the plugin yourself.
The plugin does not include the BACAP datapack itself. It must be installed in the world separately.
Installation
- Install BACAP into the
datapacksfolder of the target world. - Place
bacap-guess-1.0.0.jarinto the server'spluginsfolder. - Place
config.ymlintoplugins/BacapGuess. - Fully restart the server.
- Run
/advgame statusand make sure BACAP advancements are detected and distributed across the difficulty categories.
After a local build, the generated file can be found here:
target/bacap-guess-1.0.0.jar
How to Play
A normal round requires exactly two players to be online on the server.
- Run
/advgame startor wait for the menu to open automatically after the second player joins. - One of the participants selects the shared difficulty level for the round.
- The plugin randomly assigns each player an unfinished goal of the selected difficulty.
- Each player receives their opponent's advancement, but cannot see their own goal.
- The participants ask each other questions and try to determine their own goal.
- The round ends automatically when one of the players completes the advancement assigned to them.
If a participant leaves while difficulty selection is open or during an active round, the game will be stopped.
Commands
| Command | Purpose |
|---|---|
/advgame start |
Open the difficulty selection and start a two-player round |
/advgame stop |
Stop the current game or difficulty selection |
/advgame test |
Open the difficulty selection for a single-player test goal |
/advgame test easy |
Start a test with an easy goal |
/advgame test medium |
Start a test with a medium goal |
/advgame test hard |
Start a test with a hard goal |
/advgame complete |
Force-complete all criteria of the current test goal |
/advgame status |
Show the plugin status and the number of goals in each difficulty category |
The /advgame difficulty <level> command is used internally by the menu buttons.
Round participants can click these buttons without administrative permission.
Permissions
bacapguess.admin
This permission is granted to server operators by default. It is required for starting, stopping, testing, and viewing diagnostic information.
Test Mode
Test mode allows you to verify the plugin without a second participant:
- Run
/advgame test. - Click the button for the desired difficulty.
- The plugin will show the assigned advancement and its ID.
- Complete the goal yourself or use
/advgame complete. - If the event is detected correctly, the plugin will report that the test was completed successfully.
Unlike a normal round, the player can see their own goal in test mode.
Difficulty Distribution
The built-in map was created from all advancement JSON files in
BlazeandCave's Advancements Pack 1.18.1.zip.
A total of 1106 advancement files were analyzed. After excluding root advancements and hidden
internal entries, the gameplay map contains:
| Level | Count |
|---|---|
| Easy | 220 |
| Medium | 379 |
| Hard | 431 |
| Excluded technical entries | 4 |
The classification takes the following factors into account:
- world progression stage and required dimension;
- rarity of the biome, structure, mob, or item;
- number of required criteria;
- required preparation and resources;
- dependence on random drops;
- cumulative grinding and expected round duration;
- BACAP frame type —
task,goal, orchallenge— as an additional, but not exclusive, indicator.
For example, blazeandcave:monsters/ender_worm is classified as hard despite
using a regular advancement frame.
Configuration
The full configuration is located at:
plugins/BacapGuess/config.yml
Project source file: src/main/resources/config.yml.
Configuration structure:
difficulty-map-version: "bacap-1.18.1-v1"
difficulty-overrides:
easy:
- "blazeandcave:building/a_masterpiece"
medium:
- "blazeandcave:adventure/a_chiptune_relic"
hard:
- "blazeandcave:monsters/ender_worm"
excluded-advancements:
- "blazeandcave:technical/big_cheater"
Each full ID should appear in only one list. If the same ID is accidentally
included in multiple categories, the last matching list in the order
easy, medium, hard takes precedence during loading. The
excluded-advancements list has the highest priority and removes the goal from the game entirely.
Restart the server after manually changing the configuration. There is currently no command for hot-reloading the config.
On first launch, the full config is copied from the JAR. If an old empty config without a map version is detected after updating the plugin, it will be populated automatically. Non-empty user-defined lists are not overwritten.
Advancements from newer BACAP versions that are not present in the explicit map are not ignored: the plugin assigns them using a fallback classifier based on their ID, name, description, frame, and indicators of late-game progression.
Updating the Map for Another BACAP Version
The project includes a generator:
tools/generate_bacap_difficulty.py
Example PowerShell command:
python tools\generate_bacap_difficulty.py `
"C:\path\to\BlazeandCave's Advancements Pack.zip" `
--output src\main\resources\config.yml
After generation, the map should be reviewed manually: the difficulty of a specific challenge is partly subjective and depends on the state of the world, available farms, and player progression.
Limitations
- only the
blazeandcavenamespace is supported; - normal rounds are designed for exactly two players;
- participants may already have different amounts of progress toward cumulative advancements;
- the classification is designed around a typical survival world and expected game-round duration;
- after updating BACAP, new or modified advancements should ideally be reviewed again.

