FlintBench
FlintBench is the official repository containing all Flint tests for validating Minecraft server behavior against vanilla. Tests created by the community should be contributed here.
Purpose
Section titled “Purpose”FlintBench provides:
- Vanilla behavior validation - Tests verify servers match vanilla Minecraft
- Compliance tracking - Compare implementations against Paper, Purpur, Spigot, Fabric
- Community-driven tests - Anyone can contribute new tests
- Organized test suite - Tests categorized by game mechanic
Repository
Section titled “Repository”git clone https://github.com/FlintTestMC/FlintBenchmarkTest Organization
Section titled “Test Organization”Tests are organized by mechanic type:
tests/├── connectible/ # Blocks that connect to neighbors│ ├── fence.json # Fence connections (12 wood types)│ ├── wall.json # Wall connections│ ├── iron.json # Iron bar connections│ └── fences/ # Advanced fence tests│ ├── fence_row_connections.json│ └── use_item_on.json│└── fluids/ # Water and lava mechanics ├── mixing.json # Lava + water = obsidian/cobblestone └── water/ # Water-specific tests ├── horizontal_spread.json ├── infinite_source.json ├── shortest_path.json └── ...Running FlintBench Tests
Section titled “Running FlintBench Tests”Use FlintCLI to run the test suite:
# Run all testsflintmc FlintBenchmark/tests/ -s localhost:25565 -r
# Run only fluid testsflintmc FlintBenchmark/tests/fluids/ -s localhost:25565 -r
# Run tests by tagflintmc FlintBenchmark/tests/ -s localhost:25565 -r -t waterContributing Tests
Section titled “Contributing Tests”When you create tests using FlintCLI recording, contribute them to FlintBench:
- Fork the FlintBenchmark repository
- Add your test to the appropriate category folder
- Format your test:
npm run format - Submit a pull request
Test Requirements
Section titled “Test Requirements”- Tests must validate vanilla Minecraft behavior
- Use descriptive names and tags
- Include a clear description
- Place in the correct category folder
Formatting
Section titled “Formatting”FlintBench uses FracturedJson for consistent formatting:
npm installnpm run format # Format all testsnpm run format:check # Verify formatting (used in CI)Current Test Coverage
Section titled “Current Test Coverage”| Category | Tests | Description |
|---|---|---|
| Connectible | 7 | Fences, walls, iron bars |
| Fluids | 20 | Water spread, sources, mixing |
See TODO.md in the repository for blocks still needing tests.
Next Steps
Section titled “Next Steps”- FlintCLI - Run tests from FlintBench
- Recording Tests - Create new tests to contribute