A Kotlin-based Minecraft server network with AWS ECS infrastructure management.
This is a simple Minecraft network setup with:
- SurvivalServer: A vanilla survival Paper server
- BungeeCordServer: BungeeCord proxy server for network connectivity
- Docker: Local development environment
- AWS ECS: Production infrastructure deployed on AWS Fargate
minecraft-network/
├── CLAUDE.md # Detailed project documentation
├── settings.gradle.kts # Module definitions
├── build.gradle.kts # Root build configuration
├── gradle/
│ └── libs.versions.toml # Centralized dependency versions
├── SharedCore/ # Shared utilities and models
│ ├── build.gradle.kts
│ └── src/main/kotlin/dev/nerdsatx/shared/
├── SurvivalPlugin/ # Survival server plugin
│ ├── build.gradle.kts
│ └── src/main/kotlin/dev/nerdsatx/survival/
├── BungeeCordServer/ # BungeeCord server plugin
│ ├── build.gradle.kts
│ ├── Dockerfile
│ └── src/main/kotlin/dev/nerdsatx/proxy/
├── SurvivalServer/ # Server files and configuration
│ ├── Dockerfile
│ └── server/
├── MinecraftCdk/ # AWS CDK infrastructure code
│ ├── build.gradle.kts
│ └── src/main/kotlin/dev/nerdsatx/cdk/
└── docker-compose.yml # Local development infrastructure
# 1. Build the plugins
./gradlew build
# 2. Start the servers
docker-compose up -d
# 3. Connect in Minecraft to localhost:25577See DOCKER.md for detailed Docker setup and usage.
# Build plugins
./gradlew build
# Install AWS CDK (first time only)
npm install -g aws-cdk
# Configure AWS credentials
aws configure
# Deploy infrastructure
cd MinecraftCdk
cdk bootstrap # first time only
cdk deploy# Build all plugins
./gradlew build
# Build specific plugin
./gradlew :SurvivalPlugin:shadowJar
./gradlew :BungeeCordServer:shadowJarOutput JARs:
SurvivalPlugin/build/libs/SurvivalPlugin.jarBungeeCordServer/build/libs/BungeeCordServer.jar
- Language: Kotlin 1.9.22
- Build Tool: Gradle with Kotlin DSL
- Minecraft Platform: Paper API 1.20.4
- Proxy: BungeeCord
- Infrastructure: AWS CDK with ECS Fargate
- Plugin Packaging: Shadow plugin for fat JARs
SurvivalPlugin ──→ SharedCore
BungeeCordServer ──→ SharedCore
MinecraftCdk (independent)
SurvivalServer (independent)
# Build entire project
./gradlew build
# Build specific plugin
./gradlew :SurvivalPlugin:shadowJar
# Clean and rebuild
./gradlew clean build
# Run tests
./gradlew test
# Deploy infrastructure
cd MinecraftCdk && cdk deployThe infrastructure deploys to AWS ECS Fargate with:
- VPC: Multi-AZ with public and private subnets
- BungeeCord: Public-facing proxy on port 25577
- Survival Server: Private subnet, accessed via BungeeCord
- S3 Bucket: For world backups and persistence
- CloudWatch: Logging and monitoring
Players connect to the BungeeCord proxy IP on port 25577, which routes them to the appropriate server.
See CLAUDE.md for detailed development guidelines, patterns, and best practices.
- Test locally with Docker:
docker-compose up - Customize plugin functionality in
SurvivalPlugin/ - Add custom BungeeCord commands in
BungeeCordServer/ - Configure server properties in
SurvivalServer/server/ - Deploy to AWS:
cd MinecraftCdk && cdk deploy - Set up automated backups to S3
- Add monitoring and alerting with CloudWatch
- README.md - This file, main project overview
- DOCKER.md - Detailed Docker setup and local development
- CLAUDE.md - Development guidelines and patterns
- MinecraftCdk/README.md - AWS infrastructure details
- Documentation/diagrams/ - Architecture diagrams
Architecture diagrams are generated from PlantUML source files in the Documentation module:
# Generate all diagrams
./gradlew :Documentation:build
# Output: Documentation/diagrams/architecture.pngPlantUML source files are located in Documentation/src/main/plantuml/.
Private project for Nerds @ ATX
