File Details
FTB Quests Translator 1.3.2-1.20.1 (Forge)
- R
- Apr 18, 2026
- 83.65 KB
- 21
- 1.20.1
- Forge
File Name
ftbquesttransl-1.20.1-forge-1.3.2.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
### Added
- **DoH (DNS-over-HTTPS) Bypass Rewrite**: Completely rewrote the DoH bypass using raw SSL sockets with `InetAddress.getByAddress()`. Java automatically sets correct TLS SNI from the hostname while connecting to the DoH-resolved IP, and a manually constructed HTTP/1.1 request ensures the proper `Host` header. This enables reliable Google Translate access for users in regions with DNS-level censorship (e.g., Russia).
- **Batch Translation**: All text segments (title, subtitle, description lines) are now joined with a unique separator and sent in a **single HTTP request** instead of 7+ parallel requests. Dramatically reduces API rate limiting risk and improves translation speed.
- **HTML Entity Decoding**: Added `decodeHtmlEntities()` to convert API-returned HTML entities (`"` → `"`, `&` → `&`, `<` → `<`, etc.) back to plain text before rendering.
- **Format Code Sanitizer**: Added `sanitizeFormatCodes()` that strips `&` before any character that isn't a valid Minecraft formatting code, preventing "Invalid formatting!" errors in quest UI.
### Fixed
- **DoH 404 Error**: The old `HttpsURLConnection`-based DoH approach returned HTTP 404 because Google's edge servers couldn't route requests from raw IP + Host header. The new raw SSL socket approach resolves this completely.
- **`"` Artifacts in Quest Text**: MyMemory API returns HTML-encoded responses. After the format sanitizer stripped `&` from `"`, the text `quot;` remained visible. Fixed by decoding HTML entities before format sanitization.
- **AUTO Provider Selecting Wrong Provider**: When switching providers in config, stale probe results incorrectly marked Google as unavailable. Now `providerAvailability` is cleared on provider change, forcing a fresh availability check.
- **Google Translate JSON Parsing**: Raw SSL socket responses include chunked encoding remnants after the JSON body, causing `MalformedJsonException`. Added JSON boundary detection and lenient parsing to handle this.

