You've already forked Epicnabbo-Catalogus-Updated-Daily
Arcturus Morningstar Extended
A high-performance, open-source Habbo hotel emulator built with Java 21 and Netty.
Features
- Modern Architecture - Built on Netty for high-performance networking
- Database Optimization - HikariCP connection pooling with prepared statement caching
- Efficient Collections - Trove collections (THashMap, THashSet) for faster operations
- Async Pathfinding - A* pathfinding with CompletableFuture for non-blocking operations
- Thread Pooling - Optimized thread management for concurrent tasks
- In-Memory Caching - Frequently accessed data cached at startup
Requirements
- Java 21 or higher
- MySQL 8.0+
- Maven 3.8+
Installation
-
Clone the repository
git clone https://github.com/your-repo/arcturus-morningstar-extended.git cd arcturus-morningstar-extended/Emulator -
Configure the database
- Create a MySQL database
- Import the SQL schema (see
databasefolder) - Edit
config.iniwith your database credentials
-
Build the project
mvn clean package -
Run the emulator
java -jar target/Habbo-4.0.5-jar-with-dependencies.jar
Configuration
Edit config.ini to configure:
# Database
db.hostname=localhost
db.port=3306
db.database=habbo
db.username=root
db.password=yourpassword
db.pool.maxsize=50
db.pool.minsize=10
# Game Server
game.port=30000
# RCON
rcon.port=30001
rcon.allowed=127.0.0.1
Performance Tuning
Database Pool Settings
The emulator uses HikariCP with optimized settings:
| Setting | Default | Description |
|---|---|---|
db.pool.maxsize |
50 | Maximum connections |
db.pool.minsize |
10 | Minimum idle connections |
cachePrepStmts |
true | Prepared statement caching |
useServerPrepStmts |
true | Server-side prepared statements |
rewriteBatchedStatements |
true | Batch query optimization |
Thread Pool Settings
Configure in config.ini:
runtime.threads=16
Architecture
Core Components
- Database - HikariCP connection pooling with query optimization
- Network - Netty-based TCP/UDP server
- Game Engine - Room management, user handling, items
- Pathfinding - A* algorithm with height support
- Plugin System - Event-driven architecture
Key Classes
Emulator.java- Main entry pointDatabasePool.java- Connection pool managementRoomManager.java- Room lifecycle managementPathfinderImpl.java- A* pathfinding implementationCatalogManager.java- Catalog and shop managementItemManager.java- Furniture/items management
Development
Building
# Development build
mvn compile
# Production build
mvn clean package -DskipTests
# Run tests
mvn test
Project Structure
src/main/java/com/eu/habbo/
├── database/ # Database connections and pooling
├── habbohotel/ # Core game logic
│ ├── bots/ # Bot AI
│ ├── catalog/ # Shop system
│ ├── commands/ # Console commands
│ ├── guilds/ # Guild system
│ ├── items/ # Furniture/items
│ ├── pets/ # Pet system
│ ├── rooms/ # Room management & pathfinding
│ └── users/ # User management
├── messages/ # Network messages (incoming/outgoing)
├── networking/ # Network handlers
├── threading/ # Thread management
└── util/ # Utilities
Performance Optimizations
Implemented Optimizations
-
Database Layer
- HikariCP connection pooling
- Prepared statement caching
- Batch statement rewriting
- Server-side prepared statements
-
Memory & Collections
- Trove collections (faster than standard Java)
- In-memory caching for static data
- Object reuse where possible
-
Networking
- Netty ByteBuf for zero-copy operations
- Efficient buffer handling
- Async I/O operations
-
Pathfinding
- A* algorithm with optimization
- Timeout protection for long paths
- Tile state caching
Benchmark Expectations
With default settings:
- Database queries: 20-40% faster with connection pooling
- Memory usage: Optimized with Trove collections
- Network throughput: High-performance with Netty
- Pathfinding: Protected with execution timeouts
Troubleshooting
Common Issues
Database Connection Failed
- Check MySQL is running
- Verify credentials in config.ini
- Ensure database exists
OutOfMemory Errors
- Increase heap size:
java -Xmx4g -jar ... - Reduce pool size in config.ini
Lag Issues
- Increase
runtime.threadsin config.ini - Optimize MySQL with indexes
- Use SSD for database storage
Logging
Logs are written to:
- Console (stdout)
logs/folder (file output)
Configure logging in src/main/resources/logback.xml
License
This project is for educational purposes. This is a fork of the original Arcturus emulator.
Credits
- Original Arcturus team
- Habbo Hotel (Sulake)
- Netty Project
- Trove Collections
- HikariCP
Support
For issues and questions:
- GitHub Issues: Report bugs and feature requests
- Discord: Join the community
Version: 4.0.5
Java: 21+
Build: Maven