4.2 KiB
Lobby Systems - Fabric 26.2
Server-side lobby router untuk Minecraft Java 26.2 / Fabric.
Identity
- Mod ID:
dartokloning - Java package:
id.dartokloning.lobbysystems - Maven group:
id.dartokloning - Mod name:
Lobby Systems
Requirements
- JDK / Java 25 atau lebih baru
- Minecraft 26.2
- Fabric Loader 0.19.3+
- Fabric API 0.156.0+26.2
- Internet pada build pertama untuk mengunduh Gradle dan dependency Fabric/Minecraft
- Optional: World Manager 1.4.4+26.2 hanya untuk membuat/mengelola world; Lobby Systems tidak memiliki hard dependency ke World Manager
Compile di Windows
Cara termudah: double-click compile.bat.
Script tersebut memanggil compile.ps1, mengecek Java 25+, mengunduh Gradle 9.5.1 secara lokal ke .gradle-local bila diperlukan, lalu menjalankan:
clean build
Alternatif PowerShell:
powershell -ExecutionPolicy Bypass -File .\compile.ps1
JAR hasil build berada di:
build\libs\
Folder .gradle-local hanya cache Gradle lokal project dan boleh dihapus kapan saja.
Compile manual
Jika Gradle sudah terpasang:
gradle clean build
Configuration
Jalankan server sekali. Edit:
config/lobby-systems.json
Contoh:
{
"lobbyDimension": "minecraft:overworld",
"lobbyX": 0.5,
"lobbyY": 100.0,
"lobbyZ": 0.5,
"lobbyYaw": 0.0,
"lobbyPitch": 0.0,
"minimumPlaySeconds": 300,
"inLobbyMessage": "§eKamu sudah berada di lobby.",
"returnedMessage": "§aKamu telah kembali ke lobby.",
"waitMessage": "§cKamu belum bisa kembali ke lobby. Tunggu §e{time}§c lagi."
}
Set lobbyDimension ke identifier dimensi/world yang dibuat oleh World Manager.
Behavior
- Setiap login diarahkan ke dimensi dan koordinat lobby yang dikonfigurasi.
- Saat player keluar lobby dan masuk dimensi lain, timer sesi game baru dimulai.
/lobbysaat sudah berada di lobby hanya memberi informasi bahwa player sedang di lobby./lobbydi luar lobby diblokir sampaiminimumPlaySecondsberlalu dan menampilkan countdown.- Setelah timer selesai,
/lobbymengembalikan player ke lobby. - Pindah dari satu dimensi non-lobby ke dimensi game lain memulai timer baru untuk dimensi tersebut.
- Reconnect selalu mengembalikan player ke lobby dan membersihkan timer sesi sebelumnya.
World Manager integration
Lobby Systems tidak menggunakan internal API World Manager. World Manager cukup membuat/load custom world, kemudian ID dimensinya dimasukkan ke lobby-systems.json. Dengan desain ini, portal mod/command lain juga tetap bisa digunakan.
Admin command (v1.1.3)
Requires Minecraft admin/OP command permission.
/ls reload— reloadsconfig/lobby-systems.jsonlive without restarting the server./ls tp <dimension>— teleports the executing player to a loaded dimension. The<dimension>argument autocompletes from the server's currently loaded dimension keys.
Last-position behavior
Lobby Systems stores each player's last coordinates and rotation per dimension in:
config/lobby-systems-positions.json
When /ls tp <dimension> is used, the player returns to their last recorded position in that dimension. If the player has never visited that dimension before, the command falls back to the dimension's configured respawn/spawn position.
Positions are captured for non-lobby dimensions when players change dimensions, use /ls tp, use /lobby, disconnect, and are periodically flushed to disk. The configured lobby dimension is deliberately excluded: every teleport/login to the lobby always uses lobbyX/Y/Z/Yaw/Pitch from lobby-systems.json. Existing saved lobby-position entries are removed automatically on startup/reload.
v1.1.3 stability changes
- Cross-dimension teleports now use Minecraft's
TeleportTransitionpath instead of callingteleportTo(...)directly. - Destination chunk is loaded before the transition is sent.
- Login-to-lobby is delayed 20 server ticks so the client has time to finish entering play state.
- A 40-tick per-player teleport lock prevents overlapping dimension transitions.
- Lobby position persistence is enforced inside
PositionManager, not only at call sites. The configured lobby dimension is purged on startup/reload and filtered again before every save, so it cannot be written tolobby-systems-positions.json.