Add dimension gamemode and read gamerule list

This commit is contained in:
Darto KLoning
2026-09-06 15:55:55 +07:00
parent db84a0e4dd
commit 5358bf9a8e
6 changed files with 429 additions and 12 deletions
+63 -10
View File
@@ -1,8 +1,8 @@
# Lobby Systems v1.2.2 — Fabric 26.2
# Lobby Systems v1.3.0 — Fabric 26.2
Server-side lobby routing untuk Minecraft 26.2/Fabric. Versi 1.2.2 menambahkan portal antar-dimensi berbasis WorldEdit selection, last-position per player/per dimension, minimum playtime sebelum kembali ke lobby, dan konfigurasi terpusat di `config/lobby/`.
Server-side lobby routing untuk Minecraft 26.2/Fabric. Versi 1.3.0 menambahkan viewer gamerule per-dimension dengan pagination dan pengelolaan gamemode player berdasarkan dimension, sambil mempertahankan portal antar-dimensi, last-position, minimum playtime, dan konfigurasi terpusat di `config/lobby/`.
### Reload feedback v1.2.2
### Reload feedback
`/ls reload` menulis banner `RELOAD START` dan `RELOAD COMPLETE` hanya ke console server. Ringkasan reload satu baris dikirim langsung hanya ke player admin/operator yang menjalankan command; ringkasan tersebut tidak dibroadcast ke player lain dan tidak dikirim melalui command feedback ke console.
@@ -38,7 +38,7 @@ chmod +x compile.sh release.sh
```text
============================================
Lobby Systems - Fabric 26.2 Build
Version: 1.2.2
Version: 1.3.0
Namespace: id.dartokloning.lobbysystems
Mod ID: dartokloning
============================================
@@ -47,7 +47,7 @@ chmod +x compile.sh release.sh
Output utama:
```text
build/libs/lobby-systems-1.2.2.jar
build/libs/lobby-systems-1.3.0.jar
```
`*-sources.jar` hanya source archive dan tidak perlu dipasang ke server.
@@ -78,21 +78,22 @@ State penting Lobby Systems memakai separator agar mudah terlihat di server cons
```text
============================================
Lobby Systems - READY
Version: 1.2.2
Version: 1.3.0
Minecraft: 26.2
Config directory: config/lobby
WorldEdit: available
============================================
```
## Struktur konfigurasi v1.2.2
## Struktur konfigurasi v1.3.0
```text
config/
└── lobby/
├── config.json
├── player-positions.json
└── portals.json
├── portals.json
└── dimension-gamemodes.json
```
### `config/lobby/config.json`
@@ -151,9 +152,26 @@ Portal dibuat lewat command dan tersimpan otomatis. Contoh:
Portal adalah region/cuboid, bukan harus Nether Portal asli. Anda bebas membuat bentuk doorway, arch, lantai, gateway, dan sebagainya di dalam region tersebut.
### `config/lobby/dimension-gamemodes.json`
Minecraft menyimpan gamemode pada player, bukan pada dimension. Lobby Systems v1.3.0 menambahkan mapping dimension → gamemode dan menerapkannya ketika player masuk ke dimension tersebut. File ini dibuat otomatis dan dapat dikelola lewat command admin.
Contoh:
```json
{
"minecraft:lobby": "adventure",
"minecraft:worldcreative": "creative",
"minecraft:overworld": "survival"
}
```
Gamemode yang didukung: `survival`, `creative`, `adventure`, dan `spectator`.
## Migrasi dari v1.1.x
Pada startup pertama v1.2.2:
Pada startup pertama v1.3.0:
```text
config/lobby-systems.json
@@ -177,7 +195,7 @@ akan dimigrasikan ke:
config/lobby/player-positions.json
```
Nama file lama hanya digunakan oleh `LegacyConfigMigrator` untuk proses migrasi. Runtime v1.2.2 membaca dan menulis file baru di `config/lobby/`.
Nama file lama hanya digunakan oleh `LegacyConfigMigrator` untuk proses migrasi. Runtime v1.3.0 membaca dan menulis file baru di `config/lobby/`.
Jika file tujuan baru sudah ada, migrator tidak menimpanya.
@@ -198,6 +216,14 @@ Jika file tujuan baru sudah ada, migrator tidak menimpanya.
/ls reload
/ls tp <dimension>
/ls gamerule <dimension>
/ls gamerule <dimension> --page <page>
/ls gamemode <dimension>
/ls gamemode list
/ls gamemode set <dimension> <survival|creative|adventure|spectator>
/ls gamemode remove <dimension>
/ls portal create <name> <target_dimension>
/ls portal delete <name>
/ls portal list
@@ -207,12 +233,39 @@ Jika file tujuan baru sudah ada, migrator tidak menimpanya.
`/ls tp` tetap command maintenance/admin. Player biasa tidak memerlukannya karena flow normal menggunakan portal.
### Gamerule viewer per dimension
`/ls gamerule <dimension>` menampilkan gamerule aktual dari dimension yang sedang ter-load. Viewer ini bersifat read-only dan cocok dipakai bersama WorldGameRules. Hasil ditampilkan 10 rule per halaman.
Contoh:
```text
/ls gamerule minecraft:lobby
/ls gamerule minecraft:lobby --page 2
```
Header chat menampilkan `halaman/total halaman`, nama dimension, dan jumlah gamerule. Jika masih ada halaman berikutnya, command untuk membuka halaman selanjutnya ikut ditampilkan.
### Gamemode per dimension
Gunakan mapping gamemode agar player otomatis mendapat gamemode yang sesuai saat memasuki dimension. Contoh:
```text
/ls gamemode set minecraft:lobby adventure
/ls gamemode set minecraft:worldcreative creative
/ls gamemode set minecraft:overworld survival
```
`/ls gamemode <dimension>` melihat mapping satu dimension, `/ls gamemode list` melihat semua mapping, dan `/ls gamemode remove <dimension>` menghapus mapping. Mapping disimpan ke `config/lobby/dimension-gamemodes.json` dan ikut direload oleh `/ls reload`.
### `/ls reload`
Reload live:
- `config/lobby/config.json`
- `config/lobby/portals.json`
- `config/lobby/dimension-gamemodes.json`
- lobby exclusion pada player-position store
Tidak perlu restart untuk perubahan JSON tersebut.