Bugfix portal visual systems

This commit is contained in:
Darto KLoning
2026-09-06 23:03:00 +07:00
parent c4f4bd971a
commit b24e031b05
6 changed files with 322 additions and 28 deletions
+44 -17
View File
@@ -1,8 +1,10 @@
# Lobby Systems v1.4.1 — Fabric 26.2
# Lobby Systems v1.5.1 — Fabric 26.2
Server-side lobby routing untuk Minecraft 26.2/Fabric. v1.4.1 mempertahankan native persistent per-dimension gamerules dan menambahkan compatibility control untuk dimension gamemode serta perbaikan WorldEdit 7.4.x portal selection.
Server-side lobby routing untuk Minecraft 26.2/Fabric. v1.5.1 memperbaiki compatibility compile Minecraft 26.2 pada Portal Visual System yang diperkenalkan di v1.5.0. server-only berbasis visual vanilla `minecraft:nether_portal`, lengkap dengan orientasi X/Z otomatis dari WorldEdit selection. Native per-dimension gamerules, dimension gamemode management, dan WorldEdit 7.4.x bridge tetap dipertahankan.
**v1.4.1 compatibility/bugfix release:** `manageDimensionGamemode` (default `true`) menentukan apakah Lobby Systems menjadi source of truth gamemode per dimension. Jika Dimensional Inventories terdeteksi saat opsi ini aktif, console menampilkan compatibility warning agar konfigurasi gamemode kedua mod disamakan. Integrasi WorldEdit juga diperbarui untuk API Fabric WorldEdit 7.4.x (`FabricAdapter.get().fromNativePlayer(...)`).
**v1.5.1 bugfix:** memperbaiki penggunaan API `ServerPlayer` saat membuat/membersihkan visual portal. Fitur Portal Visual System tetap sama seperti v1.5.0.
**v1.5.0 feature release:** Portal Visual System menambahkan permukaan swirl ungu memakai block state vanilla `minecraft:nether_portal`, dengan axis X/Z yang ditentukan otomatis dari WorldEdit selection. Frame boleh memakai block apa saja. `manageDimensionGamemode` tetap default `true`, compatibility warning Dimensional Inventories tetap aktif, dan bridge WorldEdit 7.4.x tetap dipakai.
### Reload feedback
@@ -19,6 +21,7 @@ Server-side lobby routing untuk Minecraft 26.2/Fabric. v1.4.1 mempertahankan nat
- Mod ID: `dartokloning`
- Java namespace: `id.dartokloning.lobbysystems`
- WorldEdit: opsional untuk runtime portal, diperlukan saat membuat portal memakai `//wand`
- Portal Visual System v1.5.0: memakai block state vanilla `minecraft:nether_portal`, sehingga tidak membutuhkan mod/resource pack di client
## Compile di Windows
@@ -40,7 +43,7 @@ chmod +x compile.sh release.sh
```text
============================================
Lobby Systems - Fabric 26.2 Build
Version: 1.4.1
Version: 1.5.1
Namespace: id.dartokloning.lobbysystems
Mod ID: dartokloning
============================================
@@ -49,7 +52,7 @@ chmod +x compile.sh release.sh
Output utama:
```text
build/libs/lobby-systems-1.4.1.jar
build/libs/lobby-systems-1.5.1.jar
```
`*-sources.jar` hanya source archive dan tidak perlu dipasang ke server.
@@ -80,14 +83,14 @@ State penting Lobby Systems memakai separator agar mudah terlihat di server cons
```text
============================================
Lobby Systems - READY
Version: 1.4.1
Version: 1.5.1
Minecraft: 26.2
Config directory: config/lobby
WorldEdit: available
============================================
```
## Struktur konfigurasi v1.4.1
## Struktur konfigurasi v1.5.0
```text
config/
@@ -148,13 +151,15 @@ Portal dibuat lewat command dan tersimpan otomatis. Contoh:
"y": 67,
"z": -5
},
"targetDimension": "minecraft:overworld"
"targetDimension": "minecraft:overworld",
"visualMode": "nether_portal",
"visualAxis": "x"
}
}
}
```
Portal adalah region/cuboid, bukan harus Nether Portal asli. Anda bebas membuat bentuk doorway, arch, lantai, gateway, dan sebagainya di dalam region tersebut.
Trigger portal tetap berupa region Lobby Systems. Mulai v1.5.0, portal baru yang dibuat lewat command menyimpan `visualMode=nether_portal` dan `visualAxis=x|z`. Frame/dekorasinya bebas, tetapi selection portal visual harus berupa bidang vertikal 1 block tebal dan hanya mencakup area dalam portal.
### `config/lobby/dimension-gamemodes.json`
@@ -296,24 +301,46 @@ Reload live:
Tidak perlu restart untuk perubahan JSON tersebut.
### Membuat portal dengan WorldEdit
### Membuat portal dengan WorldEdit + visual portal
1. Pastikan WorldEdit Fabric 26.2 terpasang di server.
2. Masuk ke dimension tempat portal akan berada, biasanya Lobby.
3. Gunakan:
Mulai v1.5.0, `/ls portal create` dapat membuat **visual swirl vanilla Nether Portal secara otomatis** tanpa Flint and Steel dan tanpa mewajibkan mod Lobby Systems pada client. Lobby Systems memakai resource/block vanilla `minecraft:nether_portal`; tidak ada asset Custom Portals yang disalin.
Frame portal boleh dibuat dari block apa saja. Yang penting, WorldEdit selection harus memilih **area dalam/permukaan aktif portal saja**, bukan frame. Selection harus berupa bidang vertikal setebal tepat 1 block pada salah satu axis horizontal. Contoh valid:
```text
//wand
1 x 5 x 3 (portal membentang pada axis Z)
3 x 5 x 1 (portal membentang pada axis X)
```
4. Select dua sudut cuboid portal.
Contoh tidak valid untuk visual vanilla:
```text
3 x 5 x 3 (volume terlalu tebal)
5 x 1 x 5 (portal horizontal tidak didukung oleh nether_portal vanilla)
```
Workflow:
1. Bangun frame/dekorasi portal dari block apa saja.
2. Masuk ke dimension tempat portal berada, biasanya Lobby.
3. Jalankan `//wand`.
4. Select dua sudut **bagian dalam portal**. Jangan sertakan frame.
5. Buat portal:
```text
/ls portal create survival minecraft:overworld
```
Target dimension memiliki autocomplete dari daftar dimension yang sedang loaded.
Lobby Systems otomatis mendeteksi orientasi selection:
- selection dengan X tetap dan Z melebar -> `nether_portal[axis=z]`
- selection dengan Z tetap dan X melebar -> `nether_portal[axis=x]`
Ini memperbaiki kasus ketika `/fill ... minecraft:nether_portal` memakai default axis yang salah sehingga tekstur portal terlihat menyamping. Portal visual juga dipulihkan secara berkala jika block portal vanilla menghilang akibat shape update pada frame non-obsidian. Teleport tetap ditentukan oleh `portals.json`/Lobby Systems, bukan oleh destination Nether Portal vanilla. Saat player berada di managed visual region, Lobby Systems menjaga vanilla portal cooldown tetap aktif agar mekanisme Nether Portal vanilla tidak mengambil alih destination, termasuk untuk player Creative.
Untuk keamanan, saat membuat portal baru Lobby Systems hanya akan mengganti air, fire, soul fire, atau nether portal di dalam selection. Jika selection mengenai block frame/dekorasi, pembuatan dibatalkan agar build tidak tertimpa.
Portal lama dari sebelum v1.5.0 tetap berfungsi sebagai trigger tetapi **tidak otomatis diberi visual**, karena selection lama mungkin mencakup frame. Hapus dan buat ulang portal tersebut dengan selection interior jika ingin visual baru.
Contoh lain:
@@ -324,7 +351,7 @@ Contoh lain:
Nama portal hanya menerima huruf kecil `a-z`, angka `0-9`, `_`, dan `-`.
WorldEdit hanya dibutuhkan saat membaca selection untuk **membuat** portal. v1.4.1 memakai bridge WorldEdit Fabric 7.4.x melalui `FabricAdapter.get().fromNativePlayer(...)` dengan fallback API lama. Setelah `portals.json` tersimpan, portal runtime dikelola Lobby Systems sendiri. Jika WorldEdit dilepas kemudian, portal yang sudah ada tetap dapat bekerja.
WorldEdit hanya dibutuhkan saat membaca selection untuk **membuat** portal. Setelah `portals.json` tersimpan, portal runtime dan visual recovery dikelola Lobby Systems sendiri. Jika WorldEdit dilepas kemudian, portal yang sudah ada tetap dapat bekerja.
### Menghapus dan mengecek portal