From b5dceb9fd1e0f1539fd1aa5f3095392ae88ce3bb Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sat, 15 Feb 2025 23:32:36 +0100 Subject: [PATCH 01/30] Update package.sh to switch from tar.gz to zip for archive creation --- packaging/package.sh | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/packaging/package.sh b/packaging/package.sh index 94fe1f1..0b0a2fc 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -21,7 +21,6 @@ MANIFEST_LOCATION="${PACKAGING_DIR}/Manifest.txt" VERSION_FILE="${PACKAGING_DIR}/ATCS_latest" SOURCE_BASE_DIR="${ATCS_SOURCE_DIR}/src" # Base directory for standard source code LIB_BASE_DIR="${ATCS_SOURCE_DIR}/lib" # Base directory for libraries -OUTPUT_JAR_DIR="${PACKAGING_DIR}" # Directory where the final JAR will be placed - as per script # --- **ADDITIONAL SOURCE CODE FOLDERS** --- EXTRA_SOURCE_DIRS=( @@ -103,17 +102,13 @@ cd "${PACKAGING_DIR}" || exit # Go back to packaging dir echo '' echo "Done creating jar at ${JAR_LOCATION}" -cp -f "${JAR_LOCATION}" "${OUTPUT_JAR_DIR}/common/ATCS.jar" # Copy JAR to versioned name +cp -f "${JAR_LOCATION}" "${PACKAGING_DIR}/common/ATCS.jar" # Copy JAR to versioned name # --- Create archive --- -if [ "$PLATFORM" = "LINUX" ]; then - cd "${OUTPUT_JAR_DIR}" || exit - echo "Creating archive" - tar caf "ATCS_${VERSION}.tar.gz" common/* # archive the 'common' folder which now contains the JAR and libs - echo "Created archive at ${OUTPUT_JAR_DIR}/ATCS_${VERSION}.tar.gz" - cd "${PACKAGING_DIR}" || exit -else - echo "Can't create zip files on windows yet. Please pack the content of the '${OUTPUT_JAR_DIR}/common/' folder yourself" -fi +cd "${PACKAGING_DIR}" || exit +echo "Creating archive" +zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs +echo "Created archive at ${PACKAGING_DIR}/ATCS_${VERSION}.zip" +cd "${PACKAGING_DIR}" || exit echo "Script finished." From 0e8ed1a25dcd35c93f7d05a4ffac8359000037b5 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:01:27 +0100 Subject: [PATCH 02/30] Enhance package.sh to support platform-specific archive creation using PowerShell on Windows --- packaging/package.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packaging/package.sh b/packaging/package.sh index 0b0a2fc..2d688fa 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -107,7 +107,13 @@ cp -f "${JAR_LOCATION}" "${PACKAGING_DIR}/common/ATCS.jar" # Copy JAR to version # --- Create archive --- cd "${PACKAGING_DIR}" || exit echo "Creating archive" -zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs +if [ "$PLATFORM" = "WINDOWS" ]; then + # Use PowerShell's Compress-Archive which is available by default on Windows + powershell.exe -Command "Compress-Archive -Path './common/*' -DestinationPath './ATCS_${VERSION}.zip' -Force" +else + # Use zip command on Linux + zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs +fi echo "Created archive at ${PACKAGING_DIR}/ATCS_${VERSION}.zip" cd "${PACKAGING_DIR}" || exit From 2caaaeb474d87b2b98f0cc00afb4305f5dd01d4a Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:20:21 +0100 Subject: [PATCH 03/30] Update ATCS_Installer.nsi to dynamically set VERSION from ATCS_latest file --- packaging/Windows/ATCS_Installer.nsi | 333 ++++++++++++++------------- 1 file changed, 167 insertions(+), 166 deletions(-) diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 68a686d..07c0949 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -1,166 +1,167 @@ -!include MUI2.nsh - -!define VERSION "0.6.20" -!define TRAINER_VERSION "0.1.5" -!define JAVA_BIN "java" -!define ATCS_SOURCE_DIR "C:\ATCS" - -Name "Andor's Trail Content Studio v${VERSION}" -OutFile "ATCS_v${VERSION}_Setup.exe" -InstallDir "$PROGRAMFILES\ATCS\" - -;SetCompressor /SOLID /FINAL lzma - -Var StartMenuFolder - -!define MUI_WELCOMEPAGE_TITLE "Welcome to Andor's Trail Content Studio installer" -!define MUI_WELCOMEPAGE_TEXT "This will install Andor's Trail Content Studio v${VERSION}" -!define MUI_FINISHPAGE_TEXT "Andor's Trail Content Studio v${VERSION} - Install completed !" -!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Andor's Trail Content Studio" -!define MUI_PAGE_HEADER_TEXT "Installing Andor's Trail Content Studio v${VERSION}" - - -;Start Menu Folder Page Configuration -!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" -!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\ATCS" -!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "ATCS" - -!define MUI_HEADERIMAGE -;!define MUI_HEADER_TRANSPARENT_TEXT -!define MUI_HEADERIMAGE_BITMAP nsisHeader.bmp -!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH -;!define MUI_HEADERIMAGE_RIGHT -;!define MUI_HEADERIMAGE_BITMAP_STRETCH "AspectFitHeight" -!define MUI_HEADERIMAGE_UNBITMAP nsisHeader.bmp -;!define MUI_HEADERIMAGE_UNBITMAP_STRETCH "AspectFitHeight" -!define MUI_WELCOMEFINISHPAGE_BITMAP nsisBorderBanner.bmp -!define MUI_UNWELCOMEFINISHPAGE_BITMAP nsisBorderBanner.bmp -;!define MUI_BGCOLOR "E3E3E3" -!define MUI_ABORTWARNING - -!insertmacro MUI_PAGE_WELCOME -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_STARTMENU "ATCS" $StartMenuFolder -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH - -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - -!insertmacro MUI_LANGUAGE "English" - - -;------------------------------------------------------------------------------------ -Section install - - ;--- Create in ...\packaging\common\ ATCS.cmd ATCT.ico ATCS.jar - SetOutPath $INSTDIR - file "ATCS.ico" - file "${ATCS_SOURCE_DIR}\packaging\common\ATCS.jar" - - Call GetJRE - Pop $R0 -; file "${ATCS_SOURCE_DIR}\packaging\common\ATCS.cmd" -; !insertmacro _ReplaceInFile "ATCS.cmd" "java.exe" "$R0" (It was too much work this way) - FileOpen $9 "ATCS.cmd" w - FileWrite $9 '@echo off$\r$\n' - FileWrite $9 '$\r$\n' - FileWrite $9 'set "ATCS_DIR=%~dp0"$\r$\n' - FileWrite $9 'set "MAX_MEM=1024M"$\r$\n' - FileWrite $9 'set "CP=%ATCS_DIR%lib\*"$\r$\n' - FileWrite $9 'set "JAVA=$R0"$\r$\n' - FileWrite $9 'set "JAVA_OPTS="$\r$\n' - FileWrite $9 'set "ENV_FILE=%ATCS_DIR%ATCS.env.bat"$\r$\n' - FileWrite $9 'set "MAIN_CLASS=com.gpl.rpg.atcontentstudio.ATContentStudio"$\r$\n' - FileWrite $9 '$\r$\n' - FileWrite $9 'if exist "%ENV_FILE%" ($\r$\n' - FileWrite $9 ' call "%ENV_FILE%"$\r$\n' - FileWrite $9 ') else ($\r$\n' - FileWrite $9 ' echo REM set "MAX_MEM=%MAX_MEM%">"%ENV_FILE%"$\r$\n' - FileWrite $9 ' echo REM set "JAVA=%JAVA%">>"%ENV_FILE%"$\r$\n' - FileWrite $9 ' echo REM set "JAVA_OPTS=%JAVA_OPTS%">>"%ENV_FILE%"$\r$\n' - FileWrite $9 ' echo.>>"%ENV_FILE%"$\r$\n' - FileWrite $9 ')$\r$\n' - FileWrite $9 '$\r$\n' - FileWrite $9 'start "" "%JAVA%" %JAVA_OPTS% -Xmx%MAX_MEM% -jar ATCS.jar$\r$\n' - FileClose $9 - - WriteUninstaller "$INSTDIR\Uninstall.exe" - - - !insertmacro MUI_STARTMENU_WRITE_BEGIN "ATCS" - - ;--- Create shortcuts - CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" "$INSTDIR\ATCS.cmd" "" "$INSTDIR\ATCS.ico" - CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_END - -SectionEnd - - -;------------------------------------------------------------------------------------ -Section uninstall - - Delete "$INSTDIR\lib\jide-oss.jar" - Delete "$INSTDIR\lib\ui.jar" - Delete "$INSTDIR\lib\junit-4.10.jar" - Delete "$INSTDIR\lib\json_simple-1.1.jar" - Delete "$INSTDIR\lib\AndorsTrainer_v${TRAINER_VERSION}.jar" - Delete "$INSTDIR\lib\rsyntaxtextarea.jar" - Delete "$INSTDIR\lib\prefuse.jar" - Delete "$INSTDIR\lib\bsh-2.0b4.jar" - Delete "$INSTDIR\lib\jsoup-1.10.2.jar" - RMDir "$INSTDIR\lib\" - - Delete "$INSTDIR\ATCS.ico" - Delete "$INSTDIR\ATCS.cmd" - Delete "$INSTDIR\ATCS.env.bat" - Delete "$INSTDIR\ATCS.jar" - Delete "$INSTDIR\Uninstall.exe" - RMDir "$INSTDIR" - - !insertmacro MUI_STARTMENU_GETFOLDER "ATCS" $StartMenuFolder - - Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" - Delete "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" - RMDir "$SMPROGRAMS\$StartMenuFolder" - -SectionEnd - - -;------------------------------------------------------------------------------------ -Function GetJRE -; -; Find JRE (java.exe) -; DISABLED 1 - in .\jre directory (JRE Installed with application) -; 2 - in JAVA_HOME environment variable -; 3 - in the registry -; 4 - assume java.exe in current dir or PATH - - Push $R0 - Push $R1 - - ;ClearErrors - ;StrCpy $R0 "$EXEDIR\jre\bin\java.exe" - ;IfFileExists $R0 JreFound - ;StrCpy $R0 "" - - ClearErrors - ReadEnvStr $R0 "JAVA_HOME" - StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" - IfErrors 0 JreFound - - ClearErrors - ReadRegStr $R1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" - ReadRegStr $R0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$R1" "JavaHome" - StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" - - IfErrors 0 JreFound - StrCpy $R0 "${JAVA_BIN}.exe" - - JreFound: - Pop $R1 - Exch $R0 -FunctionEnd +!include MUI2.nsh + +!system 'for /f "delims=" %%a in ('type ..\ATCS_latest') do set "VERSION=%%a" && exit' +!define VERSION "$%VERSION:~1%" +!define TRAINER_VERSION "0.1.5" +!define JAVA_BIN "java" +!define ATCS_SOURCE_DIR "C:\ATCS" + +Name "Andor's Trail Content Studio v${VERSION}" +OutFile "ATCS_v${VERSION}_Setup.exe" +InstallDir "$PROGRAMFILES\ATCS\" + +;SetCompressor /SOLID /FINAL lzma + +Var StartMenuFolder + +!define MUI_WELCOMEPAGE_TITLE "Welcome to Andor's Trail Content Studio installer" +!define MUI_WELCOMEPAGE_TEXT "This will install Andor's Trail Content Studio v${VERSION}" +!define MUI_FINISHPAGE_TEXT "Andor's Trail Content Studio v${VERSION} - Install completed !" +!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Andor's Trail Content Studio" +!define MUI_PAGE_HEADER_TEXT "Installing Andor's Trail Content Studio v${VERSION}" + + +;Start Menu Folder Page Configuration +!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\ATCS" +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "ATCS" + +!define MUI_HEADERIMAGE +;!define MUI_HEADER_TRANSPARENT_TEXT +!define MUI_HEADERIMAGE_BITMAP nsisHeader.bmp +!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH +;!define MUI_HEADERIMAGE_RIGHT +;!define MUI_HEADERIMAGE_BITMAP_STRETCH "AspectFitHeight" +!define MUI_HEADERIMAGE_UNBITMAP nsisHeader.bmp +;!define MUI_HEADERIMAGE_UNBITMAP_STRETCH "AspectFitHeight" +!define MUI_WELCOMEFINISHPAGE_BITMAP nsisBorderBanner.bmp +!define MUI_UNWELCOMEFINISHPAGE_BITMAP nsisBorderBanner.bmp +;!define MUI_BGCOLOR "E3E3E3" +!define MUI_ABORTWARNING + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_STARTMENU "ATCS" $StartMenuFolder +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +!insertmacro MUI_LANGUAGE "English" + + +;------------------------------------------------------------------------------------ +Section install + + ;--- Create in ...\packaging\common\ ATCS.cmd ATCT.ico ATCS.jar + SetOutPath $INSTDIR + file "ATCS.ico" + file "${ATCS_SOURCE_DIR}\packaging\common\ATCS.jar" + + Call GetJRE + Pop $R0 +; file "${ATCS_SOURCE_DIR}\packaging\common\ATCS.cmd" +; !insertmacro _ReplaceInFile "ATCS.cmd" "java.exe" "$R0" (It was too much work this way) + FileOpen $9 "ATCS.cmd" w + FileWrite $9 '@echo off$\r$\n' + FileWrite $9 '$\r$\n' + FileWrite $9 'set "ATCS_DIR=%~dp0"$\r$\n' + FileWrite $9 'set "MAX_MEM=1024M"$\r$\n' + FileWrite $9 'set "CP=%ATCS_DIR%lib\*"$\r$\n' + FileWrite $9 'set "JAVA=$R0"$\r$\n' + FileWrite $9 'set "JAVA_OPTS="$\r$\n' + FileWrite $9 'set "ENV_FILE=%ATCS_DIR%ATCS.env.bat"$\r$\n' + FileWrite $9 'set "MAIN_CLASS=com.gpl.rpg.atcontentstudio.ATContentStudio"$\r$\n' + FileWrite $9 '$\r$\n' + FileWrite $9 'if exist "%ENV_FILE%" ($\r$\n' + FileWrite $9 ' call "%ENV_FILE%"$\r$\n' + FileWrite $9 ') else ($\r$\n' + FileWrite $9 ' echo REM set "MAX_MEM=%MAX_MEM%">"%ENV_FILE%"$\r$\n' + FileWrite $9 ' echo REM set "JAVA=%JAVA%">>"%ENV_FILE%"$\r$\n' + FileWrite $9 ' echo REM set "JAVA_OPTS=%JAVA_OPTS%">>"%ENV_FILE%"$\r$\n' + FileWrite $9 ' echo.>>"%ENV_FILE%"$\r$\n' + FileWrite $9 ')$\r$\n' + FileWrite $9 '$\r$\n' + FileWrite $9 'start "" "%JAVA%" %JAVA_OPTS% -Xmx%MAX_MEM% -jar ATCS.jar$\r$\n' + FileClose $9 + + WriteUninstaller "$INSTDIR\Uninstall.exe" + + + !insertmacro MUI_STARTMENU_WRITE_BEGIN "ATCS" + + ;--- Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" "$INSTDIR\ATCS.cmd" "" "$INSTDIR\ATCS.ico" + CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_END + +SectionEnd + + +;------------------------------------------------------------------------------------ +Section uninstall + + Delete "$INSTDIR\lib\jide-oss.jar" + Delete "$INSTDIR\lib\ui.jar" + Delete "$INSTDIR\lib\junit-4.10.jar" + Delete "$INSTDIR\lib\json_simple-1.1.jar" + Delete "$INSTDIR\lib\AndorsTrainer_v${TRAINER_VERSION}.jar" + Delete "$INSTDIR\lib\rsyntaxtextarea.jar" + Delete "$INSTDIR\lib\prefuse.jar" + Delete "$INSTDIR\lib\bsh-2.0b4.jar" + Delete "$INSTDIR\lib\jsoup-1.10.2.jar" + RMDir "$INSTDIR\lib\" + + Delete "$INSTDIR\ATCS.ico" + Delete "$INSTDIR\ATCS.cmd" + Delete "$INSTDIR\ATCS.env.bat" + Delete "$INSTDIR\ATCS.jar" + Delete "$INSTDIR\Uninstall.exe" + RMDir "$INSTDIR" + + !insertmacro MUI_STARTMENU_GETFOLDER "ATCS" $StartMenuFolder + + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + +SectionEnd + + +;------------------------------------------------------------------------------------ +Function GetJRE +; +; Find JRE (java.exe) +; DISABLED 1 - in .\jre directory (JRE Installed with application) +; 2 - in JAVA_HOME environment variable +; 3 - in the registry +; 4 - assume java.exe in current dir or PATH + + Push $R0 + Push $R1 + + ;ClearErrors + ;StrCpy $R0 "$EXEDIR\jre\bin\java.exe" + ;IfFileExists $R0 JreFound + ;StrCpy $R0 "" + + ClearErrors + ReadEnvStr $R0 "JAVA_HOME" + StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" + IfErrors 0 JreFound + + ClearErrors + ReadRegStr $R1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" + ReadRegStr $R0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$R1" "JavaHome" + StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" + + IfErrors 0 JreFound + StrCpy $R0 "${JAVA_BIN}.exe" + + JreFound: + Pop $R1 + Exch $R0 +FunctionEnd From 1e2daa56a4aac17816a605e952acc130de4d9ced Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:20:50 +0100 Subject: [PATCH 04/30] Update ATCS_Installer.nsi to change ATCS_SOURCE_DIR path for improved directory structure and allow github actions --- packaging/Windows/ATCS_Installer.nsi | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 07c0949..2864fab 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -4,7 +4,7 @@ !define VERSION "$%VERSION:~1%" !define TRAINER_VERSION "0.1.5" !define JAVA_BIN "java" -!define ATCS_SOURCE_DIR "C:\ATCS" +!define ATCS_SOURCE_DIR "..\..\" Name "Andor's Trail Content Studio v${VERSION}" OutFile "ATCS_v${VERSION}_Setup.exe" @@ -87,23 +87,23 @@ Section install FileClose $9 WriteUninstaller "$INSTDIR\Uninstall.exe" - - + + !insertmacro MUI_STARTMENU_WRITE_BEGIN "ATCS" - + ;--- Create shortcuts CreateDirectory "$SMPROGRAMS\$StartMenuFolder" CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" "$INSTDIR\ATCS.cmd" "" "$INSTDIR\ATCS.ico" CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - + !insertmacro MUI_STARTMENU_WRITE_END - + SectionEnd ;------------------------------------------------------------------------------------ Section uninstall - + Delete "$INSTDIR\lib\jide-oss.jar" Delete "$INSTDIR\lib\ui.jar" Delete "$INSTDIR\lib\junit-4.10.jar" @@ -121,13 +121,13 @@ Section uninstall Delete "$INSTDIR\ATCS.jar" Delete "$INSTDIR\Uninstall.exe" RMDir "$INSTDIR" - + !insertmacro MUI_STARTMENU_GETFOLDER "ATCS" $StartMenuFolder - + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" Delete "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" RMDir "$SMPROGRAMS\$StartMenuFolder" - + SectionEnd @@ -139,28 +139,28 @@ Function GetJRE ; 2 - in JAVA_HOME environment variable ; 3 - in the registry ; 4 - assume java.exe in current dir or PATH - + Push $R0 Push $R1 - + ;ClearErrors ;StrCpy $R0 "$EXEDIR\jre\bin\java.exe" ;IfFileExists $R0 JreFound ;StrCpy $R0 "" - + ClearErrors ReadEnvStr $R0 "JAVA_HOME" StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" IfErrors 0 JreFound - + ClearErrors ReadRegStr $R1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" ReadRegStr $R0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$R1" "JavaHome" StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" - + IfErrors 0 JreFound StrCpy $R0 "${JAVA_BIN}.exe" - + JreFound: Pop $R1 Exch $R0 From b6cfe349c01f9867188d192a9e602e8f631dd751 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:21:42 +0100 Subject: [PATCH 05/30] Add GitHub Actions workflow for automated release builds --- .github/workflows/release.yml | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..38f5100 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Release Build + +on: + release: + types: [created] + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + + - name: Install NSIS + uses: joncloud/makensis-action@v4 + + - name: Build JAR + shell: bash + run: | + cd ATCS/packaging + chmod +x package.sh + ./package.sh -windows + + - name: Create Installer + shell: bash + run: | + cd ATCS/packaging/Windows + makensis ATCS_Installer.nsi + + - name: Get Version + id: get_version + shell: bash + run: | + VERSION=$(cat ATCS/packaging/ATCS_latest | sed 's/^v//') + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Upload ZIP to Release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./ATCS/packaging/ATCS_${{ env.VERSION }}.zip + asset_name: ATCS_${{ env.VERSION }}.zip + asset_content_type: application/zip + + - name: Upload Installer to Release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./ATCS/packaging/Windows/ATCS_v${{ env.VERSION }}_Setup.exe + asset_name: ATCS_v${{ env.VERSION }}_Setup.exe + asset_content_type: application/octet-stream From 92436d3ce9a5bd6e46d7ee60617eaff1b4fe9462 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sat, 15 Feb 2025 23:32:36 +0100 Subject: [PATCH 06/30] Update package.sh to switch from tar.gz to zip for archive creation --- packaging/package.sh | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/packaging/package.sh b/packaging/package.sh index 94fe1f1..0b0a2fc 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -21,7 +21,6 @@ MANIFEST_LOCATION="${PACKAGING_DIR}/Manifest.txt" VERSION_FILE="${PACKAGING_DIR}/ATCS_latest" SOURCE_BASE_DIR="${ATCS_SOURCE_DIR}/src" # Base directory for standard source code LIB_BASE_DIR="${ATCS_SOURCE_DIR}/lib" # Base directory for libraries -OUTPUT_JAR_DIR="${PACKAGING_DIR}" # Directory where the final JAR will be placed - as per script # --- **ADDITIONAL SOURCE CODE FOLDERS** --- EXTRA_SOURCE_DIRS=( @@ -103,17 +102,13 @@ cd "${PACKAGING_DIR}" || exit # Go back to packaging dir echo '' echo "Done creating jar at ${JAR_LOCATION}" -cp -f "${JAR_LOCATION}" "${OUTPUT_JAR_DIR}/common/ATCS.jar" # Copy JAR to versioned name +cp -f "${JAR_LOCATION}" "${PACKAGING_DIR}/common/ATCS.jar" # Copy JAR to versioned name # --- Create archive --- -if [ "$PLATFORM" = "LINUX" ]; then - cd "${OUTPUT_JAR_DIR}" || exit - echo "Creating archive" - tar caf "ATCS_${VERSION}.tar.gz" common/* # archive the 'common' folder which now contains the JAR and libs - echo "Created archive at ${OUTPUT_JAR_DIR}/ATCS_${VERSION}.tar.gz" - cd "${PACKAGING_DIR}" || exit -else - echo "Can't create zip files on windows yet. Please pack the content of the '${OUTPUT_JAR_DIR}/common/' folder yourself" -fi +cd "${PACKAGING_DIR}" || exit +echo "Creating archive" +zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs +echo "Created archive at ${PACKAGING_DIR}/ATCS_${VERSION}.zip" +cd "${PACKAGING_DIR}" || exit echo "Script finished." From 00e9e3b2a72eb246647f64812d78d0ef072b663a Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:01:27 +0100 Subject: [PATCH 07/30] Enhance package.sh to support platform-specific archive creation using PowerShell on Windows --- packaging/package.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packaging/package.sh b/packaging/package.sh index 0b0a2fc..2d688fa 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -107,7 +107,13 @@ cp -f "${JAR_LOCATION}" "${PACKAGING_DIR}/common/ATCS.jar" # Copy JAR to version # --- Create archive --- cd "${PACKAGING_DIR}" || exit echo "Creating archive" -zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs +if [ "$PLATFORM" = "WINDOWS" ]; then + # Use PowerShell's Compress-Archive which is available by default on Windows + powershell.exe -Command "Compress-Archive -Path './common/*' -DestinationPath './ATCS_${VERSION}.zip' -Force" +else + # Use zip command on Linux + zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs +fi echo "Created archive at ${PACKAGING_DIR}/ATCS_${VERSION}.zip" cd "${PACKAGING_DIR}" || exit From f154efceccf7dfa68f94173998d589c78800915a Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:20:21 +0100 Subject: [PATCH 08/30] Update ATCS_Installer.nsi to dynamically set VERSION from ATCS_latest file --- packaging/Windows/ATCS_Installer.nsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 8dcfada..3d82520 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -1,6 +1,7 @@ !include MUI2.nsh -!define VERSION "0.6.21" +!system 'for /f "delims=" %%a in ('type ..\ATCS_latest') do set "VERSION=%%a" && exit' +!define VERSION "$%VERSION:~1%" !define TRAINER_VERSION "0.1.5" !define JAVA_BIN "java" !define ATCS_SOURCE_DIR "C:\ATCS" From 104d3db5ad1d633d7fdde1ae7ff81b944f11641c Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:20:50 +0100 Subject: [PATCH 09/30] Update ATCS_Installer.nsi to change ATCS_SOURCE_DIR path for improved directory structure and allow github actions --- packaging/Windows/ATCS_Installer.nsi | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 3d82520..42f5f8f 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -4,7 +4,7 @@ !define VERSION "$%VERSION:~1%" !define TRAINER_VERSION "0.1.5" !define JAVA_BIN "java" -!define ATCS_SOURCE_DIR "C:\ATCS" +!define ATCS_SOURCE_DIR "..\..\" Name "Andor's Trail Content Studio v${VERSION}" OutFile "ATCS_v${VERSION}_Setup.exe" @@ -87,23 +87,23 @@ Section install FileClose $9 WriteUninstaller "$INSTDIR\Uninstall.exe" - - + + !insertmacro MUI_STARTMENU_WRITE_BEGIN "ATCS" - + ;--- Create shortcuts CreateDirectory "$SMPROGRAMS\$StartMenuFolder" CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" "$INSTDIR\ATCS.cmd" "" "$INSTDIR\ATCS.ico" CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - + !insertmacro MUI_STARTMENU_WRITE_END - + SectionEnd ;------------------------------------------------------------------------------------ Section uninstall - + Delete "$INSTDIR\lib\jide-oss.jar" Delete "$INSTDIR\lib\ui.jar" Delete "$INSTDIR\lib\junit-4.10.jar" @@ -121,13 +121,13 @@ Section uninstall Delete "$INSTDIR\ATCS.jar" Delete "$INSTDIR\Uninstall.exe" RMDir "$INSTDIR" - + !insertmacro MUI_STARTMENU_GETFOLDER "ATCS" $StartMenuFolder - + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" Delete "$SMPROGRAMS\$StartMenuFolder\Andor's Trail Content Studio.lnk" RMDir "$SMPROGRAMS\$StartMenuFolder" - + SectionEnd @@ -139,28 +139,28 @@ Function GetJRE ; 2 - in JAVA_HOME environment variable ; 3 - in the registry ; 4 - assume java.exe in current dir or PATH - + Push $R0 Push $R1 - + ;ClearErrors ;StrCpy $R0 "$EXEDIR\jre\bin\java.exe" ;IfFileExists $R0 JreFound ;StrCpy $R0 "" - + ClearErrors ReadEnvStr $R0 "JAVA_HOME" StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" IfErrors 0 JreFound - + ClearErrors ReadRegStr $R1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" ReadRegStr $R0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$R1" "JavaHome" StrCpy $R0 "$R0\bin\${JAVA_BIN}.exe" - + IfErrors 0 JreFound StrCpy $R0 "${JAVA_BIN}.exe" - + JreFound: Pop $R1 Exch $R0 From f0be1a8135543ca2ee05dee008016966c30951ab Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:21:42 +0100 Subject: [PATCH 10/30] Add GitHub Actions workflow for automated release builds --- .github/workflows/release.yml | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..38f5100 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Release Build + +on: + release: + types: [created] + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + + - name: Install NSIS + uses: joncloud/makensis-action@v4 + + - name: Build JAR + shell: bash + run: | + cd ATCS/packaging + chmod +x package.sh + ./package.sh -windows + + - name: Create Installer + shell: bash + run: | + cd ATCS/packaging/Windows + makensis ATCS_Installer.nsi + + - name: Get Version + id: get_version + shell: bash + run: | + VERSION=$(cat ATCS/packaging/ATCS_latest | sed 's/^v//') + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Upload ZIP to Release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./ATCS/packaging/ATCS_${{ env.VERSION }}.zip + asset_name: ATCS_${{ env.VERSION }}.zip + asset_content_type: application/zip + + - name: Upload Installer to Release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./ATCS/packaging/Windows/ATCS_v${{ env.VERSION }}_Setup.exe + asset_name: ATCS_v${{ env.VERSION }}_Setup.exe + asset_content_type: application/octet-stream From 9a162ac58db7dec36c07fa8797b910eaa5195985 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:36:02 +0100 Subject: [PATCH 11/30] Refactor release workflow to improve directory navigation and version handling --- .github/workflows/release.yml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 38f5100..1fbfd6a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,22 +23,33 @@ jobs: - name: Build JAR shell: bash run: | - cd ATCS/packaging + pwd + cd packaging + pwd chmod +x package.sh ./package.sh -windows - name: Create Installer shell: bash run: | - cd ATCS/packaging/Windows + pwd + cd packaging/Windows + pwd + ls -la makensis ATCS_Installer.nsi + echo "Checking installer artifacts:" + ls -la - name: Get Version id: get_version shell: bash run: | - VERSION=$(cat ATCS/packaging/ATCS_latest | sed 's/^v//') + echo "Reading version from file:" + cat packaging/ATCS_latest + VERSION=$(cat packaging/ATCS_latest | sed 's/^v//') + echo "Processed version: $VERSION" echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "Environment variable set to: $VERSION" - name: Upload ZIP to Release uses: actions/upload-release-asset@v1 @@ -46,7 +57,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: ./ATCS/packaging/ATCS_${{ env.VERSION }}.zip + asset_path: ./packaging/ATCS_${{ env.VERSION }}.zip asset_name: ATCS_${{ env.VERSION }}.zip asset_content_type: application/zip @@ -56,6 +67,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: ./ATCS/packaging/Windows/ATCS_v${{ env.VERSION }}_Setup.exe + asset_path: ./packaging/Windows/ATCS_v${{ env.VERSION }}_Setup.exe asset_name: ATCS_v${{ env.VERSION }}_Setup.exe asset_content_type: application/octet-stream From 4fe7e71a43786c424048ac5064ca645499ad5e0e Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:39:10 +0100 Subject: [PATCH 12/30] Refactor GitHub Actions workflow to streamline version retrieval process --- .github/workflows/release.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1fbfd6a..b330205 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,6 +11,18 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Get Version + id: get_version + shell: bash + run: | + pwd + echo "Reading version from file:" + cat packaging/ATCS_latest + VERSION=$(cat packaging/ATCS_latest | sed 's/^v//') + echo "Processed version: $VERSION" + echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "Environment variable set to: $VERSION" + - name: Set up JDK uses: actions/setup-java@v2 with: @@ -40,17 +52,6 @@ jobs: echo "Checking installer artifacts:" ls -la - - name: Get Version - id: get_version - shell: bash - run: | - echo "Reading version from file:" - cat packaging/ATCS_latest - VERSION=$(cat packaging/ATCS_latest | sed 's/^v//') - echo "Processed version: $VERSION" - echo "VERSION=$VERSION" >> $GITHUB_ENV - echo "Environment variable set to: $VERSION" - - name: Upload ZIP to Release uses: actions/upload-release-asset@v1 env: From a2640c2da080336310d8a0b917b0cc44a20bf009 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 00:57:27 +0100 Subject: [PATCH 13/30] Update installer script and release workflow to use dynamic versioning --- .github/workflows/release.yml | 18 +++++++++--------- packaging/Windows/ATCS_Installer.nsi | 3 +-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b330205..5ff9e71 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,10 +15,9 @@ jobs: id: get_version shell: bash run: | - pwd echo "Reading version from file:" cat packaging/ATCS_latest - VERSION=$(cat packaging/ATCS_latest | sed 's/^v//') + VERSION=$(cat packaging/ATCS_latest | sed 's/^v//' | sed 's/[^0-9.]//g') echo "Processed version: $VERSION" echo "VERSION=$VERSION" >> $GITHUB_ENV echo "Environment variable set to: $VERSION" @@ -35,22 +34,23 @@ jobs: - name: Build JAR shell: bash run: | - pwd cd packaging - pwd chmod +x package.sh + echo "Building JAR and ZIP for version: ${{ env.VERSION }}" ./package.sh -windows + echo "Created artifacts:" + ls -la ATCS_${{ env.VERSION }}.zip + ls -la common/ATCS.jar - name: Create Installer shell: bash run: | - pwd cd packaging/Windows - pwd - ls -la - makensis ATCS_Installer.nsi - echo "Checking installer artifacts:" ls -la + echo "Building installer for version: ${{ env.VERSION }}" + makensis /DVERSION="${{ env.VERSION }}" ATCS_Installer.nsi + echo "Created installer:" + ls -la ATCS_v${{ env.VERSION }}_Setup.exe - name: Upload ZIP to Release uses: actions/upload-release-asset@v1 diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 42f5f8f..3780f4d 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -1,7 +1,6 @@ !include MUI2.nsh -!system 'for /f "delims=" %%a in ('type ..\ATCS_latest') do set "VERSION=%%a" && exit' -!define VERSION "$%VERSION:~1%" +; Version will be passed as /DVERSION=x.x.x !define TRAINER_VERSION "0.1.5" !define JAVA_BIN "java" !define ATCS_SOURCE_DIR "..\..\" From b58d080f4dbcde6dbc97a3b57bad8993efd4c8f2 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:07:44 +0100 Subject: [PATCH 14/30] Update installer script and release workflow to improve version handling --- .github/workflows/release.yml | 23 +++++++++-------------- packaging/Windows/ATCS_Installer.nsi | 12 ++++++------ 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5ff9e71..c91ce95 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: run: | echo "Reading version from file:" cat packaging/ATCS_latest - VERSION=$(cat packaging/ATCS_latest | sed 's/^v//' | sed 's/[^0-9.]//g') + VERSION=$(cat packaging/ATCS_latest) echo "Processed version: $VERSION" echo "VERSION=$VERSION" >> $GITHUB_ENV echo "Environment variable set to: $VERSION" @@ -30,6 +30,11 @@ jobs: - name: Install NSIS uses: joncloud/makensis-action@v4 + env: + VERSION: ${{ env.VERSION }} + with: + script-file: packaging/Windows/ATCS_Installer.nsi + arguments: /DVERSION="${{ env.VERSION }}" - name: Build JAR shell: bash @@ -39,18 +44,8 @@ jobs: echo "Building JAR and ZIP for version: ${{ env.VERSION }}" ./package.sh -windows echo "Created artifacts:" - ls -la ATCS_${{ env.VERSION }}.zip ls -la common/ATCS.jar - - - name: Create Installer - shell: bash - run: | - cd packaging/Windows - ls -la - echo "Building installer for version: ${{ env.VERSION }}" - makensis /DVERSION="${{ env.VERSION }}" ATCS_Installer.nsi - echo "Created installer:" - ls -la ATCS_v${{ env.VERSION }}_Setup.exe + ls -la ATCS_${{ env.VERSION }}.zip - name: Upload ZIP to Release uses: actions/upload-release-asset@v1 @@ -68,6 +63,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: ./packaging/Windows/ATCS_v${{ env.VERSION }}_Setup.exe - asset_name: ATCS_v${{ env.VERSION }}_Setup.exe + asset_path: ./packaging/ATCS_${{ env.VERSION }}_Setup.exe + asset_name: ATCS_${{ env.VERSION }}_Setup.exe asset_content_type: application/octet-stream diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 3780f4d..b671470 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -1,12 +1,12 @@ !include MUI2.nsh -; Version will be passed as /DVERSION=x.x.x +; Version will be passed as /DVERSION=vx.x.x !define TRAINER_VERSION "0.1.5" !define JAVA_BIN "java" !define ATCS_SOURCE_DIR "..\..\" -Name "Andor's Trail Content Studio v${VERSION}" -OutFile "ATCS_v${VERSION}_Setup.exe" +Name "Andor's Trail Content Studio ${VERSION}" +OutFile "..\ATCS_${VERSION}_Setup.exe" InstallDir "$PROGRAMFILES\ATCS\" ;SetCompressor /SOLID /FINAL lzma @@ -14,10 +14,10 @@ InstallDir "$PROGRAMFILES\ATCS\" Var StartMenuFolder !define MUI_WELCOMEPAGE_TITLE "Welcome to Andor's Trail Content Studio installer" -!define MUI_WELCOMEPAGE_TEXT "This will install Andor's Trail Content Studio v${VERSION}" -!define MUI_FINISHPAGE_TEXT "Andor's Trail Content Studio v${VERSION} - Install completed !" +!define MUI_WELCOMEPAGE_TEXT "This will install Andor's Trail Content Studio ${VERSION}" +!define MUI_FINISHPAGE_TEXT "Andor's Trail Content Studio ${VERSION} - Install completed !" !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Andor's Trail Content Studio" -!define MUI_PAGE_HEADER_TEXT "Installing Andor's Trail Content Studio v${VERSION}" +!define MUI_PAGE_HEADER_TEXT "Installing Andor's Trail Content Studio ${VERSION}" ;Start Menu Folder Page Configuration From c950324cd9fea825ae18044b22ae67e855700b00 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:10:25 +0100 Subject: [PATCH 15/30] Reorder NSIS installation step in release workflow --- .github/workflows/release.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c91ce95..14837a1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,14 +28,6 @@ jobs: java-version: '11' distribution: 'adopt' - - name: Install NSIS - uses: joncloud/makensis-action@v4 - env: - VERSION: ${{ env.VERSION }} - with: - script-file: packaging/Windows/ATCS_Installer.nsi - arguments: /DVERSION="${{ env.VERSION }}" - - name: Build JAR shell: bash run: | @@ -47,6 +39,14 @@ jobs: ls -la common/ATCS.jar ls -la ATCS_${{ env.VERSION }}.zip + - name: Install NSIS + uses: joncloud/makensis-action@v4 + env: + VERSION: ${{ env.VERSION }} + with: + script-file: packaging/Windows/ATCS_Installer.nsi + arguments: /DVERSION="${{ env.VERSION }}" + - name: Upload ZIP to Release uses: actions/upload-release-asset@v1 env: From becf45f249c14a78dbdd744264fbdfab90c50104 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:19:20 +0100 Subject: [PATCH 16/30] Refactor release workflow to consolidate asset uploads --- .github/workflows/release.yml | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 14837a1..8d9b6a0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,22 +47,11 @@ jobs: script-file: packaging/Windows/ATCS_Installer.nsi arguments: /DVERSION="${{ env.VERSION }}" - - name: Upload ZIP to Release - uses: actions/upload-release-asset@v1 + - name: Upload Release Assets + uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./packaging/ATCS_${{ env.VERSION }}.zip - asset_name: ATCS_${{ env.VERSION }}.zip - asset_content_type: application/zip - - - name: Upload Installer to Release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./packaging/ATCS_${{ env.VERSION }}_Setup.exe - asset_name: ATCS_${{ env.VERSION }}_Setup.exe - asset_content_type: application/octet-stream + files: | + ./packaging/ATCS_${{ env.VERSION }}.zip + ./packaging/ATCS_${{ env.VERSION }}_Setup.exe From ed2ad56b7604e10d385bc5a3b410bd108b1d0842 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Tue, 18 Feb 2025 18:08:02 +0100 Subject: [PATCH 17/30] cleanup some packaging stuff --- .github/workflows/release.yml | 7 +++---- packaging/package.sh | 13 +++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d9b6a0..163641c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,8 @@ jobs: run: | echo "Reading version from file:" cat packaging/ATCS_latest - VERSION=$(cat packaging/ATCS_latest) + echo "" + VERSION=$(tr -d '[:space:]' < "packaging/ATCS_latest") echo "Processed version: $VERSION" echo "VERSION=$VERSION" >> $GITHUB_ENV echo "Environment variable set to: $VERSION" @@ -26,7 +27,7 @@ jobs: uses: actions/setup-java@v2 with: java-version: '11' - distribution: 'adopt' + distribution: 'temurin' - name: Build JAR shell: bash @@ -41,8 +42,6 @@ jobs: - name: Install NSIS uses: joncloud/makensis-action@v4 - env: - VERSION: ${{ env.VERSION }} with: script-file: packaging/Windows/ATCS_Installer.nsi arguments: /DVERSION="${{ env.VERSION }}" diff --git a/packaging/package.sh b/packaging/package.sh index 2d688fa..193fa39 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -29,7 +29,7 @@ EXTRA_SOURCE_DIRS=( "siphash-zackehh/src/main/java" ) -# --- Libraries to include (from IntelliJ artifact definition) --- +# --- Libraries to include --- LIBRARIES=( "AndorsTrainer_v0.1.5.jar" "bsh-2.0b4.jar" @@ -44,7 +44,7 @@ LIBRARIES=( # --- Get version --- echo "Getting version" -VERSION=$(cat "${VERSION_FILE}") +VERSION=$(tr -d '[:space:]' < "${VERSION_FILE}") echo "Got version ${VERSION}" # --- Prepare temporary directory --- @@ -62,7 +62,7 @@ done # --- Set ClassPath --- echo "Getting source files" -# Find all java files in source directories and compile them +# Find all java files in source directories SOURCE_FILES=$(find "${SOURCE_BASE_DIR}" "${EXTRA_SOURCE_DIRS[@]/#/${ATCS_SOURCE_DIR}/}" -name "*.java" -print) #echo "SourceFiles: ${SOURCE_FILES}" echo "" @@ -70,6 +70,8 @@ echo "" # --- Build Java classes --- echo 'Building java classes' +# shellcheck disable=SC2086 +# (we need word splitting here to pass multiple files) javac -cp "${TEMP_DIR}" -d "${TEMP_DIR}" ${SOURCE_FILES} if [ $? -ne 0 ]; then echo "Compilation failed. Please check errors above." @@ -114,7 +116,10 @@ else # Use zip command on Linux zip -r "ATCS_${VERSION}.zip" common/* # archive the 'common' folder which now contains the JAR and libs fi +if [ $? -ne 0 ]; then + echo "Archive creation failed." + exit 1 +fi echo "Created archive at ${PACKAGING_DIR}/ATCS_${VERSION}.zip" -cd "${PACKAGING_DIR}" || exit echo "Script finished." From ed81c2382f1fbc73e3ecdb7ab282531f6efe1900 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Tue, 18 Feb 2025 22:33:08 +0100 Subject: [PATCH 18/30] Fix some issues with the linux ATCS.sh when the current path has spaces etc. --- packaging/common/ATCS.sh | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/packaging/common/ATCS.sh b/packaging/common/ATCS.sh index 41d78b2..21bcfbf 100755 --- a/packaging/common/ATCS.sh +++ b/packaging/common/ATCS.sh @@ -1,21 +1,26 @@ #!/bin/bash -ATCS_DIR=$(dirname $(readlink -f "$0" || greadlink -f "$0" || stat -f "$0")) +ATCS_DIR="$(dirname "$(readlink -f "$0" || greadlink -f "$0" || stat -f "$0")")" +echo "ATCS_DIR: '${ATCS_DIR}'" -MAX_MEM=512M - -JAVA=java +MAX_MEM="512M" +JAVA="java" JAVA_OPTS='-DFONT_SCALE=1.0 -Dswing.aatext=true' -ENV_FILE=${ATCS_DIR}/ATCS.env -if [ -f ${ENV_FILE} ]; then - source ${ENV_FILE} +ENV_FILE="${ATCS_DIR}/ATCS.env" + +if [ -f "${ENV_FILE}" ]; then + source "${ENV_FILE}" else - echo "#MAX_MEM=${MAX_MEM}" >${ENV_FILE} - echo "#JAVA=${JAVA}" >>${ENV_FILE} - echo "#JAVA_OPTS=${JAVA_OPTS}" >>${ENV_FILE} - echo "" >>${ENV_FILE} + { + echo "#MAX_MEM=\"${MAX_MEM}\"" + echo "#JAVA=\"${JAVA}\"" + echo "#JAVA_OPTS=\"${JAVA_OPTS}\"" + echo "" + }>"${ENV_FILE}" fi export ENV_FILE - -$JAVA ${JAVA_OPTS} -Xmx${MAX_MEM} -jar ${ATCS_DIR}/ATCS.jar +exit 1 +# shellcheck disable=SC2086 +# (spellchecker is disabled for this line, because we want it to be split into multiple arguments) +$JAVA ${JAVA_OPTS} -Xmx${MAX_MEM} -jar "${ATCS_DIR}/ATCS.jar" From 9a6c5ecf6ead13a82f649161303dd05b4b26e01a Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Tue, 18 Feb 2025 22:34:29 +0100 Subject: [PATCH 19/30] delete obsolete Linux folder --- packaging/Linux/.gitignore | 2 -- packaging/Linux/ATCS/ATCS.cmd | 20 -------------------- packaging/Linux/ATCS/ATCS.ico | Bin 24838 -> 0 bytes packaging/Linux/ATCS/ATCS.sh | 22 ---------------------- packaging/Linux/ATCS/lib/.gitignore | 1 - 5 files changed, 45 deletions(-) delete mode 100644 packaging/Linux/.gitignore delete mode 100644 packaging/Linux/ATCS/ATCS.cmd delete mode 100644 packaging/Linux/ATCS/ATCS.ico delete mode 100644 packaging/Linux/ATCS/ATCS.sh delete mode 100644 packaging/Linux/ATCS/lib/.gitignore diff --git a/packaging/Linux/.gitignore b/packaging/Linux/.gitignore deleted file mode 100644 index 7f160db..0000000 --- a/packaging/Linux/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/ATCS_v*.zip -/ATCS_v*.zip.rename diff --git a/packaging/Linux/ATCS/ATCS.cmd b/packaging/Linux/ATCS/ATCS.cmd deleted file mode 100644 index 8506aed..0000000 --- a/packaging/Linux/ATCS/ATCS.cmd +++ /dev/null @@ -1,20 +0,0 @@ -@echo off - -set "ATCS_DIR=%~dp0" -set "MAX_MEM=512M" -set "CP=%ATCS_DIR%lib\*" -set "JAVA=javaw.exe" -set "JAVA_OPTS=-DFONT_SCALE=1.0 -Dswing.aatext=true" -set "ENV_FILE=%ATCS_DIR%ATCS.env.bat" -set "MAIN_CLASS=com.gpl.rpg.atcontentstudio.ATContentStudio" - -if exist "%ENV_FILE%" ( - call "%ENV_FILE%" -) else ( - echo REM set "MAX_MEM=%MAX_MEM%">"%ENV_FILE%" - echo REM set "JAVA=%JAVA%">>"%ENV_FILE%" - echo REM set "JAVA_OPTS=%JAVA_OPTS%">>"%ENV_FILE%" - echo.>>"%ENV_FILE%" -) - -start "" "%JAVA%" %JAVA_OPTS% -Xmx%MAX_MEM% -cp "%CP%" %MAIN_CLASS% diff --git a/packaging/Linux/ATCS/ATCS.ico b/packaging/Linux/ATCS/ATCS.ico deleted file mode 100644 index 4f829e49623b7852a4f653edeaf527b454222574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24838 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 Kn@PX7(f=Qa>j9Pk diff --git a/packaging/Linux/ATCS/ATCS.sh b/packaging/Linux/ATCS/ATCS.sh deleted file mode 100644 index 16f4398..0000000 --- a/packaging/Linux/ATCS/ATCS.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -ATCS_DIR=$(dirname $(readlink -f "$0" || greadlink -f "$0" || stat -f "$0")) -MAX_MEM=512M -CP=$(find ${ATCS_DIR}/lib/ -name '*.jar' | paste -sd: -) -JAVA=java -JAVA_OPTS='-DFONT_SCALE=1.0 -Dswing.aatext=true' -ENV_FILE=${ATCS_DIR}/ATCS.env -MAIN_CLASS=com.gpl.rpg.atcontentstudio.ATContentStudio - -if [ -f ${ENV_FILE} ] -then - source ${ENV_FILE} -else - echo "#MAX_MEM=${MAX_MEM}" > ${ENV_FILE} - echo "#JAVA=${JAVA}" >> ${ENV_FILE} - echo "#JAVA_OPTS=${JAVA_OPTS}" >> ${ENV_FILE} - echo "" >> ${ENV_FILE} -fi - -export ENV_FILE - -$JAVA ${JAVA_OPTS} -Xmx${MAX_MEM} -cp ${CP} ${MAIN_CLASS} diff --git a/packaging/Linux/ATCS/lib/.gitignore b/packaging/Linux/ATCS/lib/.gitignore deleted file mode 100644 index 0557829..0000000 --- a/packaging/Linux/ATCS/lib/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.jar From 7b30cc6355da6ec41241bc227ec2603ef4aa1833 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Tue, 18 Feb 2025 22:47:13 +0100 Subject: [PATCH 20/30] Remove unnecessary exit command from ATCS.sh (cherry picked from commit a76d425ab7aba953458b72781a2d702f77ba41e5) --- packaging/common/ATCS.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/common/ATCS.sh b/packaging/common/ATCS.sh index 21bcfbf..61086ba 100755 --- a/packaging/common/ATCS.sh +++ b/packaging/common/ATCS.sh @@ -20,7 +20,7 @@ else fi export ENV_FILE -exit 1 + # shellcheck disable=SC2086 # (spellchecker is disabled for this line, because we want it to be split into multiple arguments) $JAVA ${JAVA_OPTS} -Xmx${MAX_MEM} -jar "${ATCS_DIR}/ATCS.jar" From cd78ee3ad0fdc762ea8d9f7d5cca0b45668364a4 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Tue, 18 Feb 2025 22:47:28 +0100 Subject: [PATCH 21/30] Add .gitattributes to normalize line endings and enforce LF for bash scripts (cherry picked from commit a71e8fe0a40bae529e818d559eccfd2897509255) --- .gitattributes | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1b58bd7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +# Set default behavior to automatically normalize line endings. +* text=auto + +# Force bash scripts to always use LF line endings so that if a repo is accessed +# in Unix via a file share from Windows, the scripts will work. +*.sh text eol=lf \ No newline at end of file From 38a3d4082bb41228af8b043b6587e0c456257af7 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:44:14 +0100 Subject: [PATCH 22/30] Update package.sh to reference ATCS_latest from the source directory and copy it to the temporary packaging directory (cherry picked from commit 5191f56a01dda021b284f794366fba60c7d7b8d2) --- packaging/package.sh | 3 ++- {packaging => res}/ATCS_latest | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename {packaging => res}/ATCS_latest (100%) diff --git a/packaging/package.sh b/packaging/package.sh index 193fa39..a2b8b51 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -18,7 +18,7 @@ ATCS_SOURCE_DIR=$(dirname "${PACKAGING_DIR}") TEMP_DIR="${PACKAGING_DIR}/tmp" JAR_LOCATION="${PACKAGING_DIR}/ATCS.jar" # Output JAR location as per script MANIFEST_LOCATION="${PACKAGING_DIR}/Manifest.txt" -VERSION_FILE="${PACKAGING_DIR}/ATCS_latest" +VERSION_FILE="${ATCS_SOURCE_DIR}/res/ATCS_latest" SOURCE_BASE_DIR="${ATCS_SOURCE_DIR}/src" # Base directory for standard source code LIB_BASE_DIR="${ATCS_SOURCE_DIR}/lib" # Base directory for libraries @@ -86,6 +86,7 @@ mkdir -p "${TEMP_DIR}/com/gpl/rpg/atcontentstudio/img" mkdir -p "${TEMP_DIR}/tiled/io/resources/" cp -r "${ATCS_SOURCE_DIR}"/src/com/gpl/rpg/atcontentstudio/img/* "${TEMP_DIR}/com/gpl/rpg/atcontentstudio/img/" # some icons cp -r "${ATCS_SOURCE_DIR}"/hacked-libtiled/tiled/io/resources/* "${TEMP_DIR}/tiled/io/resources/" # dtd file for tmx maps +cp "${PACKAGING_DIR}"/ATCS_latest "${TEMP_DIR}/" # Copy version file # --- Create JAR file --- echo "" diff --git a/packaging/ATCS_latest b/res/ATCS_latest similarity index 100% rename from packaging/ATCS_latest rename to res/ATCS_latest From 022c9ad2293d0175e96d27fc06c4dd4aba06f123 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:46:20 +0100 Subject: [PATCH 23/30] Update release workflow to read version from the correct file path (cherry picked from commit f14d21e322d4f214ec19bb297b6b9eaecf09c374) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 163641c..f7481d2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,9 +16,9 @@ jobs: shell: bash run: | echo "Reading version from file:" - cat packaging/ATCS_latest + cat res/ATCS_latest echo "" - VERSION=$(tr -d '[:space:]' < "packaging/ATCS_latest") + VERSION=$(tr -d '[:space:]' < "res/ATCS_latest") echo "Processed version: $VERSION" echo "VERSION=$VERSION" >> $GITHUB_ENV echo "Environment variable set to: $VERSION" From dfb3e31a7a9e9d6f21725775dcbaac6edacc521f Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:56:04 +0100 Subject: [PATCH 24/30] Update package.sh to copy version file from VERSION_FILE variable (cherry picked from commit 5ff45746d887110c707090a70e14b2163fc69e40) --- packaging/package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/package.sh b/packaging/package.sh index a2b8b51..0ff0145 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -86,7 +86,7 @@ mkdir -p "${TEMP_DIR}/com/gpl/rpg/atcontentstudio/img" mkdir -p "${TEMP_DIR}/tiled/io/resources/" cp -r "${ATCS_SOURCE_DIR}"/src/com/gpl/rpg/atcontentstudio/img/* "${TEMP_DIR}/com/gpl/rpg/atcontentstudio/img/" # some icons cp -r "${ATCS_SOURCE_DIR}"/hacked-libtiled/tiled/io/resources/* "${TEMP_DIR}/tiled/io/resources/" # dtd file for tmx maps -cp "${PACKAGING_DIR}"/ATCS_latest "${TEMP_DIR}/" # Copy version file +cp "${VERSION_FILE}" "${TEMP_DIR}/" # Copy version file # --- Create JAR file --- echo "" From dbff7fb571da663b4f770fde938719f0cc6cb563 Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 16 Feb 2025 01:44:23 +0100 Subject: [PATCH 25/30] Refactor version handling to read APP_VERSION from ATCS_latest file (cherry picked from commit c9cccf9eb29f90e9a90d1609023f4f47c19d2969) --- .../rpg/atcontentstudio/ATContentStudio.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java b/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java index e53645f..2833a61 100644 --- a/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java +++ b/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java @@ -14,11 +14,7 @@ import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; @@ -42,8 +38,7 @@ import com.gpl.rpg.atcontentstudio.ui.WorkspaceSelector; public class ATContentStudio { public static final String APP_NAME = "Andor's Trail Content Studio"; - public static final String APP_VERSION = "v0.6.21"; - +public static final String APP_VERSION = readVersionFromFile(); public static final String CHECK_UPDATE_URL = "https://andorstrail.com/static/ATCS_latest"; public static final String DOWNLOAD_URL = "https://andorstrail.com/viewtopic.php?f=6&t=4806"; @@ -231,4 +226,13 @@ public class ATContentStudio { } } } + private static String readVersionFromFile() { + try (BufferedReader reader = new BufferedReader(new InputStreamReader( + Objects.requireNonNull(ATContentStudio.class.getResourceAsStream("/ATCS_latest"))))) { + return reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + return "unknown"; + } + } } From 2fb16c921370c04bf6977a068245fd3cd00a9850 Mon Sep 17 00:00:00 2001 From: "Nut.andor" Date: Sun, 16 Mar 2025 20:17:32 +0100 Subject: [PATCH 26/30] missing JDK in misc.xml --- .idea/misc.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 901eaf0..4944549 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file From eb6377a983d5575ecaa57159446b753bdec8ca5e Mon Sep 17 00:00:00 2001 From: "Nut.andor" Date: Sun, 16 Mar 2025 20:17:57 +0100 Subject: [PATCH 27/30] Adding better error message in TMX input --- hacked-libtiled/tiled/core/TileSet.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hacked-libtiled/tiled/core/TileSet.java b/hacked-libtiled/tiled/core/TileSet.java index fcacaf7..3551728 100644 --- a/hacked-libtiled/tiled/core/TileSet.java +++ b/hacked-libtiled/tiled/core/TileSet.java @@ -98,7 +98,11 @@ public class TileSet implements Iterable File f = new File(imgFilename); - BufferedImage image = ImageIO.read(f.getCanonicalFile()); + BufferedImage image; + try { + image = ImageIO.read(f.getCanonicalFile()); + } catch (IOException e) { throw new IOException("Failed to load " + imgFilename); + } if (image == null) { throw new IOException("Failed to load " + imgFilename); } From 9b1ac0d3e10d69b913c75f6abbe00818b204d1fc Mon Sep 17 00:00:00 2001 From: "Nut.andor" Date: Sat, 28 Jun 2025 20:45:16 +0200 Subject: [PATCH 28/30] new item sprite (map objects) --- src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java index aa39ee1..87410af 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java @@ -333,6 +333,10 @@ public class NPC extends JSONElement { } if (this.icon_id != null) { String spritesheetId = this.icon_id.split(":")[0]; + if (proj.getSpritesheet(spritesheetId) == null) { + Notification.addError("Error Spritesheet "+id+". has no backlink."); + return; + } proj.getSpritesheet(spritesheetId).addBacklink(this); } From 24e1e526ce2ece31b850f4caf225490780b9529f Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Thu, 3 Jul 2025 20:05:00 +0200 Subject: [PATCH 29/30] refactor to keep compatibility with old java version (openjdk-11 tested) --- .../atcontentstudio/ui/ListenerListModel.java | 34 ++++++++++++++----- .../ui/gamedataeditors/CommonEditor.java | 30 ++++++++-------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/src/com/gpl/rpg/atcontentstudio/ui/ListenerListModel.java b/src/com/gpl/rpg/atcontentstudio/ui/ListenerListModel.java index a90ad3a..c9128c6 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/ListenerListModel.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/ListenerListModel.java @@ -13,18 +13,36 @@ public interface ListenerListModel extends ListModel { } default void notifyListeners(Object source, ChangeType event, int index0, int index1) { - int eventCode = switch (event) { - case CHANGED -> ListDataEvent.CONTENTS_CHANGED; - case ADDED -> ListDataEvent.INTERVAL_ADDED; - case REMOVED -> ListDataEvent.INTERVAL_REMOVED; - }; + int eventCode; + switch (event) { + case CHANGED: + eventCode = ListDataEvent.CONTENTS_CHANGED; + break; + case ADDED: + eventCode = ListDataEvent.INTERVAL_ADDED; + break; + case REMOVED: + eventCode = ListDataEvent.INTERVAL_REMOVED; + break; + default: + throw new IllegalArgumentException(); + } for (ListDataListener l : getListeners()) { ListDataEvent e = new ListDataEvent(source, eventCode, index0, index1); switch (event) { - case CHANGED -> l.contentsChanged(e); - case ADDED -> l.intervalAdded(e); - case REMOVED -> l.intervalRemoved(e); + case CHANGED: { + l.contentsChanged(e); + break; + } + case ADDED: { + l.intervalAdded(e); + break; + } + case REMOVED: { + l.intervalRemoved(e); + break; + } } } } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/CommonEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/CommonEditor.java index 8090851..02e9926 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/CommonEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/CommonEditor.java @@ -28,7 +28,8 @@ public class CommonEditor { @Override public Component getListCellRendererComponent(@SuppressWarnings("rawtypes") JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - if (c instanceof JLabel label) { + if (c instanceof JLabel) { + JLabel label = (JLabel) c; Common.TimedActorConditionEffect effect = (Common.TimedActorConditionEffect) value; if (effect.condition != null) { @@ -69,7 +70,8 @@ public class CommonEditor { @Override public Component getListCellRendererComponent(@SuppressWarnings("rawtypes") JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - if (c instanceof JLabel label) { + if (c instanceof JLabel) { + JLabel label = (JLabel) c; Common.ActorConditionEffect effect = (Common.ActorConditionEffect) value; if (effect.condition != null) { @@ -108,13 +110,13 @@ public class CommonEditor { @Override protected void addFields(FieldUpdateListener listener, boolean writable) { super.addFields(listener, writable); - hitReceivedEffectHPMinTarget = addIntegerField(effectPane, "HP bonus min%s: ".formatted(applyToTargetHint), + hitReceivedEffectHPMinTarget = addIntegerField(effectPane, String.format("HP bonus min%s: ", applyToTargetHint), effect.target.hp_boost_min, true, writable, listener); - hitReceivedEffectHPMaxTarget = addIntegerField(effectPane, "HP bonus max%s: ".formatted(applyToTargetHint), + hitReceivedEffectHPMaxTarget = addIntegerField(effectPane, String.format("HP bonus max%s: ", applyToTargetHint), effect.target.hp_boost_max, true, writable, listener); - hitReceivedEffectAPMinTarget = addIntegerField(effectPane, "AP bonus min%s: ".formatted(applyToTargetHint), + hitReceivedEffectAPMinTarget = addIntegerField(effectPane, String.format("AP bonus min%s: ", applyToTargetHint), effect.target.ap_boost_min, true, writable, listener); - hitReceivedEffectAPMaxTarget = addIntegerField(effectPane, "AP bonus max%s: ".formatted(applyToTargetHint), + hitReceivedEffectAPMaxTarget = addIntegerField(effectPane, String.format("AP bonus max%s: ", applyToTargetHint), effect.target.ap_boost_max, true, writable, listener); } @@ -160,7 +162,7 @@ public class CommonEditor { if (applyToTargetHint == null || applyToTargetHint == "") { this.applyToTargetHint = ""; } else { - this.applyToTargetHint = " (%s)".formatted(applyToTargetHint); + this.applyToTargetHint = String.format(" (%s)", applyToTargetHint); } } @@ -174,7 +176,7 @@ public class CommonEditor { protected void addLists(FieldUpdateListener listener, boolean writable) { super.addLists(listener, writable); - String titleTarget = "Actor Conditions applied to the target%s: ".formatted(applyToTargetHint); + String titleTarget = String.format("Actor Conditions applied to the target%s: ", applyToTargetHint); CommonEditor.TimedConditionsCellRenderer cellRendererTarget = new CommonEditor.TimedConditionsCellRenderer(); BasicLambdaWithArg selectedSetTarget = (value) -> hitTargetConditionPane.selectedCondition = value; BasicLambdaWithReturn selectedGetTarget = () -> hitTargetConditionPane.selectedCondition; @@ -237,7 +239,7 @@ public class CommonEditor { if (applyToHint == null || applyToHint == "") { this.applyToHint = ""; } else { - this.applyToHint = " (%s)".formatted(applyToHint); + this.applyToHint = String.format(" (%s)", applyToHint); } } @@ -254,18 +256,18 @@ public class CommonEditor { } protected void addFields(FieldUpdateListener listener, boolean writable) { - effectHPMin = addIntegerField(effectPane, "HP bonus min%s: ".formatted(applyToHint), effect.hp_boost_min, + effectHPMin = addIntegerField(effectPane, String.format("HP bonus min%s: ", applyToHint), effect.hp_boost_min, true, writable, listener); - effectHPMax = addIntegerField(effectPane, "HP bonus max%s: ".formatted(applyToHint), effect.hp_boost_max, + effectHPMax = addIntegerField(effectPane, String.format("HP bonus max%s: ", applyToHint), effect.hp_boost_max, true, writable, listener); - effectAPMin = addIntegerField(effectPane, "AP bonus min%s: ".formatted(applyToHint), effect.ap_boost_min, + effectAPMin = addIntegerField(effectPane, String.format("AP bonus min%s: ", applyToHint), effect.ap_boost_min, true, writable, listener); - effectAPMax = addIntegerField(effectPane, "AP bonus max%s: ".formatted(applyToHint), effect.ap_boost_max, + effectAPMax = addIntegerField(effectPane, String.format("AP bonus max%s: ", applyToHint), effect.ap_boost_max, true, writable, listener); } protected void addLists(FieldUpdateListener listener, boolean writable) { - String titleSource = "Actor Conditions applied to the source%s: ".formatted(applyToHint); + String titleSource = String.format("Actor Conditions applied to the source%s: ", applyToHint); TimedConditionsCellRenderer cellRendererSource = new TimedConditionsCellRenderer(); BasicLambdaWithArg selectedSetSource = (value) -> sourceConditionPane.selectedCondition = value; BasicLambdaWithReturn selectedGetSource = () -> sourceConditionPane.selectedCondition; From 090584dbcc942f210fbbe7f0292cc7f992c5cfba Mon Sep 17 00:00:00 2001 From: OMGeeky <> Date: Sun, 13 Jul 2025 02:25:01 +0200 Subject: [PATCH 30/30] add warning about icon --- src/com/gpl/rpg/atcontentstudio/model/gamedata/Common.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Common.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Common.java index 4a967d5..66847da 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Common.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Common.java @@ -1,5 +1,6 @@ package com.gpl.rpg.atcontentstudio.model.gamedata; +import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.Project; @@ -49,6 +50,10 @@ public final class Common { public static void linkIcon(Project proj, String iconId, GameDataElement backlink) { if (iconId != null) { String spritesheetId = iconId.split(":")[0]; + if (proj.getSpritesheet(spritesheetId) == null) { + Notification.addError("Error Spritesheet " + spritesheetId + ". has no backlink. (" + iconId + ")"); + return; + } proj.getSpritesheet(spritesheetId).addBacklink(backlink); } }