Pm me
JDK: Migrated to OpenJDK 25.
Database: Optimized for MySQL 8.0.
#Java 25 Compatibility
- Replaced script engine** — removed legacy `ecj-4.4.jar` + `java-engine-1.8.jar
. Created `JavaExecutionEngine.java` using JDK's built-in `javax.tools.JavaCompiler` API. All scripts now compile and load at runtime on JDK 25.
- Fixed `SelectorThread.java
#Enabled Disabled Systems
- TvT Event** — added initialization in `GameServer.java`. Config: `config/events/tvt_event.properties`.
- Achievements** — added initialization. Config: `config/mods/achievements.xml` (25 achievements).
- GodSystem** — added `GodSystem.getInstance()` initialization. Weekly "God of the Server" voting system via database.
- All three systems had complete code and configs present
# Localization System (EN/RU)
The server supports two languages: **Russian** (default) and **English**.
Each player's language preference is stored in the database and persists across sessions.
1. Faction NPC** — language selection button appears when choosing a faction
2. Voice command** — type `.lang` in chat to toggle, or `.lang en` / `.lang ru` to set explicitly
3. Localization all Configs
#Fake Player system
The `.fakeplayer` voice command allows a player to leave their character in the game world as a fake online player (bot without a real client).
### How it works
1. Player types `.fakeplayer` in chat
2. Character ID, name and IP are saved to the `fakeplayer` database table
3. Player is disconnected from the server
4. On next server restart, all characters from the `fakeplayer` table are restored and spawned in the world as fake players
Critical Fixes and Important Fixes
1. Security Fixes
- Removed backdoor voice command — any player could execute `**' to drop all database tables and shut down the server. No access check was present. File deleted and unregistered from `VoicedCommandHandler`.
- Fixed server crash in `SelectorThread`** — `System.exit(0)` was called when a network read buffer was full, allowing a potential DoS attack via crafted packets. Replaced with connection close for the offending client.
- Removed suspicious `PingP` class** from `L2PcInstance` — opened a socket to `www.google.com:80` every 4 seconds and broadcast the result to all players. Unnecessary external connection removed.
2.All Warning Fixes
- Code Quality: Resolved all warnings across the core.
Database Fixes
Driver & Configuration Fixes
- Updated deprecated MySQL JDBC driver from `com.mysql.jdbc.Driver` to `com.mysql.cj.jdbc.Driver` in `L2DatabaseFactory.java`
- Fixed `geoengine.properties` location — moved to `config/` where the code expects it
- Fixed login server classpath in `startLoginServer.bat` — corrected library path to `gameserver/libs`
- Increased max player limit from 6 to 5000
3. CastleWars — addSpawn() returns null
4. Faction Flag — wrong NPC IDs
5.Fix: replace with correct NPC IDs
6. Base Teleport Buff overwritten
7. Rebirth Skills config
8. Faction Outposts — NPE + HTML paths
9. Donate Instance — null checks
10. PvP Map Change — wrong parameter
11. Faction Guards — NPC ID mismatch
12. Achievements — NPE protection
13. Blessed Enchant Scroll — off-by-one
14. TvT Event — NPE + TP1 coordinates
15. Dungeon Zone — static map reset
16. Faction Points — VIP multiplier
17. Flagged player attack