This commit is contained in:
Darto KLoning
2026-10-03 20:36:02 +07:00
parent 73ca595a96
commit 6c9d3fb08f
8 changed files with 201 additions and 58 deletions
+42 -9
View File
@@ -1,4 +1,4 @@
# Lobby Systems v1.8.1 — Fabric 26.2
# Lobby Systems v1.8.3 — 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.
@@ -44,10 +44,11 @@ config/lobby/
├── starterkit-recipients.json
└── auth/
├── config.json
├── rules.json
└── accounts.json
```
`/ls reload` me-reload **seluruh konfigurasi Lobby Systems**, termasuk config utama, Auth, portal, dimension gamemode, dimension gamerule, dan Starter Kit. Perubahan Auth juga diterapkan ke session player yang sedang online. Perubahan `rulesVersion`, `rulesEnabled`, `requireLoginEveryJoin`, dan `enabled` tidak memerlukan restart server.
`/ls reload` me-reload **seluruh konfigurasi Lobby Systems**, termasuk config utama, Auth, portal, dimension gamemode, dimension gamerule, dan Starter Kit. Perubahan Auth juga diterapkan ke session player yang sedang online. Perubahan Auth, termasuk `rules.json`, `requireLoginEveryJoin`, dan `enabled`, tidak memerlukan restart server.
## Lobby dan login placement
@@ -108,7 +109,28 @@ Jadi `true` merupakan lapisan password tambahan untuk premium account, bukan pen
### Server Rules
Auth config menyediakan `rulesEnabled` dan `rulesVersion`. Acceptance disimpan per account. Naikkan `rulesVersion` jika semua account perlu menerima versi rules yang baru. `/ls reload` langsung menerapkan perubahan versi rules kepada player yang sedang online.
Rules dipisahkan dari Auth config dan dibuat otomatis sebagai `config/lobby/auth/rules.json`. File ini adalah sumber isi window Rules:
```json
{
"enabled": true,
"version": 1,
"title": "Server Rules",
"introduction": "Please read and accept our rules:",
"rules": [
"No cheating, hacking, or exploits.",
"Be respectful to all players.",
"No advertising or spam.",
"Follow staff instructions.",
"Have fun and play fair!"
],
"footer": "You must accept these rules to continue.",
"agreementLabel": "I have read and agree to the server rules",
"acceptButton": "I Accept"
}
```
Acceptance disimpan per account. `version` hanya perlu dinaikkan ketika perubahan rules memang harus diminta untuk diterima ulang oleh seluruh player. Mengedit teks tanpa menaikkan `version` tidak menghapus acceptance lama. `/ls reload` membaca ulang file ini dan menerapkan perubahan runtime.
### Auth account data
@@ -187,7 +209,7 @@ Command `/ls` administratif memerlukan operator permission sesuai implementasi c
Reload adalah satu pintu untuk seluruh runtime configuration. Urutannya mencakup:
1. `config.json`
2. Auth `config.json` + `accounts.json`
2. Auth `config.json` + `rules.json` + `accounts.json`
3. `portals.json` + portal visual repair
4. `dimension-gamemodes.json` + apply ke dimension/player
5. `dimension-gamerules.json` + apply ke loaded dimensions
@@ -196,12 +218,15 @@ Reload adalah satu pintu untuk seluruh runtime configuration. Urutannya mencakup
Console menampilkan `RELOAD START` dan `RELOAD COMPLETE`. Player admin yang menjalankan command menerima ringkasan hasil reload tanpa broadcast ke player lain.
## Catatan v1.8.1
## Catatan v1.8.2
- Memperbaiki compile error Fabric 26.2 pada Auth dialog command dispatch: `ServerPlayer#getServer()` diganti dengan server dari `player.level().getServer()`.
- `/ls reload` sekarang tidak hanya membaca ulang Auth config tetapi juga menerapkan perubahan Auth ke session player yang sedang online.
- README diatur ulang berdasarkan subsistem, bukan riwayat patch versi lama.
- Dialog Rules/Register/Login tetap menjadi primary authentication UI; command login/register dipertahankan sebagai fallback.
- 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 authentication ditampilkan setiap detik melalui action bar. Setelah `authenticationTimeoutSeconds` habis, player otomatis disconnect.
- 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.
## Known compatibility note
@@ -210,3 +235,11 @@ Local/cracked identity tidak memiliki Mojang profile public key. Jika server mem
## License
All Rights Reserved. Source dan asset Lobby Systems tidak boleh didistribusikan atau digunakan ulang di luar izin pemilik project.
## 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.
- Seluruh perubahan v1.8.2 (safe timeout iteration, delayed initial dialog, `rules.json`, dan global `/ls reload`) tetap dipertahankan.