Fix join gamemode enforcement in Lobby Systems v1.5.2
This commit is contained in:
@@ -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/
|
||||||
|
|||||||
+26
-8
@@ -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.
|
||||||
|
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] 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
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user