🔧 Developer Documentation¶
This section is for developers and advanced users who want to contribute to Educator Tools, customize the pack, or understand how it works.
If you're a teacher looking to use Educator Tools in your classroom, see the Quick Start Guide instead.
Overview¶
Educator Tools is an open-source Minecraft Education behavior pack built with modern development tools and workflows. This documentation will help you set up a development environment, understand the codebase, and contribute improvements.
Getting Started as a Developer¶
Prerequisites¶
Before you begin developing:
- Minecraft Education installed and working
- Basic coding knowledge (JavaScript/TypeScript helpful but not required)
- Git installed for version control
- Text editor (VS Code recommended)
- Node.js (if working with build scripts)
Quick Start for Developers¶
- Development Setup - Set up your development environment
- Contributing Guide - Understand the contribution workflow
- Clone the repository and start exploring the code
- Make changes and test them locally
- Submit a pull request when ready
Core Documentation¶
Development Setup¶
Learn how to set up your development environment to work on Educator Tools.
Topics covered: - Installing required tools - Cloning the repository - Building the pack from source - Running tests - Debugging techniques
Read Development Setup Guide →
Contributing¶
Guidelines for contributing code, features, or bug fixes to Educator Tools.
Topics covered: - Contribution workflow - Code style and standards - Pull request process - Issue reporting guidelines - Testing requirements
Translations¶
How to add or update language translations for Educator Tools.
Topics covered: - Translation file structure - Adding a new language - Updating existing translations - Testing translations in-game - Localization best practices
Advanced Letter Blocks Configuration¶
Create custom letter block sets with your own fonts, colors, and backgrounds.
Topics covered: - JSON configuration structure - Adding custom fonts - Creating background images - Unicode character support - Building and testing custom letter blocks
Read Advanced Configuration Guide →
Repository Structure¶
Understanding the codebase organization:
Educator-Tools/
├── regolith/ # Build system configuration
│ ├── filters/ # Build filters and processors
│ └── filters_data/ # Filter data and templates
│ └── modular_mc/
│ └── letter_blocks/ # Letter blocks configuration
│ ├── scope.ts # Letter sets definition
│ ├── fonts/ # Custom font files
│ └── *.png # Background images
│
├── packs/ # Output directory for built packs
│ └── BP/ # Behavior Pack
│ ├── manifest.json # Pack metadata
│ ├── scripts/ # Game scripts
│ └── items/ # Item definitions
│
├── src/ # Source files
│ └── ... # TypeScript/JavaScript source
│
├── .github/ # GitHub configuration
│ └── workflows/ # CI/CD workflows
│
└── docs/ # Documentation (this wiki)
Development Workflow¶
Typical Development Cycle¶
- Fork and clone the repository
- Create a feature branch (
git checkout -b feature/my-new-feature) - Make your changes in the source files
- Build the pack using the build system
- Test in Minecraft Education
- Commit changes with clear messages
- Push to your fork and create a pull request
- Address review feedback if needed
- Merge when approved
Testing Changes¶
Local testing:
1. Build the pack (npm run build or equivalent)
2. Copy output to Minecraft's behavior packs folder
3. Load into a test world
4. Verify functionality
5. Check console/logs for errors
Automated testing: - Run test suite before committing - CI/CD runs tests automatically on pull requests - All tests must pass before merge
Technical Architecture¶
Key Technologies¶
Build System: - Regolith - Minecraft addon build tool - Node.js - Build scripts and tooling - TypeScript - Type-safe scripting (if applicable)
Game Integration: - Behavior Packs - Server-side logic and content - Script API - Minecraft scripting interface - JSON - Data definitions and configuration
How It Works¶
- Source files define tools and features
- Build system processes and compiles source
- Behavior pack is generated with all assets
- Minecraft loads pack and executes scripts
- Teachers interact through in-game UI
Adding New Features¶
Planning a New Feature¶
Before coding:
- Check existing issues - Has it been suggested?
- Create a feature request issue - Discuss the idea
- Get feedback from maintainers
- Plan the implementation - Design before coding
Implementation Checklist¶
When adding a new tool or feature:
- [ ] Design the user interface (how teachers interact)
- [ ] Write the backend logic (scripts and data)
- [ ] Add localization strings for all languages
- [ ] Create documentation (wiki page)
- [ ] Write tests for the feature
- [ ] Test in multiple scenarios
- [ ] Update CHANGELOG
- [ ] Submit pull request with screenshots/videos
Code Style Guidelines¶
JavaScript/TypeScript¶
// Use clear, descriptive variable names
const playerName = player.getName();
// Functions should be well-commented
/**
* Teleports a player to a target location
* @param {Player} player - The player to teleport
* @param {Location} target - The destination
*/
function teleportPlayer(player, target) {
// Implementation
}
// Use consistent formatting
if (condition) {
doSomething();
} else {
doSomethingElse();
}
JSON Configuration¶
{
"id": "descriptive_identifier",
"property": "value",
"nested": {
"formatted": "consistently",
"indented": "properly"
}
}
Best practices:
- Use 2-space indentation
- No trailing commas in JSON
- Validate JSON before committing
- Comment complex logic
Debugging Tips¶
Common Issues¶
Pack doesn't load:
- Check manifest.json format
- Verify pack UUID is valid
- Look for JSON syntax errors in definitions
Scripts don't run:
- Check console output in Minecraft
- Verify script module is enabled in manifest
- Test script syntax separately
Items don't appear:
- Confirm item definitions are correct
- Check creative inventory categories
- Verify identifiers are unique
Debugging Tools¶
- Minecraft logs -
%localappdata%\Packages\Microsoft.MinecraftEducationEdition_8wekyb3d8bbwe\LocalState\logs - Console commands - Use
/reloadto reload behavior packs - JSON validators - JSONLint, VS Code built-in
- Script debugging - Console.log() statements
Contributing Back¶
Pull Request Process¶
- Fork the repository to your GitHub account
- Clone your fork locally
- Branch from main (
git checkout -b feature/your-feature) - Make changes and test thoroughly
- Commit with descriptive messages
- Push to your fork
- Create PR from your fork to the main repo
- Respond to review feedback
- Merge when approved
What Makes a Good PR¶
✅ Clear description - Explain what and why ✅ Small, focused changes - One feature or fix per PR ✅ Tests included - Verify functionality ✅ Documentation updated - Wiki pages if needed ✅ Clean commits - Logical, well-described commits ✅ No unrelated changes - Stay on topic
Community Resources¶
Getting Help¶
- GitHub Discussions - Ask questions
- GitHub Issues - Report bugs, suggest features
- Contributing Guide - Contribution guidelines
Staying Updated¶
- Watch the repository - Get notified of changes
- Read release notes - Understand what's new
- Follow discussions - Participate in design decisions
Advanced Topics¶
Custom Letter Blocks¶
See Advanced Letter Blocks Configuration for detailed guide on:
- Creating custom font sets
- Adding Unicode characters
- Designing background images
- Building image-only blocks
Internationalization¶
See Translations for information on:
- Translation file format
- Adding new languages
- Testing localized content
- Language fallback system
Build System Customization¶
For advanced users wanting to modify the build process:
- Study
regolithconfiguration - Study
modular_mcdocumentation - Understand filter system
- Create custom build filters
- Optimize build performance
License and Legal¶
Educator Tools is open-source software. When contributing:
- Respect the license - Follow terms of the project license
- Original work only - Don't include copyrighted content
- Attribute properly - Credit external resources
- Follow Minecraft EULA - Comply with Minecraft's terms
Need Help?¶
For development questions: → GitHub Discussions
For bug reports: → GitHub Issues
For general usage (non-developer): → Getting Help
Back to: Home | Contributing | Development Setup