1.1-1.20.2
Compatibility
Changes
Mineseeker v1.1 - Initial Release ๐
Minecraft Version: 1.20.1
๐ Overview
Mineseeker is a powerful Minecraft Forge mod that helps players efficiently locate structures and biomes using advanced search algorithms. Built with software design patterns and clean code principles as part of CPIT252 coursework at King Abdulaziz University.
โจ Features
๐๏ธ Structure Search
- Find any Minecraft structure with a simple command
- Supports all vanilla structures (villages, temples, strongholds, bastions, etc.)
- Smart duplicate filtering (avoids multiple results from same chunk)
- Adaptive sampling adjusts search speed based on radius
- Interactive click-to-teleport coordinates
๐ Biome Search
- Locate specific biomes quickly
- Optimized ring-based search pattern
- Support for biome tags and direct biome IDs
- Distance-sorted results
๐ฏ Smart Search Algorithm
- Ring-based expansion: Searches in expanding circles from player position
- Adaptive sampling: Fewer samples for large radii (faster), more for small radii (accurate)
- Early termination: Stops after consecutive empty rings
- Safety limits: Prevents infinite loops with max iteration caps
- Candidate multiplier: Finds 3x requested structures, then returns closest
๐ก User Experience
- Tab completion for structure and biome names
- Color-coded clickable coordinates (green)
- Hover-to-see "Click to teleport" tooltip
- Distance display in blocks
- Clear error messages for invalid inputs
๐๏ธ Design Patterns Implemented
1. Builder Pattern
- Location:
MineseekerCommand.java - Implementation: Uses Brigadier's
LiteralArgumentBuilderto construct complex commands incrementally - Benefit: Readable, maintainable command structure
2. Command Pattern
- Location:
MineseekerCommand.java+MineseekerLogic.java - Implementation: Separates command invocation from execution logic
- Benefit: Loose coupling between UI and business logic
3. Facade Pattern
- Location:
MineseekerLogic.java - Implementation: Provides simplified interface to complex search operations
- Benefit: Hides implementation complexity from command layer
4. Strategy Pattern
- Location:
search/SearchStrategy.javaand implementations - Implementation: Pluggable search algorithms (Radial, Spiral)
- Benefit: Easy to add new search patterns without modifying existing code
๐ฆ What's Included
Core Files
- Mineseeker.java - Main mod class and registration
- MineseekerCommand.java - Command registration (Builder + Command patterns)
- MineseekerLogic.java - Facade for search operations
- MineseekerSuggestions.java - Tab completion provider
- StructureSearchLogic.java - Structure search implementation
- BiomeSearchLogic.java - Biome search implementation
Design Pattern Implementation
- search/SearchStrategy.java - Strategy interface
- search/strategies/RadialSearchStrategy.java - Circular search pattern
- search/strategies/SpiralSearchStrategy.java - Spiral outward pattern
Utilities
- util/ComponentUtils.java - Reusable utilities for distance calculation and UI components
Configuration
- Config.java - Mod configuration handler
๐ฎ Usage
Structure Search
/mineseeker structure <structure_name> <count> [radius]
Examples:
/mineseeker structure village 5
/mineseeker structure stronghold 1 30000
/mineseeker structure desert_pyramid 3 15000
/mineseeker structure mansion 1 50000
Biome Search
/mineseeker biome <biome_name> <count> [radius]
Examples:
/mineseeker biome mushroom_fields 1
/mineseeker biome ice_spikes 2 20000
/mineseeker biome cherry_grove 3 15000
Parameters
- structure_name / biome_name: Use tab completion for valid options
- count: Number of locations to find (1-50)
- radius: Search radius in blocks (512-64,000, default: 12,000)
Permissions
- Requires permission level 2 (operator)
๐ง Technical Details
Performance Optimizations
-
Adaptive Sampling:
- Small radius (โค2000): 32 samples/ring (high accuracy)
- Medium radius (โค10000): 24 samples/ring
- Large radius (โค30000): 16 samples/ring
- Very large radius (>30000): 12 samples/ring (prioritize speed)
-
Early Termination: Stops after 3 consecutive empty rings
-
Safety Limits: Max 200 iterations to prevent infinite loops
-
Chunk-based Deduplication: Prevents duplicate structures from same chunk
Search Constants
STRUCTURE_RING_SIZE = 512 blocks
BIOME_RING_SIZE = 256 blocks
STRUCTURE_CANDIDATE_MULTIPLIER = 3x
MAX_EMPTY_RINGS = 3
MAX_TOTAL_ITERATIONS = 200
๐งช Testing
Test Coverage
- 38 comprehensive unit tests
- Test files:
MineseekerAppTest.java,SearchStrategyTest.java
Test Categories
- โ Distance calculation tests (10 tests)
- โ Constant validation tests (12 tests)
- โ Strategy Pattern tests (12 tests)
- โ Private method logic tests (4 tests)
Testing Approaches
- Direct public method testing
- Reflection-based private method testing
- Edge case validation
- Pattern implementation verification
๐ Documentation
JavaDoc Coverage
- All public classes documented
- Design patterns clearly labeled
- Method parameters and return values explained
- Usage examples provided
Code Quality
- No code smells
- DRY principle: Eliminated duplicate code via ComponentUtils
- Single Responsibility: Each class has one clear purpose
- Consistent formatting: Professional code style throughout
๐ Educational Value
Learning Outcomes Demonstrated
- Design Patterns: Practical implementation of 4 different patterns
- Clean Code: Professional-grade code organization and documentation
- Testing: Comprehensive unit test coverage
- Version Control: Meaningful commit history showing development progression
- Software Engineering: Real-world application of SOLID principles
Pattern Relationships
User Input
โ
MineseekerCommand (Builder Pattern - constructs command)
โ
MineseekerLogic (Facade Pattern - simplifies interface)
โ
StructureSearchLogic (Command Pattern - executes search)
โ
SearchStrategy (Strategy Pattern - pluggable algorithm)
โ
ComponentUtils (Utilities - reusable helpers)
๐ ๏ธ Installation
- Download
mineseeker-1.0.0.jar - Place in your Minecraft
mods/folder - Launch Minecraft with Forge 47.x.x
- Open a world and run
/mineseekerto test
๐ Requirements
- Minecraft: 1.20.1
- Forge: 47.x.x or higher
- Java: 17 or higher
- Permission: Operator level (permission level 2)
LLM Usage Disclosure
AI assistance (ChatGPT/Claude) was used for:
- Search algorithm optimization and ring-based pattern design
- Design pattern implementation guidance and best practices
- Code refactoring suggestions for clean code principles
- Documentation and JavaDoc generation
- Testing strategy recommendations
All AI-generated content was thoroughly reviewed, modified, tested, and validated by team members to ensure correctness and understanding.
๐ Known Issues
None at this time. Please report issues on our GitHub repository.
๐ License
[This project is licensed under the MIT License.]
Thank you for using Mineseeker! ๐ฎโจ
For questions, suggestions, or contributions, please visit our GitHub repository or contact the development team.
Built with โค๏ธ for CPIT252 Final Project
Full Changelog: https://github.com/CPIT252-IT1-Fall25/course-project-mineseeker/compare/1.0...v1.1
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:JVDfvckF:8J5oT76R"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:JVDfvckF:8J5oT76R"
}
