BACAP guess

BacapGuess is a mini-game for two players on a Paper server with the BlazeandCave's Advancements Pack (BACAP) datapack installed.

28 downloads 0 followers

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 blazeandcave namespace;
  • 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

  1. Install BACAP into the datapacks folder of the target world.
  2. Place bacap-guess-1.0.0.jar into the server's plugins folder.
  3. Place config.yml into plugins/BacapGuess.
  4. Fully restart the server.
  5. Run /advgame status and 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.

  1. Run /advgame start or wait for the menu to open automatically after the second player joins.
  2. One of the participants selects the shared difficulty level for the round.
  3. The plugin randomly assigns each player an unfinished goal of the selected difficulty.
  4. Each player receives their opponent's advancement, but cannot see their own goal.
  5. The participants ask each other questions and try to determine their own goal.
  6. 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:

  1. Run /advgame test.
  2. Click the button for the desired difficulty.
  3. The plugin will show the assigned advancement and its ID.
  4. Complete the goal yourself or use /advgame complete.
  5. 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, or challenge — 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 blazeandcave namespace 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.

No gallery available for this project.

Version Minecraft Loader Download

BACAP guess 1.0.0

1.0.0

1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11
paper
Download