auth timeout policy

This commit is contained in:
Darto KLoning
2026-10-03 22:20:30 +07:00
parent eb08aae8bf
commit 0442e07dde
5 changed files with 56 additions and 42 deletions
+23 -9
View File
@@ -1,4 +1,4 @@
# Lobby Systems v1.8.4 — Fabric 26.2
# Lobby Systems v1.8.5 — Fabric 26.2
Server-side lobby framework untuk Minecraft Fabric 26.2. Lobby Systems menangani lobby placement, portal antar-dimensi, gamemode/gamerule per dimensi, Starter Kit, penyimpanan posisi player, dan hybrid authentication untuk premium + local/cracked player.
@@ -100,12 +100,14 @@ Default:
"requireLoginEveryJoin": false
```
Semantik:
Semantik `premiumAutoLogin` dan `requireLoginEveryJoin`:
- `false`: premium player cukup dengan Mojang authentication dan auto-login; local/cracked player tetap wajib password Lobby Systems pada setiap connection.
- `true`: premium player tetap diverifikasi Mojang, tetapi juga wajib mempunyai dan memasukkan password Lobby Systems setiap connection. Local/cracked player tetap wajib password seperti biasa.
- `premiumAutoLogin=true` + `requireLoginEveryJoin=false`: premium player cukup dengan Mojang authentication dan auto-login.
- `premiumAutoLogin=false`: premium player tetap diverifikasi Mojang, tetapi wajib membuat/memasukkan password Lobby Systems.
- `requireLoginEveryJoin=true`: premium player juga wajib password Lobby Systems setiap connection, terlepas dari auto-login policy.
- Local/cracked player selalu memakai password Lobby Systems setiap connection.
Jadi `true` merupakan lapisan password tambahan untuk premium account, bukan pengganti Mojang authentication.
Password Lobby Systems untuk premium adalah lapisan tambahan; Mojang authentication tetap dipertahankan.
### Server Rules
@@ -115,6 +117,8 @@ Rules dipisahkan dari Auth config dan dibuat otomatis sebagai `config/lobby/auth
{
"enabled": true,
"version": 1,
"timeoutSeconds": 60,
"timeoutMessage": "You did not accept the server rules within {seconds} seconds. Please reconnect and try again.",
"title": "Server Rules",
"introduction": "Please read and accept our rules:",
"rules": [
@@ -223,7 +227,7 @@ Console menampilkan `RELOAD START` dan `RELOAD COMPLETE`. Player admin yang menj
- Memperbaiki crash `ConcurrentModificationException` ketika authentication timeout men-disconnect player dari dalam server tick. Auth sekarang mengiterasi snapshot player list, bukan live `ArrayList`.
- Initial dialog ditunda singkat sampai player benar-benar tersedia sebagai target command; ini menghilangkan kegagalan awal `No player was found`.
- Dialog tidak lagi dibuka ulang setiap `reminderIntervalSeconds`, karena itu dapat menghapus password yang sedang diketik.
- Countdown sekarang memakai dua fase independen melalui action bar: Rules memakai `rules.json -> timeoutSeconds`, sedangkan Register/Login memakai `auth/config.json -> authenticationTimeoutSeconds`. Timer Register/Login dimulai ulang dari penuh setelah Rules diterima.
- Rules dan Register/Login memakai timeout independen: Rules memakai `rules.json -> timeoutSeconds`, sedangkan Register/Login memakai `auth/config.json -> authenticationTimeoutSeconds`. Timer Register/Login dimulai ulang dari penuh setelah Rules diterima.
- Rules dipindahkan ke `config/lobby/auth/rules.json` dan Rules dialog dibangun dari file tersebut.
- `rulesEnabled` dan `rulesVersion` lama dipindahkan menjadi `enabled` dan `version` di `rules.json`.
- `/ls reload` juga me-reload `rules.json` dan mengevaluasi ulang acceptance/session player online.
@@ -240,8 +244,7 @@ All Rights Reserved. Source dan asset Lobby Systems tidak boleh didistribusikan
## Catatan v1.8.3
- Memperbaiki compile error Minecraft 26.2 karena `ServerPlayer.displayClientMessage(Component, boolean)` sudah tidak tersedia pada mapping/API target ini.
- Countdown authentication sekarang dikirim langsung dengan vanilla `ClientboundSetActionBarTextPacket`, sehingga tetap tampil sebagai action bar tanpa bergantung pada method player yang telah dihapus.
- Warna countdown menggunakan `ChatFormatting`/component styling, bukan legacy section-code di payload action bar.
- Implementasi action-bar countdown yang diperkenalkan sementara pada v1.8.3 kemudian dihentikan pada v1.8.5 karena Dialog bersifat modal dan countdown HUD tidak memberi UX yang konsisten.
- Seluruh perubahan v1.8.2 (safe timeout iteration, delayed initial dialog, `rules.json`, dan global `/ls reload`) tetap dipertahankan.
@@ -251,6 +254,17 @@ All Rights Reserved. Source dan asset Lobby Systems tidak boleh didistribusikan
- `rules.json` memiliki `timeoutSeconds` (default `60`) untuk batas waktu menerima Rules.
- Register/Login tetap memakai `authenticationTimeoutSeconds` (default `120`).
- Setelah Rules diterima, timer Rules dihentikan dan timer Register/Login dimulai dari awal.
- Countdown action bar memakai label sesuai fase: `Accept the rules within`, `Register within`, atau `Login within`.
- Tidak ada countdown visual pada HUD/action bar; timeout berjalan di server dan hanya muncul sebagai alasan disconnect jika waktunya habis.
- Timeout Rules dan timeout authentication memiliki pesan disconnect yang berbeda.
- `/ls reload` tetap memuat ulang seluruh konfigurasi Lobby Systems, termasuk `auth/rules.json` dan `auth/config.json`.
## v1.8.5 — Auth timeout messages & premium login policy
- Menghapus countdown visual dari action bar. Dialog Rules/Register/Login tetap bersih tanpa HUD timer yang tertutup layer Dialog.
- Two-stage timeout tetap dipertahankan secara server-side: Rules memakai `rules.json -> timeoutSeconds`, sedangkan Register/Login memakai `auth/config.json -> authenticationTimeoutSeconds`.
- `rules.json` sekarang memiliki `timeoutMessage`. Placeholder `{seconds}` otomatis diganti dengan nilai `timeoutSeconds`.
- `auth/config.json` sekarang memiliki `registrationTimeoutMessage`, `loginTimeoutMessage`, dan fallback `authenticationTimeoutMessage`; placeholder `{seconds}` memakai `authenticationTimeoutSeconds`.
- `premiumAutoLogin=false` sekarang benar-benar mematikan auto-login Lobby Systems untuk premium player. Mojang authentication tetap berjalan, kemudian premium player diarahkan ke Register/Login Dialog dan membutuhkan password Lobby Systems.
- `premiumAutoLogin=true` + `requireLoginEveryJoin=false` tetap merupakan mode premium auto-login. `requireLoginEveryJoin=true` tetap memaksa password Lobby Systems untuk premium player setiap join.
- `/ls reload` memuat ulang policy dan pesan timeout Auth/Rules tanpa restart server.