Fix join gamemode enforcement in Lobby Systems v1.5.2

This commit is contained in:
Darto KLoning
2026-09-06 23:31:07 +07:00
parent b24e031b05
commit abc1942ecd
6 changed files with 173 additions and 102 deletions
+7 -7
View File
@@ -1,8 +1,8 @@
# Lobby Systems v1.5.1 — Fabric 26.2 # Lobby Systems v1.5.2 — Fabric 26.2
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. Server-side lobby routing untuk Minecraft 26.2/Fabric. v1.5.2 memastikan dimension gamemode dipaksa segera setelah teleport, termasuk join/reconnect ke Lobby, dan menambahkan mode Git-only pada script compile bila JAR versi yang sama sudah pernah dibuild.
**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.2 bugfix/workflow:** gamemode Lobby kini langsung diterapkan setelah join teleport sehingga gamemode lama dari player data tidak tertinggal. `compile.bat` / `compile.sh` juga mendeteksi JAR versi yang sama dan menawarkan Compile ulang atau Git-only tanpa build ulang.
**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. **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.
@@ -43,7 +43,7 @@ chmod +x compile.sh release.sh
```text ```text
============================================ ============================================
Lobby Systems - Fabric 26.2 Build Lobby Systems - Fabric 26.2 Build
Version: 1.5.1 Version: 1.5.2
Namespace: id.dartokloning.lobbysystems Namespace: id.dartokloning.lobbysystems
Mod ID: dartokloning Mod ID: dartokloning
============================================ ============================================
@@ -52,7 +52,7 @@ chmod +x compile.sh release.sh
Output utama: Output utama:
```text ```text
build/libs/lobby-systems-1.5.1.jar build/libs/lobby-systems-1.5.2.jar
``` ```
`*-sources.jar` hanya source archive dan tidak perlu dipasang ke server. `*-sources.jar` hanya source archive dan tidak perlu dipasang ke server.
@@ -83,14 +83,14 @@ State penting Lobby Systems memakai separator agar mudah terlihat di server cons
```text ```text
============================================ ============================================
Lobby Systems - READY Lobby Systems - READY
Version: 1.5.1 Version: 1.5.2
Minecraft: 26.2 Minecraft: 26.2
Config directory: config/lobby Config directory: config/lobby
WorldEdit: available WorldEdit: available
============================================ ============================================
``` ```
## Struktur konfigurasi v1.5.0 ## Struktur konfigurasi v1.5.2
```text ```text
config/ config/
+27 -9
View File
@@ -16,6 +16,7 @@ set "LOCAL_GRADLE_DIR=%CD%\.gradle-local"
set "GRADLE_VERSION=9.5.1" set "GRADLE_VERSION=9.5.1"
set "GRADLE_HOME=%LOCAL_GRADLE_DIR%\gradle-%GRADLE_VERSION%" set "GRADLE_HOME=%LOCAL_GRADLE_DIR%\gradle-%GRADLE_VERSION%"
set "GRADLE_BIN=%GRADLE_HOME%\bin\gradle.bat" set "GRADLE_BIN=%GRADLE_HOME%\bin\gradle.bat"
set "GIT_ONLY=0"
set "MOD_VERSION=" set "MOD_VERSION="
set "MINECRAFT_VERSION=" set "MINECRAFT_VERSION="
@@ -36,6 +37,8 @@ if not defined MOD_VERSION set "MOD_VERSION=unknown"
if not defined MINECRAFT_VERSION set "MINECRAFT_VERSION=26.2" if not defined MINECRAFT_VERSION set "MINECRAFT_VERSION=26.2"
if not defined MAVEN_GROUP set "MAVEN_GROUP=id.dartokloning" if not defined MAVEN_GROUP set "MAVEN_GROUP=id.dartokloning"
set "JAR_PATH=%CD%\build\libs\lobby-systems-%MOD_VERSION%.jar"
echo ============================================ echo ============================================
echo Lobby Systems - Fabric %MINECRAFT_VERSION% Build echo Lobby Systems - Fabric %MINECRAFT_VERSION% Build
echo Version: %MOD_VERSION% echo Version: %MOD_VERSION%
@@ -43,6 +46,19 @@ echo Namespace: id.dartokloning.lobbysystems
echo Mod ID: dartokloning echo Mod ID: dartokloning
echo ============================================ echo ============================================
REM release.bat selalu melakukan build ulang melalui --build-only.
if "%BUILD_ONLY%"=="0" if exist "%JAR_PATH%" (
echo.
echo [INFO] JAR untuk v%MOD_VERSION% sudah pernah dibuild:
echo %JAR_PATH%
echo.
choice /C CG /N /M "[C] Compile ulang / [G] Git saja: "
if errorlevel 2 (
set "GIT_ONLY=1"
goto :git_integration
)
)
where java.exe >nul 2>&1 where java.exe >nul 2>&1
if errorlevel 1 ( if errorlevel 1 (
echo [ERROR] Java tidak ditemukan di PATH. echo [ERROR] Java tidak ditemukan di PATH.
@@ -127,7 +143,6 @@ echo ============================================
echo BUILD SUCCESS echo BUILD SUCCESS
echo ============================================ echo ============================================
set "JAR_PATH=%CD%\build\libs\lobby-systems-%MOD_VERSION%.jar"
if exist "%JAR_PATH%" ( if exist "%JAR_PATH%" (
echo JAR: echo JAR:
echo %JAR_PATH% echo %JAR_PATH%
@@ -136,7 +151,6 @@ if exist "%JAR_PATH%" (
echo %JAR_PATH% echo %JAR_PATH%
) )
REM release.bat memakai mode ini supaya prompt Git tidak muncul dua kali.
if "%BUILD_ONLY%"=="1" exit /b 0 if "%BUILD_ONLY%"=="1" exit /b 0
echo. echo.
@@ -149,12 +163,12 @@ echo.
echo ============================================ echo ============================================
echo Git Integration echo Git Integration
echo ============================================ echo ============================================
if "%GIT_ONLY%"=="1" echo [INFO] Mode Git-only: build dilewati karena JAR v%MOD_VERSION% sudah tersedia.
where git.exe >nul 2>&1 where git.exe >nul 2>&1
if errorlevel 1 ( if errorlevel 1 (
echo [ERROR] Git tidak ditemukan di PATH. echo [ERROR] Git tidak ditemukan di PATH.
echo Build tetap berhasil, tetapi Git tidak dapat dijalankan. goto :git_failed
goto :success
) )
git rev-parse --is-inside-work-tree >nul 2>&1 git rev-parse --is-inside-work-tree >nul 2>&1
@@ -166,7 +180,7 @@ if errorlevel 1 (
echo git branch -M main echo git branch -M main
echo git remote add origin ^<URL-GITEA^> echo git remote add origin ^<URL-GITEA^>
echo. echo.
goto :success goto :git_failed
) )
echo [INFO] Memeriksa perubahan... echo [INFO] Memeriksa perubahan...
@@ -202,7 +216,7 @@ if defined HAS_CHANGES (
) )
) else ( ) else (
echo [INFO] Tidak ada perubahan source yang perlu di-commit. echo [INFO] Tidak ada perubahan source yang perlu di-commit.
echo [INFO] Akan mencoba push commit yang sudah ada. echo [INFO] Akan mencoba push commit lokal yang belum terkirim, jika ada.
) )
set "CURRENT_BRANCH=" set "CURRENT_BRANCH="
@@ -238,7 +252,7 @@ for /f "delims=" %%F in ('git status --porcelain') do (
echo !LINE! | findstr /I /C:"compile.bat" /C:"compile.sh" /C:"release.bat" /C:"release.sh" >nul && set "HAS_SCRIPT_CHANGE=1" echo !LINE! | findstr /I /C:"compile.bat" /C:"compile.sh" /C:"release.bat" /C:"release.sh" >nul && set "HAS_SCRIPT_CHANGE=1"
echo !LINE! | findstr /I /C:"README.md" /C:"LICENSE" >nul && set "HAS_DOC_CHANGE=1" echo !LINE! | findstr /I /C:"README.md" /C:"LICENSE" >nul && set "HAS_DOC_CHANGE=1"
) )
if defined HAS_SRC_CHANGE set "SUGGESTED_COMMIT=Update Lobby Systems v%MOD_VERSION%" if defined HAS_SRC_CHANGE set "SUGGESTED_COMMIT=Fix join gamemode enforcement in Lobby Systems v%MOD_VERSION%"
if not defined HAS_SRC_CHANGE if defined HAS_SCRIPT_CHANGE set "SUGGESTED_COMMIT=Improve build and Git workflow" if not defined HAS_SRC_CHANGE if defined HAS_SCRIPT_CHANGE set "SUGGESTED_COMMIT=Improve build and Git workflow"
if not defined HAS_SRC_CHANGE if not defined HAS_SCRIPT_CHANGE if defined HAS_DOC_CHANGE set "SUGGESTED_COMMIT=Update Lobby Systems documentation" if not defined HAS_SRC_CHANGE if not defined HAS_SCRIPT_CHANGE if defined HAS_DOC_CHANGE set "SUGGESTED_COMMIT=Update Lobby Systems documentation"
exit /b 0 exit /b 0
@@ -304,9 +318,13 @@ echo ============================================
echo GIT FAILED echo GIT FAILED
echo ============================================ echo ============================================
echo. echo.
echo [INFO] Build Lobby Systems tetap berhasil. if "%GIT_ONLY%"=="1" (
echo [INFO] Build tidak dijalankan; JAR v%MOD_VERSION% yang sudah ada tetap aman.
) else (
echo [INFO] Build Lobby Systems tetap berhasil.
)
echo [INFO] Commit lokal tetap tersimpan. echo [INFO] Commit lokal tetap tersimpan.
echo [INFO] Anda bisa menjalankan compile.bat lagi dan memilih Y; jika tidak ada perubahan, script langsung mencoba push commit yang tertunda. echo [INFO] Jalankan compile.bat lagi; jika JAR versi sama terdeteksi, pilih G untuk Git-only.
echo. echo.
pause pause
exit /b 2 exit /b 2
+116 -82
View File
@@ -18,6 +18,7 @@ LOCAL_GRADLE_DIR="$SCRIPT_DIR/.gradle-local"
GRADLE_VERSION="9.5.1" GRADLE_VERSION="9.5.1"
GRADLE_HOME="$LOCAL_GRADLE_DIR/gradle-$GRADLE_VERSION" GRADLE_HOME="$LOCAL_GRADLE_DIR/gradle-$GRADLE_VERSION"
GRADLE_BIN="$GRADLE_HOME/bin/gradle" GRADLE_BIN="$GRADLE_HOME/bin/gradle"
GIT_ONLY=0
info() { echo "[INFO] $1"; } info() { echo "[INFO] $1"; }
ok() { echo "[OK] $1"; } ok() { echo "[OK] $1"; }
@@ -36,7 +37,7 @@ suggest_commit_message() {
SUGGESTED_COMMIT="Update Lobby Systems v$MOD_VERSION" SUGGESTED_COMMIT="Update Lobby Systems v$MOD_VERSION"
if grep -qiE '(^|[[:space:]])src/' <<<"$status"; then if grep -qiE '(^|[[:space:]])src/' <<<"$status"; then
SUGGESTED_COMMIT="Update Lobby Systems v$MOD_VERSION" SUGGESTED_COMMIT="Fix join gamemode enforcement in Lobby Systems v$MOD_VERSION"
elif grep -qiE 'compile\.(bat|sh)|release\.(bat|sh)' <<<"$status"; then elif grep -qiE 'compile\.(bat|sh)|release\.(bat|sh)' <<<"$status"; then
SUGGESTED_COMMIT="Improve build and Git workflow" SUGGESTED_COMMIT="Improve build and Git workflow"
elif grep -qiE 'README\.md|LICENSE' <<<"$status"; then elif grep -qiE 'README\.md|LICENSE' <<<"$status"; then
@@ -78,6 +79,88 @@ push_branch_with_retry() {
done done
} }
run_git_integration() {
echo
separator
echo " Git Integration"
separator
if [[ $GIT_ONLY -eq 1 ]]; then
info "Mode Git-only: build dilewati karena JAR v$MOD_VERSION sudah tersedia."
fi
if ! command -v git >/dev/null 2>&1; then
error "Git tidak ditemukan di PATH."
return 2
fi
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
error "Folder ini belum menjadi Git repository."
echo
echo "Jalankan terlebih dahulu:"
echo " git init"
echo " git branch -M main"
echo " git remote add origin <URL-GITEA>"
return 2
fi
info "Memeriksa perubahan Git..."
CHANGES="$(git status --porcelain)"
if [[ -n "$CHANGES" ]]; then
echo
echo "Perubahan ditemukan:"
echo
git status --short
echo
suggest_commit_message
echo "[SUGGEST] Commit message: $SUGGESTED_COMMIT"
info "Tekan Enter untuk memakai saran tersebut, atau ketik pesan sendiri."
read -r -p "Commit message [$SUGGESTED_COMMIT]: " COMMIT_MESSAGE
[[ -z "$COMMIT_MESSAGE" ]] && COMMIT_MESSAGE="$SUGGESTED_COMMIT"
info "Menambahkan perubahan ke staging..."
if ! git add -A; then
error "git add gagal."
return 2
fi
info "Membuat commit..."
if ! git commit -m "$COMMIT_MESSAGE"; then
error "git commit gagal."
return 2
fi
else
info "Tidak ada perubahan source yang perlu di-commit."
info "Akan mencoba push commit lokal yang belum terkirim, jika ada."
fi
CURRENT_BRANCH="$(git branch --show-current)"
if [[ -z "$CURRENT_BRANCH" ]]; then
error "Tidak dapat menentukan branch Git aktif."
return 2
fi
info "Branch aktif: $CURRENT_BRANCH"
if ! git remote get-url origin >/dev/null 2>&1; then
error "Remote Git 'origin' belum dikonfigurasi."
info "Commit lokal tetap tersimpan."
return 2
fi
REMOTE_URL="$(git remote get-url origin)"
info "Remote origin: $REMOTE_URL"
if ! push_branch_with_retry; then
return 2
fi
echo
ok "Push ke Git/Gitea berhasil."
return 0
}
if [[ ! -f "$GRADLE_PROPERTIES" ]]; then if [[ ! -f "$GRADLE_PROPERTIES" ]]; then
error "gradle.properties tidak ditemukan." error "gradle.properties tidak ditemukan."
exit 1 exit 1
@@ -91,6 +174,8 @@ MAVEN_GROUP="$(read_property "maven_group")"
[[ -z "$MINECRAFT_VERSION" ]] && MINECRAFT_VERSION="26.2" [[ -z "$MINECRAFT_VERSION" ]] && MINECRAFT_VERSION="26.2"
[[ -z "$MAVEN_GROUP" ]] && MAVEN_GROUP="id.dartokloning" [[ -z "$MAVEN_GROUP" ]] && MAVEN_GROUP="id.dartokloning"
JAR_PATH="$SCRIPT_DIR/build/libs/lobby-systems-$MOD_VERSION.jar"
separator separator
echo " Lobby Systems - Fabric $MINECRAFT_VERSION Build" echo " Lobby Systems - Fabric $MINECRAFT_VERSION Build"
echo " Version: $MOD_VERSION" echo " Version: $MOD_VERSION"
@@ -98,6 +183,34 @@ echo " Namespace: id.dartokloning.lobbysystems"
echo " Mod ID: dartokloning" echo " Mod ID: dartokloning"
separator separator
if [[ $BUILD_ONLY -eq 0 && -f "$JAR_PATH" ]]; then
echo
info "JAR untuk v$MOD_VERSION sudah pernah dibuild:"
echo " $JAR_PATH"
echo
read -r -p "[C] Compile ulang / [G] Git saja: " EXISTING_ACTION
case "$EXISTING_ACTION" in
g|G|git|GIT|Git)
GIT_ONLY=1
if run_git_integration; then
echo
separator
echo " Lobby Systems v$MOD_VERSION selesai."
separator
exit 0
fi
echo
separator
echo " GIT FAILED"
separator
info "Build tidak dijalankan; JAR v$MOD_VERSION yang sudah ada tetap aman."
info "Commit lokal tetap tersimpan."
exit 2
;;
*) ;;
esac
fi
if ! command -v java >/dev/null 2>&1; then if ! command -v java >/dev/null 2>&1; then
error "Java tidak ditemukan di PATH." error "Java tidak ditemukan di PATH."
echo "Install JDK 25 lalu jalankan script lagi." echo "Install JDK 25 lalu jalankan script lagi."
@@ -192,8 +305,6 @@ separator
echo " BUILD SUCCESS" echo " BUILD SUCCESS"
separator separator
JAR_PATH="$SCRIPT_DIR/build/libs/lobby-systems-$MOD_VERSION.jar"
if [[ -f "$JAR_PATH" ]]; then if [[ -f "$JAR_PATH" ]]; then
echo "JAR:" echo "JAR:"
echo "$JAR_PATH" echo "$JAR_PATH"
@@ -221,94 +332,17 @@ case "$GIT_CONFIRM" in
;; ;;
esac esac
echo if ! run_git_integration; then
separator
echo " Git Integration"
separator
if ! command -v git >/dev/null 2>&1; then
error "Git tidak ditemukan di PATH."
info "Build tetap berhasil."
exit 0
fi
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
error "Folder ini belum menjadi Git repository."
echo
echo "Jalankan terlebih dahulu:"
echo " git init"
echo " git branch -M main"
echo " git remote add origin <URL-GITEA>"
echo
exit 0
fi
info "Memeriksa perubahan Git..."
CHANGES="$(git status --porcelain)"
if [[ -n "$CHANGES" ]]; then
echo
echo "Perubahan ditemukan:"
echo
git status --short
echo
suggest_commit_message
echo "[SUGGEST] Commit message: $SUGGESTED_COMMIT"
info "Tekan Enter untuk memakai saran tersebut, atau ketik pesan sendiri."
read -r -p "Commit message [$SUGGESTED_COMMIT]: " COMMIT_MESSAGE
[[ -z "$COMMIT_MESSAGE" ]] && COMMIT_MESSAGE="$SUGGESTED_COMMIT"
info "Menambahkan perubahan ke staging..."
if ! git add -A; then
error "git add gagal."
exit 2
fi
info "Membuat commit..."
if ! git commit -m "$COMMIT_MESSAGE"; then
error "git commit gagal."
exit 2
fi
else
info "Tidak ada perubahan source yang perlu di-commit."
info "Akan mencoba push commit yang sudah ada."
fi
CURRENT_BRANCH="$(git branch --show-current)"
if [[ -z "$CURRENT_BRANCH" ]]; then
error "Tidak dapat menentukan branch Git aktif."
exit 2
fi
info "Branch aktif: $CURRENT_BRANCH"
if ! git remote get-url origin >/dev/null 2>&1; then
error "Remote Git 'origin' belum dikonfigurasi."
echo
echo "Tambahkan remote Gitea dengan:"
echo " git remote add origin <URL-GITEA>"
echo
info "Commit lokal tetap tersimpan."
exit 2
fi
REMOTE_URL="$(git remote get-url origin)"
info "Remote origin: $REMOTE_URL"
if ! push_branch_with_retry; then
echo echo
separator separator
echo " GIT FAILED" echo " GIT FAILED"
separator separator
info "Build Lobby Systems tetap berhasil." info "Build Lobby Systems tetap berhasil."
info "Commit lokal tetap tersimpan." info "Commit lokal tetap tersimpan."
info "Jalankan compile.sh lagi dan pilih Y; bila tidak ada perubahan, script langsung mencoba push commit yang tertunda." info "Jalankan compile.sh lagi; jika JAR versi sama terdeteksi, pilih G untuk Git-only."
exit 2 exit 2
fi fi
echo
ok "Push ke Git/Gitea berhasil."
echo echo
separator separator
echo " Lobby Systems v$MOD_VERSION selesai." echo " Lobby Systems v$MOD_VERSION selesai."
+1 -1
View File
@@ -5,6 +5,6 @@ minecraft_version=26.2
loader_version=0.19.3 loader_version=0.19.3
loom_version=1.17-SNAPSHOT loom_version=1.17-SNAPSHOT
fabric_api_version=0.156.0+26.2 fabric_api_version=0.156.0+26.2
mod_version=1.5.1 mod_version=1.5.2
maven_group=id.dartokloning maven_group=id.dartokloning
archives_base_name=lobby-systems archives_base_name=lobby-systems
@@ -80,11 +80,23 @@ public final class DimensionGameModeManager {
String dimension = player.level().dimension().identifier().toString(); String dimension = player.level().dimension().identifier().toString();
String previous = lastDimension.put(player.getUUID(), dimension); String previous = lastDimension.put(player.getUUID(), dimension);
if (!dimension.equals(previous)) { if (!dimension.equals(previous)) {
applyForPlayer(player, dimension, true); applyConfiguredMode(player, dimension, true);
} }
} }
} }
/**
* Memaksa gamemode yang dikonfigurasi untuk dimension player saat ini.
* Dipakai setelah teleport agar join/reconnect tidak bergantung hanya pada
* deteksi perubahan dimension di tick berikutnya.
*/
public boolean applyForPlayer(ServerPlayer player, boolean log) {
String dimension = player.level().dimension().identifier().toString();
boolean changed = applyConfiguredMode(player, dimension, log);
lastDimension.put(player.getUUID(), dimension);
return changed;
}
public void onDisconnect(UUID uuid) { public void onDisconnect(UUID uuid) {
lastDimension.remove(uuid); lastDimension.remove(uuid);
} }
@@ -117,14 +129,14 @@ public final class DimensionGameModeManager {
String normalized = normalizeDimension(dimension); String normalized = normalizeDimension(dimension);
for (ServerPlayer player : server.getPlayerList().getPlayers()) { for (ServerPlayer player : server.getPlayerList().getPlayers()) {
if (player.level().dimension().identifier().toString().equals(normalized)) { if (player.level().dimension().identifier().toString().equals(normalized)) {
if (applyForPlayer(player, normalized, false)) changed++; if (applyConfiguredMode(player, normalized, false)) changed++;
lastDimension.put(player.getUUID(), normalized); lastDimension.put(player.getUUID(), normalized);
} }
} }
return changed; return changed;
} }
private boolean applyForPlayer(ServerPlayer player, String dimension, boolean log) { private boolean applyConfiguredMode(ServerPlayer player, String dimension, boolean log) {
String configuredMode = configured.get(normalizeDimension(dimension)); String configuredMode = configured.get(normalizeDimension(dimension));
if (configuredMode == null) return false; if (configuredMode == null) return false;
@@ -921,6 +921,10 @@ public final class LobbySystemsMod implements ModInitializer {
boolean ok = TELEPORTS.teleport(player, target, x, y, z, yaw, pitch); boolean ok = TELEPORTS.teleport(player, target, x, y, z, yaw, pitch);
if (!ok) return 0; if (!ok) return 0;
if (CONFIG.get().manageDimensionGamemode) {
DIMENSION_GAMEMODES.applyForPlayer(player, true);
}
if (sendMessage) { if (sendMessage) {
player.sendSystemMessage(Component.literal(returning player.sendSystemMessage(Component.literal(returning
? "§aTeleport ke §f" + dimensionId + "§a pada posisi terakhirmu." ? "§aTeleport ke §f" + dimensionId + "§a pada posisi terakhirmu."
@@ -967,6 +971,9 @@ public final class LobbySystemsMod implements ModInitializer {
LobbyConfig c = CONFIG.get(); LobbyConfig c = CONFIG.get();
boolean ok = TELEPORTS.teleport(player, target, c.lobbyX, c.lobbyY, c.lobbyZ, c.lobbyYaw, c.lobbyPitch); boolean ok = TELEPORTS.teleport(player, target, c.lobbyX, c.lobbyY, c.lobbyZ, c.lobbyYaw, c.lobbyPitch);
if (ok && CONFIG.get().manageDimensionGamemode) {
DIMENSION_GAMEMODES.applyForPlayer(player, true);
}
if (ok && sendMessage) player.sendSystemMessage(Component.literal(c.returnedMessage)); if (ok && sendMessage) player.sendSystemMessage(Component.literal(c.returnedMessage));
return ok; return ok;
} }