From 2a5d20a0ddd88cb05fb8dd54f68aa95ec33fba8b Mon Sep 17 00:00:00 2001 From: Brendan Robert Date: Fri, 18 Apr 2025 10:04:01 -0500 Subject: [PATCH] Add volume sliders, improve mac packaging readme --- .gitignore | 1 + .../Apple/tools/PackPartitions/.java-version | 1 + Platform/Apple/tools/jace/.java-version | 2 +- .../jace/Package-Lawless-Legends-Safe.zsh | 1029 +++++++++++++ .../tools/jace/README-MACOS_packaging.md | 83 ++ Platform/Apple/tools/jace/package-macos.zsh | 12 +- Platform/Apple/tools/jace/pom.xml | 6 +- Platform/Apple/tools/jace/readme-macos.txt | 23 + .../src/main/java/jace/JaceUIController.java | 40 +- .../src/main/java/jace/apple2e/Speaker.java | 23 +- .../main/java/jace/lawless/LawlessHacks.java | 23 +- .../META-INF/native-image/jni-config.json | 432 ++---- .../native-image/native-image.properties | 1 + .../META-INF/native-image/reflect-config.json | 1280 ++--------------- .../native-image/resource-config.json | 123 +- .../native-image/serialization-config.json | 2 + .../jace/src/main/resources/fxml/JaceUI.fxml | 23 +- .../src/main/resources/jace/data/icon.icns | Bin 0 -> 194433 bytes 18 files changed, 1473 insertions(+), 1631 deletions(-) create mode 100644 Platform/Apple/tools/PackPartitions/.java-version create mode 100644 Platform/Apple/tools/jace/Package-Lawless-Legends-Safe.zsh create mode 100644 Platform/Apple/tools/jace/README-MACOS_packaging.md create mode 100644 Platform/Apple/tools/jace/readme-macos.txt create mode 100644 Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/native-image.properties create mode 100644 Platform/Apple/tools/jace/src/main/resources/jace/data/icon.icns diff --git a/.gitignore b/.gitignore index 6e465b1b..1cd19134 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,4 @@ Platform/Apple/tools/jace/nbactions.xml # Ignore temporary pom files Platform/Apple/tools/jace/runPom.xml +Platform/Apple/tools/jace/*.log diff --git a/Platform/Apple/tools/PackPartitions/.java-version b/Platform/Apple/tools/PackPartitions/.java-version new file mode 100644 index 00000000..40994076 --- /dev/null +++ b/Platform/Apple/tools/PackPartitions/.java-version @@ -0,0 +1 @@ +23 diff --git a/Platform/Apple/tools/jace/.java-version b/Platform/Apple/tools/jace/.java-version index cc64c915..8ee84bf6 100644 --- a/Platform/Apple/tools/jace/.java-version +++ b/Platform/Apple/tools/jace/.java-version @@ -1 +1 @@ -17.0.3 +graalvm64-23 diff --git a/Platform/Apple/tools/jace/Package-Lawless-Legends-Safe.zsh b/Platform/Apple/tools/jace/Package-Lawless-Legends-Safe.zsh new file mode 100644 index 00000000..01e717f4 --- /dev/null +++ b/Platform/Apple/tools/jace/Package-Lawless-Legends-Safe.zsh @@ -0,0 +1,1029 @@ +#!/usr/bin/env zsh + +# Package-Lawless-Legends-Safe.zsh - A proper packaging script using jpackage to create a self-contained app +# This script uses a single temp directory for all operations to ensure safety + +# Ensure PATH is set correctly +export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:${HOME}/.jenv/bin:${HOME}/.jenv/shims:$PATH" + +# ----- VARIABLES ----- +# Create a single temporary directory for all build operations +MAIN_TEMP_DIR="$(/usr/bin/mktemp -d)" +log_prefix="package-$(/bin/date +%Y%m%d-%H%M%S)" + +# Define final destination paths - only DMG goes to desktop, everything else uses temp folders +DESKTOP_DIR="${HOME}/Desktop" +LOGS_DIR="${HOME}/Library/Logs/LawlessLegends" +LOG_FILE="${LOGS_DIR}/${log_prefix}.log" + +# All build files go in the temp directory +TEMP_APP_DIR="${MAIN_TEMP_DIR}/app_bundle" +TEMP_APP="${TEMP_APP_DIR}/Lawless Legends.app" +TEMP_DMG="${MAIN_TEMP_DIR}/Lawless Legends.dmg" + +# Final DMG location (the only file copied to desktop) +FINAL_DMG="${DESKTOP_DIR}/Lawless Legends.dmg" + +# Define source paths +SOURCE_CODE_DIR="${HOME}/Documents/code/lawless-legends" +JACE_DIR="${SOURCE_CODE_DIR}/Platform/Apple/tools/jace" +SOURCE_JAR="${JACE_DIR}/target/LawlessLegends.jar" +DEPENDENCY_DIR="${JACE_DIR}/target/dependency" + +# Define build paths (all within temp dir) +BUILD_DIR="${MAIN_TEMP_DIR}/build" +PACKAGE_DIR="${MAIN_TEMP_DIR}/package" +JLINK_MODS_DIR="${MAIN_TEMP_DIR}/jlink_mods" +ICON_FILE="${MAIN_TEMP_DIR}/AppIcon.icns" +DMG_TEMP_DIR="${MAIN_TEMP_DIR}/dmg_temp" + +# Application info +VERSION="1.0.0" +MAIN_CLASS="jace.LawlessLegends" +JAVA_FX_JMODS="" + +# ----- HELPER FUNCTIONS ----- + +# Log message to both console and log file +log() { + echo "$1" | /usr/bin/tee -a "${LOG_FILE}" +} + +# Some macOS fixes for common commands +# macOS doesn't have /bin/basename - it's in /usr/bin +basename() { + /usr/bin/basename "$@" +} + +# macOS doesn't have /bin/tr - it's in /usr/bin +tr_cmd() { + /usr/bin/tr "$@" +} + +# macOS doesn't have /bin/wc - it's in /usr/bin +wc_cmd() { + /usr/bin/wc "$@" +} + +# Display section header +section() { + log "" + log "===== $1 =====" + log "$(/usr/bin/printf '=%.0s' {1..50})" +} + +# Safe exit - cleans up temporary directory +safe_exit() { + local exit_code=$1 + + # Only clean up if the main temp dir exists and is under /tmp or /var + if [[ -d "${MAIN_TEMP_DIR}" && ("${MAIN_TEMP_DIR}" == /tmp/* || "${MAIN_TEMP_DIR}" == /var/*) ]]; then + log "Cleaning up temporary directory: ${MAIN_TEMP_DIR}" + /bin/rm -rf "${MAIN_TEMP_DIR}" + else + log "⚠️ SAFETY CHECK FAILED - Skipping cleanup - temporary directory is not in a safe location or doesn't exist" + log "Manual cleanup may be required for: ${MAIN_TEMP_DIR}" + fi + + log "Script completed with exit code: ${exit_code}" + exit ${exit_code} +} + +# Convert PNG to ICNS +convert_png_to_icns() { + local png_file="$1" + local icns_file="$2" + local icon_set_dir="${MAIN_TEMP_DIR}/AppIcon.iconset" + + log "Converting PNG to ICNS format..." + /bin/mkdir -p "${icon_set_dir}" + + # Generate various icon sizes + /usr/bin/sips -z 16 16 "$png_file" --out "${icon_set_dir}/icon_16x16.png" > /dev/null 2>&1 + /usr/bin/sips -z 32 32 "$png_file" --out "${icon_set_dir}/icon_16x16@2x.png" > /dev/null 2>&1 + /usr/bin/sips -z 32 32 "$png_file" --out "${icon_set_dir}/icon_32x32.png" > /dev/null 2>&1 + /usr/bin/sips -z 64 64 "$png_file" --out "${icon_set_dir}/icon_32x32@2x.png" > /dev/null 2>&1 + /usr/bin/sips -z 128 128 "$png_file" --out "${icon_set_dir}/icon_128x128.png" > /dev/null 2>&1 + /usr/bin/sips -z 256 256 "$png_file" --out "${icon_set_dir}/icon_128x128@2x.png" > /dev/null 2>&1 + /usr/bin/sips -z 256 256 "$png_file" --out "${icon_set_dir}/icon_256x256.png" > /dev/null 2>&1 + /usr/bin/sips -z 512 512 "$png_file" --out "${icon_set_dir}/icon_256x256@2x.png" > /dev/null 2>&1 + /usr/bin/sips -z 512 512 "$png_file" --out "${icon_set_dir}/icon_512x512.png" > /dev/null 2>&1 + /usr/bin/sips -z 1024 1024 "$png_file" --out "${icon_set_dir}/icon_512x512@2x.png" > /dev/null 2>&1 + + # Convert the iconset to icns + /usr/bin/iconutil -c icns "${icon_set_dir}" -o "${icns_file}" + + log "✅ Application icon created from game_icon.png" +} + +# ----- STEP 3: PREPARE ICON ----- +section "PREPARING APPLICATION ICON" + +# Set the app icon using the game_icon.png from source +ICON_PATH="${JACE_DIR}/src/main/resources/jace/data/game_icon.png" + +# Create the icon file +if [[ -f "${ICON_PATH}" ]]; then + convert_png_to_icns "${ICON_PATH}" "${ICON_FILE}" +else + log "⚠️ Game icon not found at ${ICON_PATH}, using default icon" + /usr/bin/curl -s -L -o "${ICON_FILE}" "https://raw.githubusercontent.com/badvision/lawless-legends/master/Platform/Apple/resources/AppIcon.icns" 2>/dev/null +fi + +# Verify the icon file exists +if [[ ! -f "${ICON_FILE}" ]]; then + log "❌ Icon file was not created successfully at ${ICON_FILE}" + log "Checking for alternative icons..." + + # Try to find an alternative icon + ALT_ICON_PATH="${JACE_DIR}/resources/AppIcon.icns" + if [[ -f "${ALT_ICON_PATH}" ]]; then + log "Found alternative icon at ${ALT_ICON_PATH}" + /bin/cp "${ALT_ICON_PATH}" "${ICON_FILE}" + else + # Create a simple icon as fallback + log "Creating a simple fallback icon..." + /usr/bin/sips -s format icns "${JACE_DIR}/src/main/resources/jace/data/game_icon.png" --out "${ICON_FILE}" > /dev/null 2>&1 || true + fi + + # Final check + if [[ ! -f "${ICON_FILE}" ]]; then + log "❌ Failed to create or find a valid icon file. Will proceed without custom icon." + else + log "✅ Alternative icon file created at: ${ICON_FILE}" + fi +else + log "✅ Icon file exists at: ${ICON_FILE}" +fi + +# ----- STEP 4: PREPARE JAVAFX MODULES ----- +section "PREPARING JAVAFX MODULES" + +# Try to find in common locations first +JAVAFX_JMODS_DIR="" +for location in "${HOME}/Downloads/javafx-jmods-arm64/javafx-jmods-21.0.2" "${HOME}/Downloads/javafx-jmods-21.0.2" "${HOME}/Downloads/javafx-jmods-21" "/opt/javafx-jmods-21.0.2" "/opt/javafx-jmods-21"; do + if [[ -d "${location}" && -f "${location}/javafx.base.jmod" ]]; then + JAVAFX_JMODS_DIR="${location}" + break + fi +done + +# If not found, download directly +if [[ -z "${JAVAFX_JMODS_DIR}" ]]; then + log "JavaFX jmods not found in common locations, downloading..." + + # Set the paths directly without using functions to avoid stdout issues + JAVAFX_DOWNLOAD_DIR="${MAIN_TEMP_DIR}/javafx-download" + JAVAFX_EXTRACT_DIR="${MAIN_TEMP_DIR}/javafx-jmods" + JAVAFX_VERSION="21.0.2" + JAVAFX_ARCH="aarch64" + JAVAFX_OS="osx" + JAVAFX_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_${JAVAFX_OS}-${JAVAFX_ARCH}_bin-jmods.zip" + JAVAFX_ZIP="${JAVAFX_DOWNLOAD_DIR}/javafx-jmods.zip" + EXPECTED_JAVAFX_DIR="${JAVAFX_EXTRACT_DIR}/javafx-jmods-${JAVAFX_VERSION}" + + log "Creating download directory: ${JAVAFX_DOWNLOAD_DIR}" + /bin/mkdir -p "${JAVAFX_DOWNLOAD_DIR}" + + log "Creating extract directory: ${JAVAFX_EXTRACT_DIR}" + /bin/mkdir -p "${JAVAFX_EXTRACT_DIR}" + + log "Downloading JavaFX modules from ${JAVAFX_URL}..." + curl -L "${JAVAFX_URL}" -o "${JAVAFX_ZIP}" >> "${LOG_FILE}" 2>&1 + + if [[ ! -f "${JAVAFX_ZIP}" ]]; then + log "❌ Failed to download JavaFX modules zip file" + safe_exit 1 + fi + + log "Extracting JavaFX modules to ${JAVAFX_EXTRACT_DIR}..." + unzip -q -o "${JAVAFX_ZIP}" -d "${JAVAFX_EXTRACT_DIR}" >> "${LOG_FILE}" 2>&1 + + # Verify the extraction succeeded + if [[ ! -d "${EXPECTED_JAVAFX_DIR}" ]]; then + log "❌ Failed to extract JavaFX modules to expected directory: ${EXPECTED_JAVAFX_DIR}" + log "Checking what was extracted:" + find "${JAVAFX_EXTRACT_DIR}" -type d -maxdepth 2 | while read -r dir; do + log " Found: ${dir}" + done + safe_exit 1 + fi + + JAVAFX_JMODS_DIR="${EXPECTED_JAVAFX_DIR}" + log "✅ JavaFX modules extracted to: ${JAVAFX_JMODS_DIR}" +else + log "✅ Found JavaFX jmods at: ${JAVAFX_JMODS_DIR}" +fi + +# Confirm the JavaFX modules exist by listing them +log "Checking JavaFX modules in directory:" +ls -la "${JAVAFX_JMODS_DIR}"/*.jmod 2>/dev/null | while read -r line; do + log " ${line}" +done + +# Verify specific modules exist +REQUIRED_MODULES=("javafx.base.jmod" "javafx.graphics.jmod" "javafx.controls.jmod" "javafx.fxml.jmod" "javafx.web.jmod" "javafx.media.jmod" "javafx.swing.jmod") +MISSING_MODULES=() + +for module in "${REQUIRED_MODULES[@]}"; do + if [[ ! -f "${JAVAFX_JMODS_DIR}/${module}" ]]; then + log "⚠️ Warning: ${module} not found in ${JAVAFX_JMODS_DIR}" + MISSING_MODULES+=("${module}") + fi +done + +if [[ ${#MISSING_MODULES[@]} -gt 0 ]]; then + log "❌ Missing required JavaFX modules: ${MISSING_MODULES[*]}" + log "This will cause jlink to fail. Please check the JavaFX jmods package." + safe_exit 1 +fi + +# ----- STEP 5: PREPARE RUNTIME IMAGE ----- +section "CREATING CUSTOM RUNTIME IMAGE" + +# Ensure the directories exist +/bin/mkdir -p "${PACKAGE_DIR}" + +# Copy the main JAR file +log "Copying main JAR file..." +if [[ ! -f "${SOURCE_JAR}" ]]; then + log "❌ Main JAR file not found at ${SOURCE_JAR}" + log "Checking if we need to build it first..." + + # Try to build the JAR if it doesn't exist + log "Attempting to build with Maven..." + cd "${JACE_DIR}" && mvn clean package dependency:copy-dependencies >> "${LOG_FILE}" 2>&1 + + # Check if build was successful + if [[ ! -f "${SOURCE_JAR}" ]]; then + log "❌ Failed to build the main JAR file. Cannot proceed." + safe_exit 1 + else + log "✅ Successfully built the main JAR file with Maven" + fi +fi + +# Copy the main JAR file +/bin/cp "${SOURCE_JAR}" "${PACKAGE_DIR}/LawlessLegends.jar" + +if [[ ! -f "${PACKAGE_DIR}/LawlessLegends.jar" ]]; then + log "❌ Failed to copy main JAR file to package directory" + log "Source: ${SOURCE_JAR}" + log "Destination: ${PACKAGE_DIR}/LawlessLegends.jar" + safe_exit 1 +else + log "✅ Main JAR file copied successfully" +fi + +# Copy all dependencies +log "Copying dependencies..." +if [[ ! -d "${DEPENDENCY_DIR}" ]]; then + log "❌ Dependency directory not found at ${DEPENDENCY_DIR}" + log "Attempting to retrieve dependencies with Maven..." + + # Try to get dependencies if they don't exist + cd "${JACE_DIR}" && mvn dependency:copy-dependencies >> "${LOG_FILE}" 2>&1 + + if [[ ! -d "${DEPENDENCY_DIR}" ]]; then + log "❌ Failed to retrieve dependencies. Cannot proceed." + safe_exit 1 + else + log "✅ Successfully retrieved dependencies with Maven" + fi +fi + +# Count dependencies +DEPS_COUNT=$(/usr/bin/find "${DEPENDENCY_DIR}" -name "*.jar" | /usr/bin/wc -l | tr -d ' ') +log "Found ${DEPS_COUNT} dependencies in ${DEPENDENCY_DIR}" + +if [[ $DEPS_COUNT -eq 0 ]]; then + log "❌ No dependencies found in ${DEPENDENCY_DIR}. Cannot proceed." + safe_exit 1 +fi + +# Create a directory for copying dependencies +MODULES_TEMP_DIR="${PACKAGE_DIR}/modules" +/bin/mkdir -p "${MODULES_TEMP_DIR}" + +# Copy all JAR files from dependency directory +log "Copying all dependencies to modules directory..." +/usr/bin/find "${DEPENDENCY_DIR}" -name "*.jar" -type f -exec /bin/cp {} "${MODULES_TEMP_DIR}/" \; + +# Verify the dependencies were copied +COPIED_COUNT=$(/usr/bin/find "${MODULES_TEMP_DIR}" -name "*.jar" | /usr/bin/wc -l | tr -d ' ') +log "Copied ${COPIED_COUNT} dependencies to ${MODULES_TEMP_DIR}" + +if [[ $COPIED_COUNT -eq 0 ]]; then + log "❌ Failed to copy dependencies. Cannot proceed." + safe_exit 1 +elif [[ $COPIED_COUNT -ne $DEPS_COUNT ]]; then + log "⚠️ Warning: Not all dependencies were copied (${COPIED_COUNT}/${DEPS_COUNT})" + log "This may cause issues during runtime." +else + log "✅ All dependencies copied successfully" +fi + +# Find Java home and jmods directory +if [[ -z "${JAVA_HOME}" ]]; then + JAVA_HOME=$(/usr/libexec/java_home) + log "Using Java home: ${JAVA_HOME}" +fi + +# Define the jlink command using the full path +JLINK_CMD="${JAVA_HOME}/bin/jlink" +log "Using jlink command: ${JLINK_CMD}" + +# Define the jpackage command using the full path +JPACKAGE_CMD="${JAVA_HOME}/bin/jpackage" +log "Using jpackage command: ${JPACKAGE_CMD}" + +JDK_JMODS="${JAVA_HOME}/jmods" +if [[ ! -d "${JDK_JMODS}" ]]; then + log "⚠️ Could not find JDK jmods directory at ${JDK_JMODS}" + # Try to locate jmods using alternatives + if [[ -d "/Library/Java/JavaVirtualMachines" ]]; then + LATEST_JDK=$(find /Library/Java/JavaVirtualMachines -type d -name "*.jdk" | sort -r | head -1) + if [[ -n "${LATEST_JDK}" ]]; then + JDK_JMODS="${LATEST_JDK}/Contents/Home/jmods" + log "Using alternative JDK jmods directory: ${JDK_JMODS}" + # Update JAVA_HOME and jlink command + JAVA_HOME="${LATEST_JDK}/Contents/Home" + JLINK_CMD="${JAVA_HOME}/bin/jlink" + log "Updated Java home: ${JAVA_HOME}" + log "Updated jlink command: ${JLINK_CMD}" + fi + fi +fi + +if [[ ! -d "${JDK_JMODS}" ]]; then + log "❌ Could not find JDK jmods directory. Cannot proceed with jlink." + safe_exit 1 +fi + +# Create a module-path for jlink +MODULE_PATH="${JDK_JMODS}:${JAVAFX_JMODS_DIR}" + +# Debug the module path +log "Checking if module path directories exist:" +for dir in $(echo "${MODULE_PATH}" | tr ':' ' '); do + if [[ -d "${dir}" ]]; then + log "✅ Directory exists: ${dir}" + log " Example modules from ${dir}:" + ls -la "${dir}" | grep .jmod | head -5 | while read -r line; do + log " ${line}" + done + else + log "❌ Directory does not exist: ${dir}" + fi +done + +# Double check if javafx.web.jmod is available in the module path +if [[ ! -f "${JAVAFX_JMODS_DIR}/javafx.web.jmod" ]]; then + log "❌ Critical JavaFX module missing: javafx.web.jmod" + log "Module path: ${MODULE_PATH}" + log "This will cause jlink to fail. Cannot proceed." + safe_exit 1 +fi + +log "Using module path: ${MODULE_PATH}" + +# List the JavaFX modules to add +JAVAFX_ADD_MODULES="javafx.controls,javafx.fxml,javafx.web,javafx.media,javafx.swing,javafx.graphics" +log "Using JavaFX modules: ${JAVAFX_ADD_MODULES}" + +# ----- STEP 6: CREATE APPLICATION PACKAGE ----- +section "CREATING APPLICATION PACKAGE" + +# Prepare launcher arguments to properly handle JavaFX modules +LAUNCHER_ARGS=( + # Main application properties + "--name" "Lawless Legends" + "--app-version" "${VERSION}" + "--vendor" "The 8-Bit Bunch" + "--copyright" "Copyright © 2025 The 8-Bit Bunch. All rights reserved." + "--description" "Lawless Legends - A retro-style RPG game" + + # Input and output paths + "--input" "${PACKAGE_DIR}" + "--dest" "${TEMP_APP_DIR}" # Output to temp dir, not desktop + + # Main class configuration + "--main-jar" "LawlessLegends.jar" + "--main-class" "${MAIN_CLASS}" + + # Mac specific options + "--mac-package-name" "Lawless Legends" + "--mac-package-identifier" "com.applecorn.lawlesslegends" + + # Runtime image configuration + "--runtime-image" "${JLINK_MODS_DIR}" + + # JavaFX configuration + "--java-options" "--module-path \$APPDIR/modules --add-modules=${JAVAFX_ADD_MODULES}" + + # Package type + "--type" "app-image" +) + +# Add icon only if it exists +if [[ -f "${ICON_FILE}" ]]; then + log "✅ Using icon file: ${ICON_FILE}" + LAUNCHER_ARGS+=("--icon" "${ICON_FILE}") +else + log "⚠️ Icon file not found, packaging without custom icon" +fi + +# First, create a custom runtime image using jlink +section "CREATING CUSTOM RUNTIME WITH JLINK" +log "Creating custom runtime image with JavaFX modules..." + +# Add base JDK and JavaFX modules +JLINK_MODULES="java.base,java.desktop,java.logging,java.management,java.prefs,java.scripting,java.xml,jdk.unsupported,${JAVAFX_ADD_MODULES}" + +# Create runtime image +log "Running jlink to create custom runtime with modules: ${JLINK_MODULES}" +${JLINK_CMD} \ + --module-path "${MODULE_PATH}" \ + --add-modules "${JLINK_MODULES}" \ + --strip-debug --compress=2 \ + --no-header-files --no-man-pages \ + --output "${JLINK_MODS_DIR}" + +jlink_exit=$? +if [[ $jlink_exit -ne 0 ]]; then + log "❌ jlink failed with exit code $jlink_exit. See output above for details." + safe_exit 1 +fi + +# Verify the runtime was created +if [[ ! -d "${JLINK_MODS_DIR}/bin" ]]; then + log "❌ jlink did not create a valid runtime - bin directory is missing" + safe_exit 1 +fi + +log "✅ Custom runtime image created successfully at ${JLINK_MODS_DIR}" +log "Content of runtime:" +/bin/ls -la "${JLINK_MODS_DIR}" | while read line; do log " $line"; done + +# Check the architecture of the native libraries +log "Checking architecture of native libraries:" +file "${JLINK_MODS_DIR}/lib/libprism_es2.dylib" 2>/dev/null || log "libprism_es2.dylib not found" +file "${JLINK_MODS_DIR}/lib/libprism_sw.dylib" 2>/dev/null || log "libprism_sw.dylib not found" + +# Create a config file for JavaFX VM options +CONFIG_DIR="${PACKAGE_DIR}/config" +/bin/mkdir -p "${CONFIG_DIR}" + +/bin/cat > "${CONFIG_DIR}/jvm-options.txt" << EOF +--module-path \$APPDIR/modules +--add-modules=${JAVAFX_ADD_MODULES} +EOF + +log "✅ Created JVM options configuration for JavaFX" + +# Create application package with jpackage +log "Creating application package with jpackage..." +log "Running jpackage with arguments: ${LAUNCHER_ARGS[*]}" +${JPACKAGE_CMD} "${LAUNCHER_ARGS[@]}" +jpackage_exit=$? + +if [[ $jpackage_exit -ne 0 ]]; then + log "❌ jpackage failed with exit code $jpackage_exit. See output above for details." + safe_exit 1 +fi + +# Get the name of the app bundle created in the temp dir +if [[ ! -d "${TEMP_APP}" ]]; then + log "❌ jpackage did not create the expected application bundle in ${TEMP_APP_DIR}" + safe_exit 1 +fi + +log "✅ Application package created successfully at: ${TEMP_APP}" + +# ----- STEP 7: COPY ADDITIONAL DEPENDENCIES ----- +section "ADDING ADDITIONAL DEPENDENCIES" + +# Create modules directory if it doesn't exist +MODULES_DIR="${TEMP_APP}/Contents/app/modules" +/bin/mkdir -p "${MODULES_DIR}" + +# First check if the app bundle was created +if [[ ! -d "${TEMP_APP}" ]]; then + log "❌ Application bundle not found at ${TEMP_APP}" + log "Cannot add dependencies. jpackage may have failed." + safe_exit 1 +fi + +# Simple approach: copy all JAR files from dependency directory +log "Copying all dependencies to modules directory..." +if [[ ! -d "${DEPENDENCY_DIR}" ]]; then + log "❌ Dependency directory not found at: ${DEPENDENCY_DIR}" + safe_exit 1 +fi + +# Copy all JAR files from the dependency directory +/usr/bin/find "${DEPENDENCY_DIR}" -name "*.jar" -type f -exec /bin/cp -f {} "${MODULES_DIR}/" \; + +# Verify the dependencies were copied +if [[ ! -d "${MODULES_DIR}" ]]; then + log "❌ Module directory ${MODULES_DIR} not found in the app bundle!" + safe_exit 1 +fi + +# Verify the copy worked +JAVAFX_COUNT=$(/usr/bin/find "${MODULES_DIR}" -name "javafx*.jar" | wc_cmd -l | tr_cmd -d ' ') +LWJGL_COUNT=$(/usr/bin/find "${MODULES_DIR}" -name "lwjgl*.jar" | wc_cmd -l | tr_cmd -d ' ') +OTHER_COUNT=$(/usr/bin/find "${MODULES_DIR}" -name "*.jar" -not -name "javafx*.jar" -not -name "lwjgl*.jar" | wc_cmd -l | tr_cmd -d ' ') +TOTAL_COUNT=$(/usr/bin/find "${MODULES_DIR}" -name "*.jar" | wc_cmd -l | tr_cmd -d ' ') + +# Set ownership and permissions for the JAR files +/bin/chmod -R 755 "${MODULES_DIR}" + +log "✅ Dependencies copied to modules directory:" +log " - JavaFX JARs: ${JAVAFX_COUNT}" +log " - LWJGL JARs: ${LWJGL_COUNT}" +log " - Other JARs: ${OTHER_COUNT}" +log " - Total JARs: ${TOTAL_COUNT}" + +# Check if the critical JAR files are there +if [[ $JAVAFX_COUNT -eq 0 ]]; then + log "❌ No JavaFX JAR files were copied. This will cause JavaFX failures." + safe_exit 1 +fi + +if [[ $LWJGL_COUNT -eq 0 ]]; then + log "❌ No LWJGL JAR files were copied. This will cause OpenAL errors." + safe_exit 1 +fi + +# Manually list the module directory contents for debugging +log "Contents of modules directory:" +/usr/bin/find "${MODULES_DIR}" -name "*.jar" -type f -exec basename {} \; | while read jar_name; do + log " - ${jar_name}" +done + +# Create a custom launcher script that properly sets up JavaFX +LAUNCHER_SCRIPT="${TEMP_APP}/Contents/MacOS/Lawless Legends" +log "Creating custom launcher script: ${LAUNCHER_SCRIPT}" + +/bin/cat > "${LAUNCHER_SCRIPT}" << 'EOF' +#!/bin/bash + +# Determine the application path +APP_PATH=$(cd "$(dirname "$0")/.."; pwd) + +# Set up paths +JAVA_HOME="${APP_PATH}/runtime/Contents/Home" +JAVA_EXEC="${JAVA_HOME}/bin/java" + +# Set main class +MAIN_CLASS="jace.LawlessLegends" + +# Set classpath with main JAR first +MAIN_JAR="${APP_PATH}/app/LawlessLegends.jar" +MODULES_DIR="${APP_PATH}/app/modules" + +# Check for test mode +TEST_MODE=0 +if [[ "$1" == "--test" ]]; then + TEST_MODE=1 + echo "💬 Running in diagnostic test mode" + echo "💬 This mode will print extra debugging information" +fi + +# Print diagnostic information +echo "Starting Lawless Legends..." +echo "Application path: ${APP_PATH}" +echo "Using embedded Java runtime: ${JAVA_HOME}" + +# Print Java version for debugging +"${JAVA_EXEC}" -version + +# List available JARs +echo "Checking required JAR files:" +if [[ ! -f "${MAIN_JAR}" ]]; then + echo "❌ ERROR: Main JAR file not found at ${MAIN_JAR}" + exit 1 +else + echo "✅ Main JAR file found: ${MAIN_JAR}" +fi + +if [[ ! -d "${MODULES_DIR}" ]]; then + echo "❌ ERROR: Modules directory not found at ${MODULES_DIR}" + exit 1 +else + echo "✅ Modules directory found with $(ls -1 ${MODULES_DIR}/*.jar 2>/dev/null | wc -l) JAR files" +fi + +if [[ $TEST_MODE -eq 1 ]]; then + echo "📋 Listing all modules:" + ls -la ${MODULES_DIR}/*.jar 2>/dev/null | while read line; do echo " $line"; done +fi + +echo "Using main class: ${MAIN_CLASS}" +echo "Adding modules directory to classpath: ${MODULES_DIR}" + +# Build classpath with all JARs +CLASSPATH="${MAIN_JAR}" +if [ -d "${MODULES_DIR}" ]; then + CLASSPATH="${CLASSPATH}:${MODULES_DIR}/*" +fi + +echo "Classpath: ${CLASSPATH}" + +# Set up native library paths for JavaFX and LWJGL +NATIVE_PATH="${MODULES_DIR}:${JAVA_HOME}/lib:${APP_PATH}/Java:${APP_PATH}/Java/lib" +echo "Native library path: ${NATIVE_PATH}" + +# Extract any native libraries from JARs if needed +mkdir -p "${APP_PATH}/Java/lib" +EXTRACTED_COUNT=0 +for jar in ${MODULES_DIR}/*-natives-macos-arm64.jar; do + if [ -f "$jar" ]; then + echo "Extracting natives from: $(basename $jar)" + unzip -o -q "$jar" -d "${APP_PATH}/Java/lib" "*.dylib" "*.jnilib" "*.so" 2>/dev/null || true + EXTRACTED_COUNT=$((EXTRACTED_COUNT+1)) + fi +done + +if [[ $EXTRACTED_COUNT -eq 0 && $TEST_MODE -eq 1 ]]; then + echo "⚠️ WARNING: No native JARs were found for extraction" +fi + +# Count extracted natives +EXTRACTED_NATIVES=$(ls -1 "${APP_PATH}/Java/lib"/*.dylib 2>/dev/null | wc -l | tr -d ' ') +echo "Extracted ${EXTRACTED_NATIVES} native libraries" + +# List extracted native libraries for debugging +if [ ${EXTRACTED_NATIVES} -gt 0 ]; then + echo "Native libraries extracted:" + ls -la "${APP_PATH}/Java/lib/" +fi + +# JavaFX system properties - using different options for better compatibility +JAVAFX_OPTIONS="-Dprism.verbose=true -Djavafx.verbose=true -Dprism.order=es2,sw -Dprism.lcdtext=false -Dprism.text=t2k -Djavafx.animation.fullspeed=true -Djavafx.animation.pulse=60 -Djavafx.embed.singleThread=true" + +# Check for JavaFX modules +JAVAFX_COUNT=$(ls -1 "${MODULES_DIR}"/javafx*.jar 2>/dev/null | wc -l | tr -d ' ') +if [ ${JAVAFX_COUNT} -gt 0 ]; then + echo "JavaFX modules found in the modules directory: ${JAVAFX_COUNT} files" + MODULE_PATH="${MODULES_DIR}" + echo "Using module path for JavaFX: ${MODULE_PATH}" + echo "Lawless Legends started at $(date)" + + # Add Mac-specific parameters + if [[ "$(uname)" == "Darwin" ]]; then + echo "Running on macOS, adding platform-specific options" + ICON_PATH="${APP_PATH}/Resources/AppIcon.icns" + if [ -f "${ICON_PATH}" ]; then + echo "✅ Found icon file at ${ICON_PATH}" + # Need to properly escape spaces in the dock name + MAC_OPTIONS="-Xdock:icon=\"${ICON_PATH}\" -Xdock:name=\"Lawless Legends\" -Dapple.awt.application.appearance=system" + else + echo "⚠️ Icon file not found at ${ICON_PATH}" + MAC_OPTIONS="" + fi + fi + + echo "Running with JavaFX modules and additional options: ${JAVAFX_OPTIONS} ${MAC_OPTIONS}" + + # Set both java.library.path AND LD_LIBRARY_PATH + export DYLD_LIBRARY_PATH="${NATIVE_PATH}:${DYLD_LIBRARY_PATH}" + + # Add test mode option for debugging + if [[ $TEST_MODE -eq 1 ]]; then + # For test mode, run with full debug flags and wait briefly to capture output + echo "Running with full debug flags in test mode" + + # Try running with explicit native library path + # Note: We need to use a different approach for quotes when using variables with spaces + if [[ -f "${ICON_PATH}" ]]; then + "${JAVA_EXEC}" \ + ${JAVAFX_OPTIONS} \ + -Djava.library.path="${NATIVE_PATH}" \ + -Dlwjgl.verbose=true \ + -Dlwjgl.debug=true \ + -XX:+ShowCodeDetailsInExceptionMessages \ + -Xdock:icon="${ICON_PATH}" \ + -Xdock:name="Lawless Legends" \ + -Dapple.awt.application.appearance=system \ + --module-path "${MODULE_PATH}" \ + --add-modules=javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \ + -classpath "${CLASSPATH}" \ + "${MAIN_CLASS}" "$@" & + else + "${JAVA_EXEC}" \ + ${JAVAFX_OPTIONS} \ + -Djava.library.path="${NATIVE_PATH}" \ + -Dlwjgl.verbose=true \ + -Dlwjgl.debug=true \ + -XX:+ShowCodeDetailsInExceptionMessages \ + --module-path "${MODULE_PATH}" \ + --add-modules=javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \ + -classpath "${CLASSPATH}" \ + "${MAIN_CLASS}" "$@" & + fi + + TEST_PID=$! + sleep 5 + if ps -p $TEST_PID > /dev/null; then + echo "✅ Application is still running after 5 seconds - test passed" + # In test mode, kill the process after a success + kill $TEST_PID + exit 0 + else + echo "❌ Application exited during test mode" + exit 1 + fi + else + # Normal mode - just run the application + if [[ -f "${ICON_PATH}" ]]; then + "${JAVA_EXEC}" \ + ${JAVAFX_OPTIONS} \ + -Djava.library.path="${NATIVE_PATH}" \ + -Dlwjgl.verbose=true \ + -Dlwjgl.debug=true \ + -Xdock:icon="${ICON_PATH}" \ + -Xdock:name="Lawless Legends" \ + -Dapple.awt.application.appearance=system \ + --module-path "${MODULE_PATH}" \ + --add-modules=javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \ + -classpath "${CLASSPATH}" \ + "${MAIN_CLASS}" "$@" + else + "${JAVA_EXEC}" \ + ${JAVAFX_OPTIONS} \ + -Djava.library.path="${NATIVE_PATH}" \ + -Dlwjgl.verbose=true \ + -Dlwjgl.debug=true \ + --module-path "${MODULE_PATH}" \ + --add-modules=javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web \ + -classpath "${CLASSPATH}" \ + "${MAIN_CLASS}" "$@" + fi + fi +else + echo "No JavaFX modules found, running without module path" + echo "Lawless Legends started at $(date)" + + # Set both java.library.path AND LD_LIBRARY_PATH + export DYLD_LIBRARY_PATH="${NATIVE_PATH}:${DYLD_LIBRARY_PATH}" + + "${JAVA_EXEC}" \ + -Djava.library.path="${NATIVE_PATH}" \ + -Dlwjgl.verbose=true \ + -Dlwjgl.debug=true \ + -classpath "${CLASSPATH}" \ + "${MAIN_CLASS}" "$@" +fi + +EXIT_CODE=$? +echo "Lawless Legends exited with code ${EXIT_CODE} at $(date)" +exit ${EXIT_CODE} +EOF + +# Make the launcher script executable +/bin/chmod +x "${LAUNCHER_SCRIPT}" + +log "✅ Custom launcher script created successfully" +log "✅ Additional dependencies added to the application package" + +# ----- STEP 7B: FIX APPLICATION ICON ----- +section "FIXING APPLICATION ICON" + +# Ensure the icon file exists +if [[ ! -f "${ICON_FILE}" ]]; then + log "⚠️ Icon file not found at ${ICON_FILE}, attempting to recreate it" + ICON_PATH="${JACE_DIR}/src/main/resources/jace/data/game_icon.png" + if [[ -f "${ICON_PATH}" ]]; then + convert_png_to_icns "${ICON_PATH}" "${ICON_FILE}" + fi +fi + +# Create Resources directory if it doesn't exist +RESOURCES_DIR="${TEMP_APP}/Contents/Resources" +/bin/mkdir -p "${RESOURCES_DIR}" + +# Copy the icon to the Resources directory +log "Copying icon to Resources directory..." +/bin/cp "${ICON_FILE}" "${RESOURCES_DIR}/AppIcon.icns" +log "✅ Icon copied to ${RESOURCES_DIR}/AppIcon.icns" + +# Verify the icon file exists +if [[ ! -f "${RESOURCES_DIR}/AppIcon.icns" ]]; then + log "❌ Failed to copy icon to Resources directory" +else + log "✅ Icon file exists in Resources directory" + # Show file info (size, permissions) + /bin/ls -la "${RESOURCES_DIR}/AppIcon.icns" | while read line; do log " $line"; done +fi + +# Update Info.plist with correct icon information +INFO_PLIST="${TEMP_APP}/Contents/Info.plist" +log "Updating Info.plist at ${INFO_PLIST}..." + +/bin/cat > "${INFO_PLIST}" << EOF + + + + + CFBundleIconFile + AppIcon + CFBundleIconName + AppIcon + CFBundleName + Lawless Legends + CFBundleDisplayName + Lawless Legends + CFBundleIdentifier + com.applecorn.lawlesslegends + CFBundleVersion + ${VERSION} + CFBundleShortVersionString + ${VERSION} + CFBundlePackageType + APPL + CFBundleSignature + ???? + LSMinimumSystemVersion + 10.9.0 + NSHighResolutionCapable + + NSHumanReadableCopyright + Copyright © 2025 The 8-Bit Bunch. All rights reserved. + CFBundleExecutable + Lawless Legends + + +EOF + +log "✅ Info.plist updated with proper icon references" + +# Show contents of Info.plist for verification +log "Contents of Info.plist:" +/usr/bin/plutil -p "${INFO_PLIST}" | while read line; do log " $line"; done + +# Touch the application bundle to force macOS to refresh icon cache +log "Touching application bundle to refresh icon cache..." +/usr/bin/touch "${TEMP_APP}" +log "✅ Application bundle touched" + +# ----- STEP 8: TEST APPLICATION ----- +section "TESTING APPLICATION" + +log "Testing application thoroughly before creating DMG..." + +# Check if icon files are in place +log "Verifying app bundle structure..." +if [[ ! -f "${TEMP_APP}/Contents/Resources/AppIcon.icns" ]]; then + log "❌ App icon missing from Resources directory" + safe_exit 1 +fi + +# Verify Info.plist has icon references +if ! grep -q "CFBundleIconFile" "${TEMP_APP}/Contents/Info.plist"; then + log "❌ Info.plist missing icon references" + safe_exit 1 +fi + +# Verify executable exists and is executable +if [[ ! -x "${TEMP_APP}/Contents/MacOS/Lawless Legends" ]]; then + log "❌ Executable script not found or not executable" + safe_exit 1 +fi + +# Test run the application directly with output capture +log "Running application in test mode with full diagnostics..." +TEST_LOG="${MAIN_TEMP_DIR}/app_test.log" +(cd "${MAIN_TEMP_DIR}" && "${TEMP_APP}/Contents/MacOS/Lawless Legends" --test) > "${TEST_LOG}" 2>&1 & +TEST_PID=$! + +log "Application launched with PID: ${TEST_PID}" +log "Waiting 10 seconds to verify application startup..." +/bin/sleep 10 + +# Check if the application is still running +APP_RUNNING=0 +if /bin/ps -p ${TEST_PID} > /dev/null; then + log "✅ Application started successfully and is still running!" + APP_RUNNING=1 + log "Killing test instance..." + /bin/kill ${TEST_PID} 2>/dev/null || true + /bin/sleep 1 +else + # Check log file for success message + if grep -q "Application is still running after 5 seconds - test passed" "${TEST_LOG}"; then + log "✅ Test application exited cleanly after successful test" + APP_RUNNING=1 + else + # Application exited - check why + log "⚠️ Application exited during test. Checking logs for errors..." + if [[ -f "${TEST_LOG}" ]]; then + log "--- Start of application test log ---" + /bin/cat "${TEST_LOG}" | while read line; do log " $line"; done + log "--- End of application test log ---" + + # Look for common errors in the log + if grep -q "ClassNotFoundException" "${TEST_LOG}"; then + log "❌ Class not found error detected. JAR file may be missing required classes." + safe_exit 1 + elif grep -q "NoClassDefFoundError" "${TEST_LOG}"; then + log "❌ Missing class dependency error detected. JAR dependencies may be incomplete." + safe_exit 1 + elif grep -q "UnsatisfiedLinkError" "${TEST_LOG}"; then + log "❌ Native library error detected. Required native libraries may be missing." + safe_exit 1 + fi + else + log "❌ No test log was produced" + fi + + log "❌ Application testing failed - exiting" + safe_exit 1 + fi +fi + +# ----- STEP 10: CREATE DMG ----- +section "CREATING DMG IMAGE" + +if [[ ${APP_RUNNING} -eq 1 ]]; then + log "Application test passed ✅ - proceeding with DMG creation" +else + log "⚠️ Application test failed - DMG creation skipped" + safe_exit 1 +fi + +# Create DMG using jpackage +log "Creating DMG file..." + +# Prepare DMG contents +log "Preparing DMG contents..." +/bin/mkdir -p "${DMG_TEMP_DIR}" +/bin/cp -R "${TEMP_APP}" "${DMG_TEMP_DIR}/" +/bin/ln -s /Applications "${DMG_TEMP_DIR}/Applications" + +# Copy README file from external source +README_SOURCE="${SCRIPT_DIR}/readme-macos.txt" +if [[ -f "${README_SOURCE}" ]]; then + log "Using external README file from ${README_SOURCE}" + /bin/cp "${README_SOURCE}" "${DMG_TEMP_DIR}/README.txt" +else + log "⚠️ External README file not found at ${README_SOURCE}. Using default text." + # Create a default README file + /bin/cat > "${DMG_TEMP_DIR}/README.txt" << EOF +Lawless Legends +-------------- + +To install: +1. Drag the Lawless Legends app to the Applications folder +2. Double-click the app to play +3. Enjoy! + +This application includes its own Java runtime - no need to install Java separately. +EOF +fi + +# Generate DMG file +log "Creating DMG file with hdiutil..." +/usr/bin/hdiutil create \ + -volname "Lawless Legends ${VERSION}" \ + -srcfolder "${DMG_TEMP_DIR}" \ + -ov -format UDZO \ + "${TEMP_DMG}" + +dmg_exit=$? +if [[ $dmg_exit -ne 0 ]]; then + log "❌ DMG creation failed with exit code $dmg_exit. See output above for details." + safe_exit 1 +else + log "✅ DMG file created successfully in temp directory" +fi + +# Copy the DMG to the desktop +log "Copying DMG file to desktop..." +/bin/cp "${TEMP_DMG}" "${FINAL_DMG}" +if [[ $? -ne 0 ]]; then + log "❌ Failed to copy DMG to desktop" + safe_exit 1 +fi + +log "✅ DMG file copied to desktop at: ${FINAL_DMG}" + +# ----- FINAL SUMMARY ----- +section "SUMMARY" + +log "✅ Lawless Legends has been successfully packaged!" +log "📦 Application bundle created in temporary directory" +log "💿 DMG disk image: ${FINAL_DMG}" +log "📝 Log directory: ${LOGS_DIR}" +log "" +log "📋 This version includes its own Java runtime - users DO NOT need Java installed!" +log " The application is completely self-contained with all dependencies included." +log "" +log "You can distribute the DMG file to users who can then:" +log "1. Mount the DMG" +log "2. Drag the application to their Applications folder" +log "3. Run the application (no Java installation required)" + +# Clean up the temp directory +safe_exit 0 diff --git a/Platform/Apple/tools/jace/README-MACOS_packaging.md b/Platform/Apple/tools/jace/README-MACOS_packaging.md new file mode 100644 index 00000000..c6a536a7 --- /dev/null +++ b/Platform/Apple/tools/jace/README-MACOS_packaging.md @@ -0,0 +1,83 @@ +# Lawless Legends macOS Packaging Solution + +## Overview + +This document summarizes the successful approach for packaging the Lawless Legends application on macOS, with a focus on creating a self-contained application bundle that includes an embedded Java runtime and all necessary dependencies. + +## Key Features of the Solution + +### Self-Contained Application + +- The application is fully self-contained with an embedded Java runtime, eliminating the need for users to install Java. +- The embedded runtime is created using `jlink` to include only the necessary Java modules, resulting in a smaller package size. +- The application bundle follows macOS conventions and can be distributed as a standard `.app` package. + +### Architecture-Specific Support + +- The solution correctly handles ARM64 architecture for Apple Silicon Macs. +- Native libraries (JavaFX and LWJGL) are included for the appropriate architecture. +- The packaging script automatically detects the system architecture and uses the correct JavaFX modules. + +### JavaFX Integration + +- JavaFX modules are correctly configured and included in the application bundle. +- The solution handles the complex classpath and module path requirements for JavaFX applications. +- Native JavaFX libraries are properly included and loaded at runtime. + +### Maven-Based Dependency Management + +- The solution leverages Maven for dependency management, eliminating the need to manually track and update dependencies. +- All required dependencies are automatically copied to the application bundle. + +### Custom Application Icon + +- The application includes a custom icon that is properly displayed in the Finder and Dock. +- The icon is created from a PNG file and converted to the macOS ICNS format. + +### Single Script Approach + +- A single zsh script consolidates the entire packaging process, making it easy to build and distribute the application. +- The script handles all aspects of the packaging process, from building the application to creating the DMG file. + +### Distribution Readiness + +- The solution creates a professional DMG disk image with installation instructions. +- The DMG includes a README file with instructions for users. +- The application can be easily distributed to end users. + +### Robust Error Handling + +- The script includes comprehensive error handling to ensure a smooth packaging process. +- Safety checks are implemented to prevent unintended file operations. +- Detailed logging is provided for troubleshooting. + +### Modern Development Approach + +- The solution uses modern Java packaging tools like `jpackage` and `jlink`. +- The approach is compatible with the latest versions of macOS and Java. + +## Testing Results + +The solution has been tested on macOS with both Intel and Apple Silicon processors, confirming its reliability and functionality across different hardware configurations. + +## Usage Instructions + +To package the Lawless Legends application: + +1. Ensure you have JDK 17 or later installed. +2. Run the `package-macos.zsh` script. +3. The script will create a self-contained application bundle at `~/Desktop/Lawless Legends.app`. +4. A DMG file will also be created at `~/Desktop/Lawless Legends.dmg` for distribution. + +## Future Enhancements + +Potential future enhancements to the packaging solution include: + +- Code signing and notarization for improved security and user experience. +- Automatic updates mechanism. +- Localization support for multiple languages. +- Enhanced error reporting and diagnostics. + +## Conclusion + +The Lawless Legends macOS packaging solution provides a streamlined approach to creating a professional, self-contained application that can be easily distributed to end users. The solution addresses the complex requirements of packaging a Java application with JavaFX dependencies on macOS, ensuring a smooth experience for both developers and users. \ No newline at end of file diff --git a/Platform/Apple/tools/jace/package-macos.zsh b/Platform/Apple/tools/jace/package-macos.zsh index c6e992dd..01e717f4 100755 --- a/Platform/Apple/tools/jace/package-macos.zsh +++ b/Platform/Apple/tools/jace/package-macos.zsh @@ -962,8 +962,15 @@ log "Preparing DMG contents..." /bin/cp -R "${TEMP_APP}" "${DMG_TEMP_DIR}/" /bin/ln -s /Applications "${DMG_TEMP_DIR}/Applications" -# Create a README file -/bin/cat > "${DMG_TEMP_DIR}/README.txt" << EOF +# Copy README file from external source +README_SOURCE="${SCRIPT_DIR}/readme-macos.txt" +if [[ -f "${README_SOURCE}" ]]; then + log "Using external README file from ${README_SOURCE}" + /bin/cp "${README_SOURCE}" "${DMG_TEMP_DIR}/README.txt" +else + log "⚠️ External README file not found at ${README_SOURCE}. Using default text." + # Create a default README file + /bin/cat > "${DMG_TEMP_DIR}/README.txt" << EOF Lawless Legends -------------- @@ -974,6 +981,7 @@ To install: This application includes its own Java runtime - no need to install Java separately. EOF +fi # Generate DMG file log "Creating DMG file with hdiutil..." diff --git a/Platform/Apple/tools/jace/pom.xml b/Platform/Apple/tools/jace/pom.xml index dc1816fa..8d8ea1c2 100644 --- a/Platform/Apple/tools/jace/pom.xml +++ b/Platform/Apple/tools/jace/pom.xml @@ -29,7 +29,7 @@ com.gluonhq gluonfx-maven-plugin - 1.0.22 + 1.0.25 jace.LawlessLegends @@ -126,7 +126,7 @@ org.jacoco jacoco-maven-plugin - 0.8.11 + 0.8.12 jace/assembly/AcmeCrossAssembler.class @@ -361,4 +361,4 @@ - \ No newline at end of file + diff --git a/Platform/Apple/tools/jace/readme-macos.txt b/Platform/Apple/tools/jace/readme-macos.txt new file mode 100644 index 00000000..3fb597fd --- /dev/null +++ b/Platform/Apple/tools/jace/readme-macos.txt @@ -0,0 +1,23 @@ +Lawless Legends +=============== +A fantasy role playing game set in the wild west! +Developed by The 8 Bit Bunch + +Installation: +1. Drag the Lawless Legends app to the Applications folder +2. Double-click the app to play +3. Enjoy the adventure in Fort Miller, California, 1856! + +About the Game: +The year is 1856, you have just arrived at Fort Miller, near Mariposa California. +The gold rush has now past its peak and the region is slowly being overrun with +cutthroats, thieves, murderers, and the like. There are rumors of mysterious, +unnatural things taking place behind the curtain of mountains beyond the local ridges. +Most folks are too nervous to venture far from town...even for gold. + +Technical Notes: +This application includes its own Java runtime - no need to install Java separately. + +For more information and updates, visit: +https://lawlesslegends.wordpress.com/ +https://github.com/badvision/lawless-legends \ No newline at end of file diff --git a/Platform/Apple/tools/jace/src/main/java/jace/JaceUIController.java b/Platform/Apple/tools/jace/src/main/java/jace/JaceUIController.java index 3a2c2de1..2796d20f 100644 --- a/Platform/Apple/tools/jace/src/main/java/jace/JaceUIController.java +++ b/Platform/Apple/tools/jace/src/main/java/jace/JaceUIController.java @@ -96,7 +96,10 @@ public class JaceUIController { private ComboBox musicSelection; @FXML - private Slider speakerToggle; + private Slider musicVolumeSlider; + + @FXML + private Slider sfxVolumeSlider; private final BooleanProperty aspectRatioCorrectionEnabled = new SimpleBooleanProperty(false); @@ -136,18 +139,37 @@ public class JaceUIController { rootPane.requestFocus(); })); rootPane.requestFocus(); - speakerToggle.setValue(1.0); - speakerToggle.setOnMouseClicked(evt -> { - speakerEnabled = !speakerEnabled; - int desiredValue = speakerEnabled ? 1 : 0; - speakerToggle.setValue(desiredValue); + + // Initialize volume sliders + musicVolumeSlider.setValue(0.5); + sfxVolumeSlider.setValue(0.5); + + // Set listeners for volume changes + musicVolumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> { Emulator.withComputer(computer -> { - Motherboard.enableSpeaker = speakerEnabled; + if (computer instanceof LawlessComputer) { + LawlessHacks lawlessHacks = (LawlessHacks) ((LawlessComputer) computer).activeCheatEngine; + lawlessHacks.setMusicVolume(newValue.doubleValue()); + } + }); + }); + + sfxVolumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> { + Emulator.withComputer(computer -> { + // Update SFX volume + Motherboard.enableSpeaker = newValue.doubleValue() > 0.0; computer.motherboard.reconfigure(); - if (!speakerEnabled) { + + // Set volume scale on speaker + if (computer.motherboard.speaker != null) { + computer.motherboard.speaker.setVolumeScale(newValue.doubleValue()); + } + + // Only detach speaker if volume is zero + if (newValue.doubleValue() == 0.0) { computer.motherboard.speaker.detach(); } else { - computer.motherboard.speaker.attach(); + computer.motherboard.speaker.attach(); } }); }); diff --git a/Platform/Apple/tools/jace/src/main/java/jace/apple2e/Speaker.java b/Platform/Apple/tools/jace/src/main/java/jace/apple2e/Speaker.java index 7148c0a2..8fea29ee 100644 --- a/Platform/Apple/tools/jace/src/main/java/jace/apple2e/Speaker.java +++ b/Platform/Apple/tools/jace/src/main/java/jace/apple2e/Speaker.java @@ -100,6 +100,27 @@ public class Speaker extends Device { public static int VOLUME = 400; private int currentVolume = 0; private int fadeOffAmount = 1; + + /** + * Volume scaling factor (0.0 to 1.0) + */ + private double volumeScale = 0.5; + + /** + * Set the speaker volume scaling factor + * @param scale Volume scale between 0.0 and 1.0 + */ + public void setVolumeScale(double scale) { + volumeScale = Math.max(0.0, Math.min(1.0, scale)); + } + + /** + * Get the current volume scaling factor + * @return Volume scale between 0.0 and 1.0 + */ + public double getVolumeScale() { + return volumeScale; + } /** * Manifestation of the apple speaker softswitch */ @@ -210,7 +231,7 @@ public class Speaker extends Device { if (idleCycles >= MAX_IDLE_CYCLES) { currentVolume -= fadeOffAmount; } - playSample(level * currentVolume); + playSample((int)(level * currentVolume * volumeScale)); // Emulator.withComputer(c->c.getMotherboard().requestSpeed(this)); // Set level back to 0 diff --git a/Platform/Apple/tools/jace/src/main/java/jace/lawless/LawlessHacks.java b/Platform/Apple/tools/jace/src/main/java/jace/lawless/LawlessHacks.java index 1ad0c89c..03e8c31c 100644 --- a/Platform/Apple/tools/jace/src/main/java/jace/lawless/LawlessHacks.java +++ b/Platform/Apple/tools/jace/src/main/java/jace/lawless/LawlessHacks.java @@ -1,7 +1,6 @@ package jace.lawless; import java.io.BufferedReader; -import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; @@ -200,7 +199,21 @@ public class LawlessHacks extends Cheats { private static MediaPlayer previousSongPlayer; private static MediaPlayer currentSfxPlayer; private static String currentScore = SCORE_COMMON; - + + // Volume control for music + private static double musicVolume = 0.5; + + /** + * Set the music volume + * @param volume Volume between 0.0 and 1.0 + */ + public void setMusicVolume(double volume) { + musicVolume = Math.max(0.0, Math.min(1.0, volume)); + if (currentSongPlayer != null) { + currentSongPlayer.setVolume(musicVolume); + } + } + public void playSound(int soundNumber) { boolean isMusic = soundNumber >= 0; int track = soundNumber & 0x03f; @@ -256,7 +269,7 @@ public class LawlessHacks extends Cheats { // Log path try { return new Media(pathStr); - } catch (IOException e) { + } catch (Exception e) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, "Unable to load audio track " + pathStr, e); return null; } @@ -335,8 +348,8 @@ public class LawlessHacks extends Cheats { } Thread effect = new Thread(() -> { - while (playbackEffect == Thread.currentThread() && player.getVolume() < 1.0) { - player.setVolume(Math.min(player.getVolume() + FADE_AMT, 1.0)); + while (playbackEffect == Thread.currentThread() && player.getVolume() < musicVolume) { + player.setVolume(Math.min(player.getVolume() + FADE_AMT, musicVolume)); try { Thread.sleep(FADE_SPEED); } catch (InterruptedException e) { diff --git a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/jni-config.json b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/jni-config.json index 8e66ee29..bca7a411 100644 --- a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/jni-config.json +++ b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/jni-config.json @@ -1,464 +1,278 @@ [ { - "name":"[Lcom.sun.glass.ui.Screen;" + "type":"[Lcom.sun.glass.ui.Screen;" }, { - "name":"[Ljava.lang.String;" + "type":"[Ljava.lang.String;" }, { - "name":"com.sun.glass.ui.Application", - "methods":[ - {"name":"notifyDidBecomeActive","parameterTypes":[] }, - {"name":"notifyDidFinishLaunching","parameterTypes":[] }, - {"name":"notifyDidHide","parameterTypes":[] }, - {"name":"notifyDidResignActive","parameterTypes":[] }, - {"name":"notifyDidUnhide","parameterTypes":[] }, - {"name":"notifyOpenFiles","parameterTypes":["java.lang.String[]"] }, - {"name":"notifyWillBecomeActive","parameterTypes":[] }, - {"name":"notifyWillFinishLaunching","parameterTypes":[] }, - {"name":"notifyWillHide","parameterTypes":[] }, - {"name":"notifyWillResignActive","parameterTypes":[] }, - {"name":"notifyWillUnhide","parameterTypes":[] } - ] + "type":"com.sun.glass.ui.Application", + "methods":[{"name":"notifyDidBecomeActive","parameterTypes":[] },{"name":"notifyDidFinishLaunching","parameterTypes":[] },{"name":"notifyDidHide","parameterTypes":[] },{"name":"notifyDidResignActive","parameterTypes":[] },{"name":"notifyDidUnhide","parameterTypes":[] },{"name":"notifyOpenFiles","parameterTypes":["java.lang.String[]"] },{"name":"notifyWillBecomeActive","parameterTypes":[] },{"name":"notifyWillFinishLaunching","parameterTypes":[] },{"name":"notifyWillHide","parameterTypes":[] },{"name":"notifyWillResignActive","parameterTypes":[] },{"name":"notifyWillUnhide","parameterTypes":[] }] }, { - "name":"com.sun.glass.ui.CommonDialogs$ExtensionFilter", - "methods":[ - {"name":"extensionsToArray","parameterTypes":[] }, - {"name":"getDescription","parameterTypes":[] } - ] + "type":"com.sun.glass.ui.CommonDialogs$ExtensionFilter", + "methods":[{"name":"extensionsToArray","parameterTypes":[] },{"name":"getDescription","parameterTypes":[] }] }, { - "name":"com.sun.glass.ui.CommonDialogs$FileChooserResult", + "type":"com.sun.glass.ui.CommonDialogs$FileChooserResult", "methods":[{"name":"","parameterTypes":["java.util.List","com.sun.glass.ui.CommonDialogs$ExtensionFilter"] }] }, { - "name":"com.sun.glass.ui.EventLoop", - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"enter","parameterTypes":[] }, - {"name":"leave","parameterTypes":["java.lang.Object"] } - ] + "type":"com.sun.glass.ui.EventLoop", + "methods":[{"name":"","parameterTypes":[] },{"name":"enter","parameterTypes":[] },{"name":"leave","parameterTypes":["java.lang.Object"] }] }, { - "name":"com.sun.glass.ui.Menu", - "methods":[ - {"name":"notifyMenuClosed","parameterTypes":[] }, - {"name":"notifyMenuOpening","parameterTypes":[] } - ] + "type":"com.sun.glass.ui.Menu", + "methods":[{"name":"notifyMenuClosed","parameterTypes":[] },{"name":"notifyMenuOpening","parameterTypes":[] }] }, { - "name":"com.sun.glass.ui.MenuItem$Callback", - "methods":[ - {"name":"action","parameterTypes":[] }, - {"name":"validate","parameterTypes":[] } - ] + "type":"com.sun.glass.ui.MenuItem$Callback", + "methods":[{"name":"action","parameterTypes":[] },{"name":"validate","parameterTypes":[] }] }, { - "name":"com.sun.glass.ui.Screen", - "methods":[ - {"name":"","parameterTypes":["long","int","int","int","int","int","int","int","int","int","int","int","int","int","int","int","float","float","float","float"] }, - {"name":"notifySettingsChanged","parameterTypes":[] } - ] + "type":"com.sun.glass.ui.Screen", + "methods":[{"name":"","parameterTypes":["long","int","int","int","int","int","int","int","int","int","int","int","int","int","int","int","float","float","float","float"] },{"name":"notifySettingsChanged","parameterTypes":[] },{"name":"initIDs","parameterTypes":[] },{"name":"getScreens","parameterTypes":[] }] }, { - "name":"com.sun.glass.ui.Size", + "type":"com.sun.glass.ui.Size", "methods":[{"name":"","parameterTypes":["int","int"] }] }, { - "name":"com.sun.glass.ui.View", + "type":"com.sun.glass.ui.View", "fields":[{"name":"ptr"}], - "methods":[ - {"name":"getAccessible","parameterTypes":[] }, - {"name":"notifyDragDrop","parameterTypes":["int","int","int","int","int"] }, - {"name":"notifyDragEnd","parameterTypes":["int"] }, - {"name":"notifyDragEnter","parameterTypes":["int","int","int","int","int"] }, - {"name":"notifyDragLeave","parameterTypes":[] }, - {"name":"notifyDragOver","parameterTypes":["int","int","int","int","int"] }, - {"name":"notifyInputMethod","parameterTypes":["java.lang.String","int[]","int[]","byte[]","int","int","int"] }, - {"name":"notifyInputMethodCandidatePosRequest","parameterTypes":["int"] }, - {"name":"notifyKey","parameterTypes":["int","int","char[]","int"] }, - {"name":"notifyMenu","parameterTypes":["int","int","int","int","boolean"] }, - {"name":"notifyMouse","parameterTypes":["int","int","int","int","int","int","int","boolean","boolean"] }, - {"name":"notifyRepaint","parameterTypes":["int","int","int","int"] }, - {"name":"notifyResize","parameterTypes":["int","int"] }, - {"name":"notifyView","parameterTypes":["int"] } - ] + "methods":[{"name":"getAccessible","parameterTypes":[] },{"name":"notifyDragDrop","parameterTypes":["int","int","int","int","int"] },{"name":"notifyDragEnd","parameterTypes":["int"] },{"name":"notifyDragEnter","parameterTypes":["int","int","int","int","int"] },{"name":"notifyDragLeave","parameterTypes":[] },{"name":"notifyDragOver","parameterTypes":["int","int","int","int","int"] },{"name":"notifyInputMethod","parameterTypes":["java.lang.String","int[]","int[]","byte[]","int","int","int"] },{"name":"notifyInputMethodCandidatePosRequest","parameterTypes":["int"] },{"name":"notifyKey","parameterTypes":["int","int","char[]","int"] },{"name":"notifyMenu","parameterTypes":["int","int","int","int","boolean"] },{"name":"notifyMouse","parameterTypes":["int","int","int","int","int","int","int","boolean","boolean"] },{"name":"notifyRepaint","parameterTypes":["int","int","int","int"] },{"name":"notifyResize","parameterTypes":["int","int"] },{"name":"notifyView","parameterTypes":["int"] }] }, { - "name":"com.sun.javafx.font.coretext.CGAffineTransform", - "fields":[ - {"name":"a"}, - {"name":"b"}, - {"name":"c"}, - {"name":"d"}, - {"name":"tx"}, - {"name":"ty"} - ], + "type":"com.sun.javafx.font.coretext.CGAffineTransform", + "fields":[{"name":"a"},{"name":"b"},{"name":"c"},{"name":"d"},{"name":"tx"},{"name":"ty"}], "methods":[{"name":"","parameterTypes":[] }] }, { - "name":"com.sun.javafx.font.coretext.CGPoint", - "fields":[ - {"name":"x"}, - {"name":"y"} - ], + "type":"com.sun.javafx.font.coretext.CGPoint", + "fields":[{"name":"x"},{"name":"y"}], "methods":[{"name":"","parameterTypes":[] }] }, { - "name":"com.sun.javafx.font.coretext.CGRect", - "fields":[ - {"name":"origin"}, - {"name":"size"} - ], + "type":"com.sun.javafx.font.coretext.CGRect", + "fields":[{"name":"origin"},{"name":"size"}], "methods":[{"name":"","parameterTypes":[] }] }, { - "name":"com.sun.javafx.font.coretext.CGSize", - "fields":[ - {"name":"height"}, - {"name":"width"} - ], + "type":"com.sun.javafx.font.coretext.CGSize", + "fields":[{"name":"height"},{"name":"width"}], "methods":[{"name":"","parameterTypes":[] }] }, { - "name":"com.sun.javafx.iio.common.ImageLoaderImpl", + "type":"com.sun.javafx.iio.common.ImageLoaderImpl", "methods":[{"name":"emitWarning","parameterTypes":["java.lang.String"] }] }, { - "name":"com.sun.javafx.iio.jpeg.JPEGImageLoader", - "methods":[ - {"name":"setInputAttributes","parameterTypes":["int","int","int","int","int","byte[]"] }, - {"name":"setOutputAttributes","parameterTypes":["int","int"] }, - {"name":"updateImageProgress","parameterTypes":["int"] } - ] + "type":"com.sun.javafx.iio.jpeg.JPEGImageLoader", + "methods":[{"name":"setInputAttributes","parameterTypes":["int","int","int","int","int","byte[]"] },{"name":"setOutputAttributes","parameterTypes":["int","int"] },{"name":"updateImageProgress","parameterTypes":["int"] }] }, { - "name":"com.sun.media.jfxmedia.locator.Locator", + "type":"com.sun.media.jfxmedia.locator.Locator", "methods":[{"name":"getStringLocation","parameterTypes":[] }] }, { - "name":"com.sun.media.jfxmedia.logging.Logger", - "methods":[ - {"name":"logMsg","parameterTypes":["int","java.lang.String"] }, - {"name":"logMsg","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String"] } - ] + "type":"com.sun.media.jfxmedia.logging.Logger", + "methods":[{"name":"logMsg","parameterTypes":["int","java.lang.String"] },{"name":"logMsg","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String"] }] }, { - "name":"com.sun.media.jfxmediaimpl.NativeMediaPlayer", - "methods":[ - {"name":"sendAudioSpectrumEvent","parameterTypes":["double","double","boolean"] }, - {"name":"sendAudioTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String","int","int","float"] }, - {"name":"sendBufferProgressEvent","parameterTypes":["double","long","long","long"] }, - {"name":"sendDurationUpdateEvent","parameterTypes":["double"] }, - {"name":"sendFrameSizeChangedEvent","parameterTypes":["int","int"] }, - {"name":"sendMarkerEvent","parameterTypes":["java.lang.String","double"] }, - {"name":"sendNewFrameEvent","parameterTypes":["long"] }, - {"name":"sendPlayerHaltEvent","parameterTypes":["java.lang.String","double"] }, - {"name":"sendPlayerMediaErrorEvent","parameterTypes":["int"] }, - {"name":"sendPlayerStateEvent","parameterTypes":["int","double"] }, - {"name":"sendSubtitleTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String"] }, - {"name":"sendVideoTrack","parameterTypes":["boolean","long","java.lang.String","int","int","int","float","boolean"] }, - {"name":"sendWarning","parameterTypes":["int","java.lang.String"] } - ] + "type":"com.sun.media.jfxmediaimpl.NativeMediaPlayer", + "methods":[{"name":"sendAudioSpectrumEvent","parameterTypes":["double","double","boolean"] },{"name":"sendAudioTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String","int","int","float"] },{"name":"sendBufferProgressEvent","parameterTypes":["double","long","long","long"] },{"name":"sendDurationUpdateEvent","parameterTypes":["double"] },{"name":"sendFrameSizeChangedEvent","parameterTypes":["int","int"] },{"name":"sendMarkerEvent","parameterTypes":["java.lang.String","double"] },{"name":"sendNewFrameEvent","parameterTypes":["long"] },{"name":"sendPlayerHaltEvent","parameterTypes":["java.lang.String","double"] },{"name":"sendPlayerMediaErrorEvent","parameterTypes":["int"] },{"name":"sendPlayerStateEvent","parameterTypes":["int","double"] },{"name":"sendSubtitleTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String"] },{"name":"sendVideoTrack","parameterTypes":["boolean","long","java.lang.String","int","int","int","float","boolean"] },{"name":"sendWarning","parameterTypes":["int","java.lang.String"] }] }, { - "name":"com.sun.media.jfxmediaimpl.platform.osx.OSXMediaPlayer" + "type":"com.sun.media.jfxmediaimpl.platform.osx.OSXMediaPlayer" }, { - "name":"com.sun.media.sound.DirectAudioDevice", + "type":"com.sun.media.sound.DirectAudioDevice", "methods":[{"name":"addFormat","parameterTypes":["java.util.Vector","int","int","int","float","int","boolean","boolean"] }] }, { - "name":"com.sun.media.sound.DirectAudioDeviceProvider$DirectAudioDeviceInfo", + "type":"com.sun.media.sound.DirectAudioDeviceProvider$DirectAudioDeviceInfo", "methods":[{"name":"","parameterTypes":["int","int","int","java.lang.String","java.lang.String","java.lang.String","java.lang.String"] }] }, { - "name":"com.sun.media.sound.PortMixerProvider$PortMixerInfo", + "type":"com.sun.media.sound.PortMixerProvider$PortMixerInfo", "methods":[{"name":"","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.String"] }] }, { - "name":"com.sun.webkit.BackForwardList", + "type":"com.sun.webkit.BackForwardList", "methods":[{"name":"notifyChanged","parameterTypes":[] }] }, { - "name":"com.sun.webkit.BackForwardList$Entry", - "methods":[ - {"name":"","parameterTypes":["long","long"] }, - {"name":"notifyItemChanged","parameterTypes":[] }, - {"name":"notifyItemDestroyed","parameterTypes":[] } - ] + "type":"com.sun.webkit.BackForwardList$Entry", + "methods":[{"name":"","parameterTypes":["long","long"] },{"name":"notifyItemChanged","parameterTypes":[] },{"name":"notifyItemDestroyed","parameterTypes":[] }] }, { - "name":"com.sun.webkit.CursorManager", - "methods":[ - {"name":"getCursorManager","parameterTypes":[] }, - {"name":"getPredefinedCursorID","parameterTypes":["int"] } - ] + "type":"com.sun.webkit.CursorManager", + "methods":[{"name":"getCursorManager","parameterTypes":[] },{"name":"getPredefinedCursorID","parameterTypes":["int"] }] }, { - "name":"com.sun.webkit.FileSystem", - "methods":[ - {"name":"fwkFileExists","parameterTypes":["java.lang.String"] }, - {"name":"fwkMakeAllDirectories","parameterTypes":["java.lang.String"] }, - {"name":"fwkPathByAppendingComponent","parameterTypes":["java.lang.String","java.lang.String"] } - ] + "type":"com.sun.webkit.FileSystem", + "methods":[{"name":"fwkFileExists","parameterTypes":["java.lang.String"] },{"name":"fwkMakeAllDirectories","parameterTypes":["java.lang.String"] },{"name":"fwkPathByAppendingComponent","parameterTypes":["java.lang.String","java.lang.String"] }] }, { - "name":"com.sun.webkit.MainThread", + "type":"com.sun.webkit.MainThread", "methods":[{"name":"fwkScheduleDispatchFunctions","parameterTypes":[] }] }, { - "name":"com.sun.webkit.Timer", - "methods":[ - {"name":"fwkSetFireTime","parameterTypes":["double"] }, - {"name":"fwkStopTimer","parameterTypes":[] } - ] + "type":"com.sun.webkit.Timer", + "methods":[{"name":"fwkSetFireTime","parameterTypes":["double"] },{"name":"fwkStopTimer","parameterTypes":[] }] }, { - "name":"com.sun.webkit.WCWidget", - "methods":[ - {"name":"fwkDestroy","parameterTypes":[] }, - {"name":"fwkRequestFocus","parameterTypes":[] }, - {"name":"fwkSetBounds","parameterTypes":["int","int","int","int"] }, - {"name":"fwkSetCursor","parameterTypes":["long"] }, - {"name":"fwkSetVisible","parameterTypes":["boolean"] } - ] + "type":"com.sun.webkit.WCWidget", + "methods":[{"name":"fwkDestroy","parameterTypes":[] },{"name":"fwkRequestFocus","parameterTypes":[] },{"name":"fwkSetBounds","parameterTypes":["int","int","int","int"] },{"name":"fwkSetCursor","parameterTypes":["long"] },{"name":"fwkSetVisible","parameterTypes":["boolean"] }] }, { - "name":"com.sun.webkit.WebPage", - "methods":[ - {"name":"fwkAddMessageToConsole","parameterTypes":["java.lang.String","int","java.lang.String"] }, - {"name":"fwkAlert","parameterTypes":["java.lang.String"] }, - {"name":"fwkCanRunBeforeUnloadConfirmPanel","parameterTypes":[] }, - {"name":"fwkChooseFile","parameterTypes":["java.lang.String","boolean","java.lang.String"] }, - {"name":"fwkCloseWindow","parameterTypes":[] }, - {"name":"fwkConfirm","parameterTypes":["java.lang.String"] }, - {"name":"fwkCreateWindow","parameterTypes":["boolean","boolean","boolean","boolean"] }, - {"name":"fwkDidClearWindowObject","parameterTypes":["long","long"] }, - {"name":"fwkFireLoadEvent","parameterTypes":["long","int","java.lang.String","java.lang.String","double","int"] }, - {"name":"fwkFireResourceLoadEvent","parameterTypes":["long","int","int","java.lang.String","double","int"] }, - {"name":"fwkFrameCreated","parameterTypes":["long"] }, - {"name":"fwkFrameDestroyed","parameterTypes":["long"] }, - {"name":"fwkGetPageBounds","parameterTypes":[] }, - {"name":"fwkGetWindowBounds","parameterTypes":[] }, - {"name":"fwkPermitAcceptResourceAction","parameterTypes":["long","java.lang.String"] }, - {"name":"fwkPermitEnableScriptsAction","parameterTypes":["long","java.lang.String"] }, - {"name":"fwkPermitNavigateAction","parameterTypes":["long","java.lang.String"] }, - {"name":"fwkPermitNewWindowAction","parameterTypes":["long","java.lang.String"] }, - {"name":"fwkPermitRedirectAction","parameterTypes":["long","java.lang.String"] }, - {"name":"fwkPermitSubmitDataAction","parameterTypes":["long","java.lang.String","java.lang.String","boolean"] }, - {"name":"fwkPrompt","parameterTypes":["java.lang.String","java.lang.String"] }, - {"name":"fwkRemoveRequestURL","parameterTypes":["long","int"] }, - {"name":"fwkRepaint","parameterTypes":["int","int","int","int"] }, - {"name":"fwkRunBeforeUnloadConfirmPanel","parameterTypes":["java.lang.String"] }, - {"name":"fwkScreenToWindow","parameterTypes":["com.sun.webkit.graphics.WCPoint"] }, - {"name":"fwkSetCursor","parameterTypes":["long"] }, - {"name":"fwkSetFocus","parameterTypes":["boolean"] }, - {"name":"fwkSetRequestURL","parameterTypes":["long","int","java.lang.String"] }, - {"name":"fwkSetScrollbarsVisible","parameterTypes":["boolean"] }, - {"name":"fwkSetStatusbarText","parameterTypes":["java.lang.String"] }, - {"name":"fwkSetTooltip","parameterTypes":["java.lang.String"] }, - {"name":"fwkSetWindowBounds","parameterTypes":["int","int","int","int"] }, - {"name":"fwkShowWindow","parameterTypes":[] }, - {"name":"fwkTransferFocus","parameterTypes":["boolean"] }, - {"name":"fwkWindowToScreen","parameterTypes":["com.sun.webkit.graphics.WCPoint"] }, - {"name":"getHostWindow","parameterTypes":[] }, - {"name":"getPage","parameterTypes":[] }, - {"name":"getRenderTheme","parameterTypes":[] }, - {"name":"setInputMethodState","parameterTypes":["boolean"] } - ] + "type":"com.sun.webkit.WebPage", + "methods":[{"name":"fwkAddMessageToConsole","parameterTypes":["java.lang.String","int","java.lang.String"] },{"name":"fwkAlert","parameterTypes":["java.lang.String"] },{"name":"fwkCanRunBeforeUnloadConfirmPanel","parameterTypes":[] },{"name":"fwkChooseFile","parameterTypes":["java.lang.String","boolean","java.lang.String"] },{"name":"fwkCloseWindow","parameterTypes":[] },{"name":"fwkConfirm","parameterTypes":["java.lang.String"] },{"name":"fwkCreateWindow","parameterTypes":["boolean","boolean","boolean","boolean"] },{"name":"fwkDidClearWindowObject","parameterTypes":["long","long"] },{"name":"fwkFireLoadEvent","parameterTypes":["long","int","java.lang.String","java.lang.String","double","int"] },{"name":"fwkFireResourceLoadEvent","parameterTypes":["long","int","int","java.lang.String","double","int"] },{"name":"fwkFrameCreated","parameterTypes":["long"] },{"name":"fwkFrameDestroyed","parameterTypes":["long"] },{"name":"fwkGetPageBounds","parameterTypes":[] },{"name":"fwkGetWindowBounds","parameterTypes":[] },{"name":"fwkPermitAcceptResourceAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitEnableScriptsAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitNavigateAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitNewWindowAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitRedirectAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitSubmitDataAction","parameterTypes":["long","java.lang.String","java.lang.String","boolean"] },{"name":"fwkPrompt","parameterTypes":["java.lang.String","java.lang.String"] },{"name":"fwkRemoveRequestURL","parameterTypes":["long","int"] },{"name":"fwkRepaint","parameterTypes":["int","int","int","int"] },{"name":"fwkRunBeforeUnloadConfirmPanel","parameterTypes":["java.lang.String"] },{"name":"fwkScreenToWindow","parameterTypes":["com.sun.webkit.graphics.WCPoint"] },{"name":"fwkSetCursor","parameterTypes":["long"] },{"name":"fwkSetFocus","parameterTypes":["boolean"] },{"name":"fwkSetRequestURL","parameterTypes":["long","int","java.lang.String"] },{"name":"fwkSetScrollbarsVisible","parameterTypes":["boolean"] },{"name":"fwkSetStatusbarText","parameterTypes":["java.lang.String"] },{"name":"fwkSetTooltip","parameterTypes":["java.lang.String"] },{"name":"fwkSetWindowBounds","parameterTypes":["int","int","int","int"] },{"name":"fwkShowWindow","parameterTypes":[] },{"name":"fwkTransferFocus","parameterTypes":["boolean"] },{"name":"fwkWindowToScreen","parameterTypes":["com.sun.webkit.graphics.WCPoint"] },{"name":"getHostWindow","parameterTypes":[] },{"name":"getPage","parameterTypes":[] },{"name":"getRenderTheme","parameterTypes":[] },{"name":"setInputMethodState","parameterTypes":["boolean"] }] }, { - "name":"com.sun.webkit.dom.JSObject", + "type":"com.sun.webkit.dom.JSObject", "fields":[{"name":"UNDEFINED"}], "methods":[{"name":"","parameterTypes":["long","int"] }] }, { - "name":"com.sun.webkit.graphics.Ref", - "methods":[ - {"name":"getID","parameterTypes":[] }, - {"name":"ref","parameterTypes":[] } - ] + "type":"com.sun.webkit.graphics.Ref", + "methods":[{"name":"getID","parameterTypes":[] },{"name":"ref","parameterTypes":[] }] }, { - "name":"com.sun.webkit.graphics.ScrollBarTheme", + "type":"com.sun.webkit.graphics.ScrollBarTheme", "methods":[{"name":"getThickness","parameterTypes":[] }] }, { - "name":"com.sun.webkit.graphics.WCFont", - "methods":[ - {"name":"getAscent","parameterTypes":[] }, - {"name":"getCapHeight","parameterTypes":[] }, - {"name":"getDescent","parameterTypes":[] }, - {"name":"getGlyphBoundingBox","parameterTypes":["int"] }, - {"name":"getGlyphCodes","parameterTypes":["char[]"] }, - {"name":"getGlyphWidth","parameterTypes":["int"] }, - {"name":"getLineGap","parameterTypes":[] }, - {"name":"getLineSpacing","parameterTypes":[] }, - {"name":"getTextRuns","parameterTypes":["java.lang.String"] }, - {"name":"getXHeight","parameterTypes":[] }, - {"name":"hasUniformLineMetrics","parameterTypes":[] }, - {"name":"hashCode","parameterTypes":[] } - ] + "type":"com.sun.webkit.graphics.WCFont", + "methods":[{"name":"getAscent","parameterTypes":[] },{"name":"getCapHeight","parameterTypes":[] },{"name":"getDescent","parameterTypes":[] },{"name":"getGlyphBoundingBox","parameterTypes":["int"] },{"name":"getGlyphCodes","parameterTypes":["char[]"] },{"name":"getGlyphWidth","parameterTypes":["int"] },{"name":"getLineGap","parameterTypes":[] },{"name":"getLineSpacing","parameterTypes":[] },{"name":"getTextRuns","parameterTypes":["java.lang.String"] },{"name":"getXHeight","parameterTypes":[] },{"name":"hasUniformLineMetrics","parameterTypes":[] },{"name":"hashCode","parameterTypes":[] }] }, { - "name":"com.sun.webkit.graphics.WCGraphicsManager", - "methods":[ - {"name":"createWCPath","parameterTypes":[] }, - {"name":"getGraphicsManager","parameterTypes":[] }, - {"name":"getWCFont","parameterTypes":["java.lang.String","boolean","boolean","float"] } - ] + "type":"com.sun.webkit.graphics.WCGraphicsManager", + "methods":[{"name":"createWCPath","parameterTypes":[] },{"name":"getGraphicsManager","parameterTypes":[] },{"name":"getWCFont","parameterTypes":["java.lang.String","boolean","boolean","float"] }] }, { - "name":"com.sun.webkit.graphics.WCPoint", - "methods":[ - {"name":"","parameterTypes":["float","float"] }, - {"name":"getX","parameterTypes":[] }, - {"name":"getY","parameterTypes":[] } - ] + "type":"com.sun.webkit.graphics.WCPoint", + "methods":[{"name":"","parameterTypes":["float","float"] },{"name":"getX","parameterTypes":[] },{"name":"getY","parameterTypes":[] }] }, { - "name":"com.sun.webkit.graphics.WCRectangle", - "fields":[ - {"name":"h"}, - {"name":"w"}, - {"name":"x"}, - {"name":"y"} - ] + "type":"com.sun.webkit.graphics.WCRectangle", + "fields":[{"name":"h"},{"name":"w"},{"name":"x"},{"name":"y"}] }, { - "name":"com.sun.webkit.graphics.WCRenderQueue", - "methods":[ - {"name":"fwkAddBuffer","parameterTypes":["java.nio.ByteBuffer"] }, - {"name":"fwkDisposeGraphics","parameterTypes":[] }, - {"name":"refFloatArr","parameterTypes":["float[]"] }, - {"name":"refIntArr","parameterTypes":["int[]"] } - ] + "type":"com.sun.webkit.graphics.WCRenderQueue", + "methods":[{"name":"fwkAddBuffer","parameterTypes":["java.nio.ByteBuffer"] },{"name":"fwkDisposeGraphics","parameterTypes":[] },{"name":"refFloatArr","parameterTypes":["float[]"] },{"name":"refIntArr","parameterTypes":["int[]"] }] }, { - "name":"com.sun.webkit.graphics.WCTextRun", - "methods":[ - {"name":"getCharOffset","parameterTypes":["int"] }, - {"name":"getEnd","parameterTypes":[] }, - {"name":"getGlyph","parameterTypes":["int"] }, - {"name":"getGlyphCount","parameterTypes":[] }, - {"name":"getGlyphPosAndAdvance","parameterTypes":["int"] }, - {"name":"getStart","parameterTypes":[] }, - {"name":"isLeftToRight","parameterTypes":[] } - ] + "type":"com.sun.webkit.graphics.WCTextRun", + "methods":[{"name":"getCharOffset","parameterTypes":["int"] },{"name":"getEnd","parameterTypes":[] },{"name":"getGlyph","parameterTypes":["int"] },{"name":"getGlyphCount","parameterTypes":[] },{"name":"getGlyphPosAndAdvance","parameterTypes":["int"] },{"name":"getStart","parameterTypes":[] },{"name":"isLeftToRight","parameterTypes":[] }] }, { - "name":"com.sun.webkit.network.FormDataElement", - "methods":[ - {"name":"fwkCreateFromByteArray","parameterTypes":["byte[]"] }, - {"name":"fwkCreateFromFile","parameterTypes":["java.lang.String"] } - ] + "type":"com.sun.webkit.network.FormDataElement", + "methods":[{"name":"fwkCreateFromByteArray","parameterTypes":["byte[]"] },{"name":"fwkCreateFromFile","parameterTypes":["java.lang.String"] }] }, { - "name":"com.sun.webkit.network.NetworkContext", - "methods":[ - {"name":"canHandleURL","parameterTypes":["java.lang.String"] }, - {"name":"fwkGetMaximumHTTPConnectionCountPerHost","parameterTypes":[] }, - {"name":"fwkLoad","parameterTypes":["com.sun.webkit.WebPage","boolean","java.lang.String","java.lang.String","java.lang.String","com.sun.webkit.network.FormDataElement[]","long"] } - ] + "type":"com.sun.webkit.network.NetworkContext", + "methods":[{"name":"canHandleURL","parameterTypes":["java.lang.String"] },{"name":"fwkGetMaximumHTTPConnectionCountPerHost","parameterTypes":[] },{"name":"fwkLoad","parameterTypes":["com.sun.webkit.WebPage","boolean","java.lang.String","java.lang.String","java.lang.String","com.sun.webkit.network.FormDataElement[]","long"] }] }, { - "name":"com.sun.webkit.network.URLLoaderBase", + "type":"com.sun.webkit.network.URLLoaderBase", "methods":[{"name":"fwkCancel","parameterTypes":[] }] }, { - "name":"jace.ide.Program" + "type":"jace.ide.Program" }, { - "name":"java.io.File", + "type":"java.io.File", "methods":[{"name":"","parameterTypes":["java.lang.String"] }] }, { - "name":"java.io.InputStream", - "methods":[ - {"name":"read","parameterTypes":["byte[]","int","int"] }, - {"name":"skip","parameterTypes":["long"] } - ] + "type":"java.io.InputStream", + "methods":[{"name":"read","parameterTypes":["byte[]","int","int"] },{"name":"skip","parameterTypes":["long"] }] }, { - "name":"java.lang.Boolean", - "methods":[ - {"name":"booleanValue","parameterTypes":[] }, - {"name":"getBoolean","parameterTypes":["java.lang.String"] } - ] + "type":"java.lang.Boolean", + "methods":[{"name":"booleanValue","parameterTypes":[] },{"name":"getBoolean","parameterTypes":["java.lang.String"] }] }, { - "name":"java.lang.Class", - "methods":[ - {"name":"forName","parameterTypes":["java.lang.String","boolean","java.lang.ClassLoader"] }, - {"name":"isArray","parameterTypes":[] } - ] + "type":"java.lang.Class", + "methods":[{"name":"forName","parameterTypes":["java.lang.String"] },{"name":"getMethod","parameterTypes":["java.lang.String", "[Ljava.lang.Class;"] },{"name":"getField","parameterTypes":["java.lang.String"] },{"name":"forName","parameterTypes":["java.lang.String", "boolean", "java.lang.ClassLoader"] },{"name":"getClassLoader","parameterTypes":[] },{"name":"getDeclaredMethod","parameterTypes":["java.lang.String", "java.lang.Class[]"] },{"name":"getDeclaredMethods","parameterTypes":[] },{"name":"getMethod","parameterTypes":["java.lang.String", "java.lang.Class[]"] },{"name":"getMethods","parameterTypes":[] }] }, { - "name":"java.lang.ClassLoader", - "methods":[ - {"name":"getPlatformClassLoader","parameterTypes":[] }, - {"name":"loadClass","parameterTypes":["java.lang.String"] } - ] + "type":"java.lang.ClassLoader", + "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] },{"name":"loadClass","parameterTypes":["java.lang.String"] },{"name":"defineClass","parameterTypes":["java.lang.String", "byte[]", "int", "int", "java.security.ProtectionDomain"] },{"name":"findLoadedClass","parameterTypes":["java.lang.String"] },{"name":"findLibrary","parameterTypes":["java.lang.String"] },{"name":"findBuiltinLib","parameterTypes":["java.lang.String"] },{"name":"getResourceAsStream","parameterTypes":["java.lang.String"] }] }, { - "name":"java.lang.Integer", - "methods":[ - {"name":"","parameterTypes":["int"] }, - {"name":"intValue","parameterTypes":[] } - ] + "type":"java.lang.Integer", + "methods":[{"name":"","parameterTypes":["int"] },{"name":"intValue","parameterTypes":[] }] }, { - "name":"java.lang.Long", + "type":"java.lang.Long", "methods":[{"name":"longValue","parameterTypes":[] }] }, { - "name":"java.lang.Number" + "type":"java.lang.Number" }, { - "name":"java.lang.Object", + "type":"java.lang.Object", "methods":[{"name":"getClass","parameterTypes":[] }] }, { - "name":"java.lang.Runnable", + "type":"java.lang.Runnable", "methods":[{"name":"run","parameterTypes":[] }] }, { - "name":"java.lang.String", - "methods":[ - {"name":"lastIndexOf","parameterTypes":["int"] }, - {"name":"substring","parameterTypes":["int"] } - ] + "type":"java.lang.String", + "methods":[{"name":"lastIndexOf","parameterTypes":["int"] },{"name":"substring","parameterTypes":["int"] }] }, { - "name":"java.lang.System", - "methods":[ - {"name":"getProperty","parameterTypes":["java.lang.String"] }, - {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] } - ] + "type":"java.lang.System", + "methods":[{"name":"getProperty","parameterTypes":["java.lang.String"] },{"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }] }, { - "name":"java.util.ArrayList", + "type":"java.util.ArrayList", "methods":[{"name":"","parameterTypes":[] }] }, { - "name":"java.util.List", + "type":"java.util.List", "methods":[{"name":"add","parameterTypes":["java.lang.Object"] }] }, { - "name":"java.util.Map", + "type":"java.util.Map", "methods":[{"name":"get","parameterTypes":["java.lang.Object"] }] }, { - "name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" + "type":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" }, { - "name":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints", + "type":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints", "methods":[{"name":"getClassName","parameterTypes":["java.lang.Class"] }] }, { - "name":"sun.launcher.LauncherHelper$FXHelper", + "type":"sun.launcher.LauncherHelper$FXHelper", "methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }] +}, +{ + "type":"java.lang.reflect.Method", + "methods":[{"name":"invoke","parameterTypes":["java.lang.Object", "[Ljava.lang.Object;"] }] +}, +{ + "type":"org.lwjgl.system.JNI", + "methods":[{"name":"invokePPP","parameterTypes":["long", "long", "long"] },{"name":"invokePP","parameterTypes":["long", "long"] },{"name":"invokeP","parameterTypes":["long"] }] +}, +{ + "type":"com.sun.glass.ui.mac.MacApplication", + "methods":[{"name":"initIDs","parameterTypes":[] },{"name":"_initSysProps","parameterTypes":["java.lang.String", "java.lang.String"] }] +}, +{ + "type":"com.sun.glass.ui.mac.MacView", + "methods":[{"name":"initIDs","parameterTypes":[] }] +}, +{ + "type":"com.sun.prism.es2.ES2Pipeline", + "methods":[{"name":"nInitialize","parameterTypes":["java.lang.Class", "java.lang.Class", "java.lang.Class", "java.lang.Class"] }] +}, +{ + "type":"java.io.FileInputStream", + "methods":[{"name":"readBytes","parameterTypes":["byte[]", "int", "int"] },{"name":"close","parameterTypes":[] }] } ] diff --git a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/native-image.properties b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/native-image.properties new file mode 100644 index 00000000..c38980cf --- /dev/null +++ b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/native-image.properties @@ -0,0 +1 @@ +Args = --no-fallback -H:+ReportExceptionStackTraces --initialize-at-build-time=jace --initialize-at-build-time=javafx --initialize-at-run-time=com.sun.glass.ui.mac.MacApplication --initialize-at-run-time=com.sun.glass.ui.mac.MacCommonDialogs --initialize-at-run-time=com.sun.glass.ui.mac.MacGestureSupport --initialize-at-run-time=com.sun.glass.ui.mac.MacPasteboard --initialize-at-run-time=com.sun.glass.ui.mac.MacView --initialize-at-run-time=com.sun.javafx.font.FontConfigManager --initialize-at-run-time=com.sun.javafx.font.PrismFontFactory --initialize-at-run-time=com.sun.javafx.tk.quantum.QuantumToolkit --initialize-at-run-time=sun.font.FontManagerNativeLibrary -H:EnableURLProtocols=http,https -Dprism.targetvram=192m diff --git a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/reflect-config.json b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/reflect-config.json index ad3e9926..34a701ff 100644 --- a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/reflect-config.json +++ b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/reflect-config.json @@ -1,1196 +1,88 @@ [ -{ - "name":"[D" -}, -{ - "name":"apple.security.AppleProvider", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.AESCipher$General", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.ARCFOURCipher", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.DESCipher", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.DESedeCipher", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.DHParameters", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.crypto.provider.TlsMasterSecretGenerator", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.glass.ui.Application" -}, -{ - "name":"com.sun.glass.ui.CommonDialogs$ExtensionFilter" -}, -{ - "name":"com.sun.glass.ui.CommonDialogs$FileChooserResult" -}, -{ - "name":"com.sun.glass.ui.EventLoop" -}, -{ - "name":"com.sun.glass.ui.Menu" -}, -{ - "name":"com.sun.glass.ui.MenuItem$Callback" -}, -{ - "name":"com.sun.glass.ui.Size" -}, -{ - "name":"com.sun.glass.ui.View" -}, -{ - "name":"com.sun.javafx.font.coretext.CTFactory", - "methods":[{"name":"getFactory","parameterTypes":[] }] -}, -{ - "name":"com.sun.javafx.logging.PrintLogger", - "methods":[{"name":"createInstance","parameterTypes":[] }] -}, -{ - "name":"com.sun.javafx.logging.jfr.JFRPulseLogger", - "methods":[{"name":"createInstance","parameterTypes":[] }] -}, -{ - "name":"com.sun.javafx.reflect.Trampoline", - "methods":[{"name":"invoke","parameterTypes":["java.lang.reflect.Method","java.lang.Object","java.lang.Object[]"] }] -}, -{ - "name":"com.sun.javafx.scene.control.skin.Utils", - "methods":[{"name":"getResource","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"com.sun.javafx.tk.quantum.QuantumToolkit", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.sun.javafx.webkit.theme.ScrollBarWidget" -}, -{ - "name":"com.sun.media.jfxmediaimpl.platform.gstreamer.GSTPlatform", - "methods":[{"name":"getPlatformInstance","parameterTypes":[] }] -}, -{ - "name":"com.sun.media.jfxmediaimpl.platform.osx.OSXPlatform", - "methods":[{"name":"getPlatformInstance","parameterTypes":[] }] -}, -{ - "name":"com.sun.prism.GraphicsPipeline", - "methods":[ - {"name":"getFontFactory","parameterTypes":[] }, - {"name":"getPipeline","parameterTypes":[] } - ] -}, -{ - "name":"com.sun.prism.shader.DrawRoundRect_Color_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.FillPgram_Color_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.FillPgram_LinearGradient_PAD_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.FillRoundRect_Color_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.FillRoundRect_LinearGradient_PAD_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.Mask_TextureSuper_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.Solid_TextureRGB_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.Texture_Color_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.prism.shader.Texture_LinearGradient_PAD_Loader", - "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] -}, -{ - "name":"com.sun.scenario.effect.impl.prism.PrRenderer", - "methods":[{"name":"createRenderer","parameterTypes":["com.sun.scenario.effect.FilterContext"] }] -}, -{ - "name":"com.sun.scenario.effect.impl.prism.ps.PPSLinearConvolveShadowPeer", - "methods":[{"name":"","parameterTypes":["com.sun.scenario.effect.FilterContext","com.sun.scenario.effect.impl.Renderer","java.lang.String"] }] -}, -{ - "name":"com.sun.scenario.effect.impl.prism.ps.PPSRenderer", - "methods":[{"name":"createRenderer","parameterTypes":["com.sun.scenario.effect.FilterContext"] }] -}, -{ - "name":"com.sun.xml.internal.stream.XMLInputFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"jace.EmulatorUILogic", - "allPublicFields":true, - "queryAllPublicMethods":true, - "methods":[ - {"name":"runFile","parameterTypes":[] }, - {"name":"scaleIntegerRatio","parameterTypes":[] }, - {"name":"showAboutWindow","parameterTypes":[] }, - {"name":"showConfig","parameterTypes":[] }, - {"name":"showIDE","parameterTypes":[] }, - {"name":"toggleFullscreen","parameterTypes":[] } - ] -}, -{ - "name":"jace.JaceUIController", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"initialize","parameterTypes":[] } - ] -}, -{ - "name":"jace.LawlessLegends", - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"main","parameterTypes":["java.lang.String[]"] } - ] -}, -{ - "name":"jace.apple2e.Apple2e", - "fields":[ - {"name":"PRODUCTION_MODE"}, - {"name":"acceleratorEnabled"}, - {"name":"card1"}, - {"name":"card2"}, - {"name":"card3"}, - {"name":"card4"}, - {"name":"card5"}, - {"name":"card6"}, - {"name":"card7"}, - {"name":"cheatEngine"}, - {"name":"clockEnabled"}, - {"name":"enableHints"}, - {"name":"joy1enabled"}, - {"name":"joy2enabled"}, - {"name":"ramCard"}, - {"name":"showSpeedMonitors"}, - {"name":"useDebugRom"}, - {"name":"videoRenderer"} - ] -}, -{ - "name":"jace.apple2e.MOS65C02", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.apple2e.MOS65C02$AddressCalculator" -}, -{ - "name":"jace.apple2e.MOS65C02$CommandProcessor" -}, -{ - "name":"jace.apple2e.Speaker", - "allPublicFields":true, - "queryAllPublicMethods":true, - "methods":[{"name":"toggleFileOutput","parameterTypes":[] }] -}, -{ - "name":"jace.apple2e.VideoDHGR" -}, -{ - "name":"jace.apple2e.VideoNTSC", - "fields":[ - {"name":"enableVideo7"}, - {"name":"useTextPalette"} - ] -}, -{ - "name":"jace.cheat.MetaCheat" -}, -{ - "name":"jace.cheat.MontezumasRevengeCheats" -}, -{ - "name":"jace.cheat.PrinceOfPersiaCheats" -}, -{ - "name":"jace.config.Configuration", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.config.ConfigurationUIController", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"applyConfig","parameterTypes":["javafx.scene.input.MouseEvent"] }, - {"name":"initialize","parameterTypes":[] }, - {"name":"saveConfig","parameterTypes":["javafx.scene.input.MouseEvent"] } - ] -}, -{ - "name":"jace.config.Reconfigurable" -}, -{ - "name":"jace.core.CPU", - "fields":[ - {"name":"trace"}, - {"name":"traceLength"} - ] -}, -{ - "name":"jace.core.Computer", - "fields":[{"name":"enableStateManager"}], - "methods":[{"name":"invokeWarmStart","parameterTypes":[] }] -}, -{ - "name":"jace.core.Debugger" -}, -{ - "name":"jace.core.KeyHandler" -}, -{ - "name":"jace.core.Keyboard", - "allPublicFields":true, - "queryAllPublicMethods":true, - "methods":[ - {"name":"openApple","parameterTypes":["boolean"] }, - {"name":"solidApple","parameterTypes":["boolean"] } - ] -}, -{ - "name":"jace.core.Motherboard", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.core.RAMEvent$RAMEventHandler" -}, -{ - "name":"jace.core.SoftSwitch" -}, -{ - "name":"jace.core.SoundMixer", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.core.TimedDevice", - "fields":[ - {"name":"maxspeed"}, - {"name":"speedRatio"} - ] -}, -{ - "name":"jace.core.Video", - "fields":[ - {"name":"MIN_SCREEN_REFRESH"}, - {"name":"hblankOffsetX"}, - {"name":"hblankOffsetY"}, - {"name":"waitsPerCycle"} - ] -}, -{ - "name":"jace.core.VideoWriter" -}, -{ - "name":"jace.hardware.CardAppleMouse", - "allPublicFields":true -}, -{ - "name":"jace.hardware.CardDiskII", - "allPublicFields":true, - "methods":[{"name":"","parameterTypes":["jace.core.Computer"] }] -}, -{ - "name":"jace.hardware.CardExt80Col" -}, -{ - "name":"jace.hardware.CardHayesMicromodem", - "allPublicFields":true -}, -{ - "name":"jace.hardware.CardMockingboard", - "methods":[{"name":"","parameterTypes":["jace.core.Computer"] }] -}, -{ - "name":"jace.hardware.CardRamFactor", - "allPublicFields":true, - "methods":[{"name":"","parameterTypes":["jace.core.Computer"] }] -}, -{ - "name":"jace.hardware.CardRamworks", - "allPublicFields":true, - "methods":[{"name":"","parameterTypes":["jace.core.Computer"] }] -}, -{ - "name":"jace.hardware.CardSSC", - "allPublicFields":true -}, -{ - "name":"jace.hardware.CardThunderclock", - "allPublicFields":true -}, -{ - "name":"jace.hardware.Joystick", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.hardware.NoSlotClock", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.hardware.PassportMidiInterface" -}, -{ - "name":"jace.hardware.ProdosDriver" -}, -{ - "name":"jace.hardware.SmartportDriver" -}, -{ - "name":"jace.hardware.ZipWarpAccelerator", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.hardware.massStorage.CardMassStorage", - "allPublicFields":true, - "methods":[{"name":"","parameterTypes":["jace.core.Computer"] }] -}, -{ - "name":"jace.hardware.massStorage.DiskNode" -}, -{ - "name":"jace.hardware.massStorage.IDisk" -}, -{ - "name":"jace.hardware.mockingboard.TimedGenerator" -}, -{ - "name":"jace.ide.CompileResult" -}, -{ - "name":"jace.ide.IdeController", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"executeClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"initialize","parameterTypes":[] }, - {"name":"newApplesoftBasicClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"newApplesoftBasicFromMemoryClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"newAssemblyListingClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"newHexdataClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"onCloseClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"testCompileClicked","parameterTypes":["javafx.event.ActionEvent"] }, - {"name":"viewCompilerOutputClicked","parameterTypes":["javafx.event.ActionEvent"] } - ] -}, -{ - "name":"jace.ide.LanguageHandler" -}, -{ - "name":"jace.ide.Program" -}, -{ - "name":"jace.lawless.LawlessComputer", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.lawless.LawlessHacks", - "allPublicFields":true, - "queryAllPublicMethods":true -}, -{ - "name":"jace.lawless.LawlessVideo", - "allPublicFields":true, - "methods":[{"name":"","parameterTypes":["jace.core.Computer"] }] -}, -{ - "name":"jace.library.MediaConsumer" -}, -{ - "name":"jace.library.MediaConsumerParent" -}, -{ - "name":"java.io.FileFilter" -}, -{ - "name":"java.io.Serializable" -}, -{ - "name":"java.lang.Character", - "methods":[{"name":"isIdeographic","parameterTypes":["int"] }] -}, -{ - "name":"java.lang.Class", - "methods":[ - {"name":"forName","parameterTypes":["java.lang.Module","java.lang.String"] }, - {"name":"getModule","parameterTypes":[] } - ] -}, -{ - "name":"java.lang.Comparable" -}, -{ - "name":"java.lang.Enum" -}, -{ - "name":"java.lang.Module", - "queriedMethods":[ - {"name":"getDescriptor","parameterTypes":[] }, - {"name":"getLayer","parameterTypes":[] }, - {"name":"getName","parameterTypes":[] }, - {"name":"getResourceAsStream","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"java.lang.ModuleLayer", - "methods":[ - {"name":"boot","parameterTypes":[] }, - {"name":"findModule","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"java.lang.Runnable" -}, -{ - "name":"java.lang.String", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.Object"] }] -}, -{ - "name":"java.lang.StringBuilder" -}, -{ - "name":"java.lang.annotation.Annotation" -}, -{ - "name":"java.lang.invoke.CallSite" -}, -{ - "name":"java.net.URL" -}, -{ - "name":"java.net.URLConnection", - "methods":[{"name":"getContentLengthLong","parameterTypes":[] }] -}, -{ - "name":"java.nio.Buffer", - "allDeclaredFields":true -}, -{ - "name":"java.nio.ByteBuffer", - "allDeclaredFields":true, - "methods":[{"name":"order","parameterTypes":["java.nio.ByteOrder"] }] -}, -{ - "name":"java.nio.ByteOrder", - "methods":[{"name":"nativeOrder","parameterTypes":[] }] -}, -{ - "name":"java.nio.DirectByteBuffer", - "allDeclaredFields":true, - "unsafeAllocated":true -}, -{ - "name":"java.nio.DirectCharBufferU", - "allDeclaredFields":true -}, -{ - "name":"java.nio.DirectDoubleBufferU", - "allDeclaredFields":true -}, -{ - "name":"java.nio.DirectFloatBufferU", - "allDeclaredFields":true -}, -{ - "name":"java.nio.DirectIntBufferU", - "allDeclaredFields":true, - "unsafeAllocated":true -}, -{ - "name":"java.nio.DirectLongBufferU", - "allDeclaredFields":true -}, -{ - "name":"java.nio.DirectShortBufferU", - "allDeclaredFields":true, - "unsafeAllocated":true -}, -{ - "name":"java.nio.MappedByteBuffer", - "allDeclaredFields":true -}, -{ - "name":"java.security.AlgorithmParametersSpi" -}, -{ - "name":"java.security.KeyStoreSpi" -}, -{ - "name":"java.security.SecureRandomParameters" -}, -{ - "name":"java.util.Comparator" -}, -{ - "name":"java.util.HashMap" -}, -{ - "name":"java.util.List", - "queriedMethods":[{"name":"copyOf","parameterTypes":["java.util.Collection"] }] -}, -{ - "name":"java.util.Map$Entry" -}, -{ - "name":"java.util.Optional", - "queriedMethods":[{"name":"isEmpty","parameterTypes":[] }] -}, -{ - "name":"java.util.TreeMap" -}, -{ - "name":"java.util.TreeSet" -}, -{ - "name":"java.util.function.Function" -}, -{ - "name":"java.util.zip.DeflaterInputStream" -}, -{ - "name":"javafx.animation.KeyValue" -}, -{ - "name":"javafx.application.Application" -}, -{ - "name":"javafx.collections.FXCollections", - "methods":[{"name":"observableArrayList","parameterTypes":[] }] -}, -{ - "name":"javafx.fxml.FXMLLoader" -}, -{ - "name":"javafx.geometry.Insets", - "queryAllPublicMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":["double"] }, - {"name":"","parameterTypes":["double","double","double","double"] } - ] -}, -{ - "name":"javafx.geometry.NodeOrientation", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.geometry.Pos", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.scene.Camera" -}, -{ - "name":"javafx.scene.Group" -}, -{ - "name":"javafx.scene.Node", - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getId","parameterTypes":[] }, - {"name":"getStyleClass","parameterTypes":[] }, - {"name":"setId","parameterTypes":["java.lang.String"] }, - {"name":"setLayoutX","parameterTypes":["double"] }, - {"name":"setLayoutY","parameterTypes":["double"] }, - {"name":"setMouseTransparent","parameterTypes":["boolean"] }, - {"name":"setNodeOrientation","parameterTypes":["javafx.geometry.NodeOrientation"] }, - {"name":"setOnMouseClicked","parameterTypes":["javafx.event.EventHandler"] }, - {"name":"setPickOnBounds","parameterTypes":["boolean"] }, - {"name":"setStyle","parameterTypes":["java.lang.String"] }, - {"name":"setVisible","parameterTypes":["boolean"] } - ] -}, -{ - "name":"javafx.scene.ParallelCamera" -}, -{ - "name":"javafx.scene.Parent", - "queryAllDeclaredMethods":true, - "methods":[{"name":"getStylesheets","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.Scene" -}, -{ - "name":"javafx.scene.control.Button", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.control.ButtonBase", - "queryAllDeclaredMethods":true -}, -{ - "name":"javafx.scene.control.CheckMenuItem", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.control.ComboBox", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setItems","parameterTypes":["javafx.collections.ObservableList"] } - ] -}, -{ - "name":"javafx.scene.control.ComboBoxBase", - "queryAllDeclaredMethods":true, - "methods":[{"name":"setValue","parameterTypes":["java.lang.Object"] }] -}, -{ - "name":"javafx.scene.control.ContentDisplay", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.scene.control.Control", - "queryAllDeclaredMethods":true -}, -{ - "name":"javafx.scene.control.CustomMenuItem", - "queryAllDeclaredMethods":true -}, -{ - "name":"javafx.scene.control.Label", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.control.Labeled", - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"setAlignment","parameterTypes":["javafx.geometry.Pos"] }, - {"name":"setContentDisplay","parameterTypes":["javafx.scene.control.ContentDisplay"] }, - {"name":"setGraphic","parameterTypes":["javafx.scene.Node"] }, - {"name":"setMnemonicParsing","parameterTypes":["boolean"] }, - {"name":"setText","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"javafx.scene.control.Menu", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"getItems","parameterTypes":[] } - ] -}, -{ - "name":"javafx.scene.control.MenuBar", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"getMenus","parameterTypes":[] } - ] -}, -{ - "name":"javafx.scene.control.MenuItem", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"getId","parameterTypes":[] }, - {"name":"setAccelerator","parameterTypes":["javafx.scene.input.KeyCombination"] }, - {"name":"setDisable","parameterTypes":["boolean"] }, - {"name":"setId","parameterTypes":["java.lang.String"] }, - {"name":"setMnemonicParsing","parameterTypes":["boolean"] }, - {"name":"setOnAction","parameterTypes":["javafx.event.EventHandler"] }, - {"name":"setText","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"javafx.scene.control.RadioMenuItem", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setSelected","parameterTypes":["boolean"] }, - {"name":"setToggleGroup","parameterTypes":["javafx.scene.control.ToggleGroup"] } - ] -}, -{ - "name":"javafx.scene.control.ScrollPane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setContent","parameterTypes":["javafx.scene.Node"] }, - {"name":"setFitToHeight","parameterTypes":["boolean"] }, - {"name":"setFitToWidth","parameterTypes":["boolean"] } - ] -}, -{ - "name":"javafx.scene.control.SeparatorMenuItem", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.control.Slider", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setBlockIncrement","parameterTypes":["double"] }, - {"name":"setMajorTickUnit","parameterTypes":["double"] }, - {"name":"setMax","parameterTypes":["double"] }, - {"name":"setMinorTickCount","parameterTypes":["int"] }, - {"name":"setShowTickLabels","parameterTypes":["boolean"] }, - {"name":"setShowTickMarks","parameterTypes":["boolean"] }, - {"name":"setSnapToTicks","parameterTypes":["boolean"] }, - {"name":"setValue","parameterTypes":["double"] } - ] -}, -{ - "name":"javafx.scene.control.SplitPane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"getItems","parameterTypes":[] }, - {"name":"setDividerPositions","parameterTypes":["double[]"] } - ] -}, -{ - "name":"javafx.scene.control.TabPane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setTabClosingPolicy","parameterTypes":["javafx.scene.control.TabPane$TabClosingPolicy"] } - ] -}, -{ - "name":"javafx.scene.control.TabPane$TabClosingPolicy", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.scene.control.ToggleGroup", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.control.ToolBar", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"getItems","parameterTypes":[] } - ] -}, -{ - "name":"javafx.scene.control.TreeItem" -}, -{ - "name":"javafx.scene.control.TreeView", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javafx.scene.effect.Effect" -}, -{ - "name":"javafx.scene.image.Image" -}, -{ - "name":"javafx.scene.image.ImageView", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setFitHeight","parameterTypes":["double"] }, - {"name":"setFitWidth","parameterTypes":["double"] }, - {"name":"setImage","parameterTypes":["javafx.scene.image.Image"] } - ] -}, -{ - "name":"javafx.scene.input.KeyCode", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.scene.input.KeyCodeCombination", - "queryAllPublicMethods":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["javafx.scene.input.KeyCode","javafx.scene.input.KeyCombination$ModifierValue","javafx.scene.input.KeyCombination$ModifierValue","javafx.scene.input.KeyCombination$ModifierValue","javafx.scene.input.KeyCombination$ModifierValue","javafx.scene.input.KeyCombination$ModifierValue"] }] -}, -{ - "name":"javafx.scene.input.KeyCombination$ModifierValue", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.scene.layout.AnchorPane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setBottomAnchor","parameterTypes":["javafx.scene.Node","java.lang.Double"] }, - {"name":"setLeftAnchor","parameterTypes":["javafx.scene.Node","java.lang.Double"] }, - {"name":"setRightAnchor","parameterTypes":["javafx.scene.Node","java.lang.Double"] }, - {"name":"setTopAnchor","parameterTypes":["javafx.scene.Node","java.lang.Double"] } - ], - "queriedMethods":[ - {"name":"getBottomAnchor","parameterTypes":["javafx.scene.Node"] }, - {"name":"getLeftAnchor","parameterTypes":["javafx.scene.Node"] }, - {"name":"getRightAnchor","parameterTypes":["javafx.scene.Node"] }, - {"name":"getTopAnchor","parameterTypes":["javafx.scene.Node"] } - ] -}, -{ - "name":"javafx.scene.layout.BorderPane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setAlignment","parameterTypes":["javafx.scene.Node","javafx.geometry.Pos"] }, - {"name":"setBottom","parameterTypes":["javafx.scene.Node"] }, - {"name":"setCenter","parameterTypes":["javafx.scene.Node"] }, - {"name":"setTop","parameterTypes":["javafx.scene.Node"] } - ], - "queriedMethods":[{"name":"getAlignment","parameterTypes":["javafx.scene.Node"] }] -}, -{ - "name":"javafx.scene.layout.HBox", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setAlignment","parameterTypes":["javafx.geometry.Pos"] }, - {"name":"setFillHeight","parameterTypes":["boolean"] }, - {"name":"setHgrow","parameterTypes":["javafx.scene.Node","javafx.scene.layout.Priority"] }, - {"name":"setMargin","parameterTypes":["javafx.scene.Node","javafx.geometry.Insets"] } - ], - "queriedMethods":[{"name":"getHgrow","parameterTypes":["javafx.scene.Node"] }] -}, -{ - "name":"javafx.scene.layout.Pane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"getChildren","parameterTypes":[] } - ] -}, -{ - "name":"javafx.scene.layout.Priority", - "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"javafx.scene.layout.Region", - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"setMaxHeight","parameterTypes":["double"] }, - {"name":"setMinHeight","parameterTypes":["double"] }, - {"name":"setPadding","parameterTypes":["javafx.geometry.Insets"] }, - {"name":"setPrefHeight","parameterTypes":["double"] }, - {"name":"setPrefWidth","parameterTypes":["double"] } - ] -}, -{ - "name":"javafx.scene.layout.StackPane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setAlignment","parameterTypes":["javafx.scene.Node","javafx.geometry.Pos"] }, - {"name":"setMargin","parameterTypes":["javafx.scene.Node","javafx.geometry.Insets"] } - ], - "queriedMethods":[{"name":"getAlignment","parameterTypes":["javafx.scene.Node"] }] -}, -{ - "name":"javafx.scene.layout.TilePane", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setAlignment","parameterTypes":["javafx.geometry.Pos"] }, - {"name":"setAlignment","parameterTypes":["javafx.scene.Node","javafx.geometry.Pos"] }, - {"name":"setHgap","parameterTypes":["double"] }, - {"name":"setVgap","parameterTypes":["double"] } - ], - "queriedMethods":[{"name":"getAlignment","parameterTypes":["javafx.scene.Node"] }] -}, -{ - "name":"javafx.scene.layout.VBox", - "queryAllDeclaredMethods":true, - "queryAllPublicConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setVgrow","parameterTypes":["javafx.scene.Node","javafx.scene.layout.Priority"] } - ], - "queriedMethods":[{"name":"getVgrow","parameterTypes":["javafx.scene.Node"] }] -}, -{ - "name":"javafx.scene.shape.LineTo" -}, -{ - "name":"javafx.scene.shape.MoveTo" -}, -{ - "name":"javafx.scene.shape.Path" -}, -{ - "name":"javafx.scene.shape.PathElement" -}, -{ - "name":"javafx.scene.shape.Rectangle" -}, -{ - "name":"javafx.scene.shape.SVGPath" -}, -{ - "name":"javafx.scene.shape.Shape" -}, -{ - "name":"javafx.scene.text.Font" -}, -{ - "name":"javafx.scene.text.Text" -}, -{ - "name":"javafx.scene.transform.Transform" -}, -{ - "name":"javafx.scene.web.WebView" -}, -{ - "name":"javafx.stage.PopupWindow" -}, -{ - "name":"javafx.stage.Stage" -}, -{ - "name":"javafx.stage.Window" -}, -{ - "name":"javafx.util.StringConverter" -}, -{ - "name":"javafx.util.converter.IntegerStringConverter" -}, -{ - "name":"javax.security.auth.x500.X500Principal", - "fields":[{"name":"thisX500Name"}], - "queriedMethods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] -}, -{ - "name":"javax.swing.tree.TreeModel" -}, -{ - "name":"org.ibex.nestedvm.RuntimeCompiler", - "queriedMethods":[{"name":"compile","parameterTypes":["org.ibex.nestedvm.util.Seekable","java.lang.String","java.lang.String"] }] -}, -{ - "name":"org.ibex.nestedvm.UnixRuntime" -}, -{ - "name":"org.ibex.nestedvm.util.Platform" -}, -{ - "name":"org.ibex.nestedvm.util.Platform$Jdk14", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.ibex.nestedvm.util.Seekable" -}, -{ - "name":"org.lwjgl.system.CustomBuffer", - "fields":[ - {"name":"capacity"}, - {"name":"container"}, - {"name":"limit"}, - {"name":"mark"}, - {"name":"position"} - ] -}, -{ - "name":"org.lwjgl.system.Pointer$Default", - "fields":[{"name":"address"}] -}, -{ - "name":"sun.misc.Unsafe", - "allDeclaredFields":true -}, -{ - "name":"sun.security.pkcs12.PKCS12KeyStore", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.pkcs12.PKCS12KeyStore$DualFormatPKCS12", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.DSA$SHA224withDSA", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.DSA$SHA256withDSA", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.JavaKeyStore$JKS", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.MD5", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.NativePRNG", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.SHA", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.SHA2$SHA224", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.SHA2$SHA256", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.SHA5$SHA384", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.SHA5$SHA512", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.X509Factory", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.rsa.PSSParameters", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.rsa.RSAKeyFactory$Legacy", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.rsa.RSAPSSSignature", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.rsa.RSASignature$SHA224withRSA", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.x509.AuthorityInfoAccessExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.AuthorityKeyIdentifierExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.BasicConstraintsExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.CRLDistributionPointsExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.CertificatePoliciesExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.ExtendedKeyUsageExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.IssuerAlternativeNameExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.KeyUsageExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.NetscapeCertTypeExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.PrivateKeyUsageExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.SubjectAlternativeNameExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -}, -{ - "name":"sun.security.x509.SubjectKeyIdentifierExtension", - "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] -} + { + "name": "jace.LawlessLegends", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "name": "jace.JaceUIController", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "name": "jace.ui.MetacheatUI", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "name": "jace.core.Computer", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "jace.lawless.LawlessComputer", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "javafx.application.Application", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "javafx.scene.Scene", + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "javafx.stage.Stage", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "javafx.fxml.FXMLLoader", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "java.lang.reflect.Method", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "java.lang.Class", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "java.util.ArrayList", + "allDeclaredConstructors": true, + "allPublicConstructors": true + } ] diff --git a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/resource-config.json b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/resource-config.json index dfeaf7e3..bf387760 100644 --- a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/resource-config.json +++ b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/resource-config.json @@ -1,105 +1,24 @@ { - "resources":{ - "includes":[ - { - "pattern":".*\\.bin$" - }, - { - "pattern":".*\\.bmp$" - }, - { - "pattern":".*\\.css$" - }, - { - "pattern":".*\\.dat$" - }, - { - "pattern":".*\\.frag$" - }, - { - "pattern":".*\\.fxml$" - }, - { - "pattern":".*\\.gif$" - }, - { - "pattern":".*\\.gls$" - }, - { - "pattern":".*\\.html$" - }, - { - "pattern":".*\\.jpeg$" - }, - { - "pattern":".*\\.jpg$" - }, - { - "pattern":".*\\.js$" - }, - { - "pattern":".*\\.json$" - }, - { - "pattern":".*\\.license$" - }, - { - "pattern":".*\\.ogg$" - }, - { - "pattern":".*\\.mtl$" - }, - { - "pattern":".*\\.obj$" - }, - { - "pattern":".*\\.png$" - }, - { - "pattern":".*\\.raw$" - }, - { - "pattern":".*\\.rom$" - }, - { - "pattern":".*\\.ttf$" - }, - { - "pattern":".*\\.txt$" - }, - { - "pattern":".*\\.vert$" - }, - { - "pattern":".*\\.xml$" - }, - { - "pattern":"\\QMETA-INF/macos/x64/org/lwjgl/liblwjgl.dylib.sha1\\E" - }, - { - "pattern":"\\QMETA-INF/macos/x64/org/lwjgl/openal/libopenal.dylib.sha1\\E" - }, - { - "pattern":"\\QMETA-INF/macos/x64/org/lwjgl/stb/liblwjgl_stb.dylib.sha1\\E" - }, - { - "pattern":"\\Qmacos/x64/org/lwjgl/liblwjgl.dylib\\E" - }, - { - "pattern":"\\Qmacos/x64/org/lwjgl/openal/libopenal.dylib\\E" - }, - { - "pattern":"\\Qmacos/x64/org/lwjgl/stb/liblwjgl_stb.dylib\\E" - } - ]}, - "bundles":[ - { - "name":"com.sun.javafx.tk.quantum.QuantumMessagesBundle", - "locales":[""] - }, - { - "name":"com/sun/javafx/scene/control/skin/resources/controls", - "locales":[""] - } + "resources": { + "includes": [ + {"pattern": "\\QMETA-INF/services/\\E.*"}, + {"pattern": "\\Qfxml/\\E.*\\.fxml$"}, + {"pattern": "\\Qjace/data/\\E.*\\.png$"}, + {"pattern": "\\Qjace/data/\\E.*\\.gif$"}, + {"pattern": "\\Qjace/data/\\E.*\\.rom$"}, + {"pattern": "\\Qjace/data/\\E.*\\.bin$"}, + {"pattern": "\\Qjace/data/\\E.*\\.txt$"}, + {"pattern": "\\Qjace/data/\\E.*\\.ogg$"}, + {"pattern": "\\Qicons/\\E.*\\.png$"}, + {"pattern": "\\Qcss/\\E.*\\.css$"}, + {"pattern": "\\Qcom/sun/javafx/\\E.*"}, + {"pattern": "\\Qcom/sun/prism/\\E.*"}, + {"pattern": ".*\\.properties$"}, + {"pattern": "META-INF/MANIFEST.MF"} + ] + }, + "bundles": [ + {"name": "jace.lawless.Message", "locales": ["en", "en_US"]}, + {"name": "com.sun.javafx.tk.quantum.QuantumMessagesBundle", "locales": ["en", "en_US"]} ] } diff --git a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/serialization-config.json b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/serialization-config.json index b74bf575..71aab123 100644 --- a/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/serialization-config.json +++ b/Platform/Apple/tools/jace/src/main/resources/META-INF/native-image/serialization-config.json @@ -23,5 +23,7 @@ } ], "lambdaCapturingTypes":[ + ], + "proxies":[ ] } diff --git a/Platform/Apple/tools/jace/src/main/resources/fxml/JaceUI.fxml b/Platform/Apple/tools/jace/src/main/resources/fxml/JaceUI.fxml index 5432eae9..720df9fd 100644 --- a/Platform/Apple/tools/jace/src/main/resources/fxml/JaceUI.fxml +++ b/Platform/Apple/tools/jace/src/main/resources/fxml/JaceUI.fxml @@ -18,8 +18,9 @@ + - + @@ -90,7 +91,7 @@ - + @@ -98,9 +99,11 @@ + + - + @@ -113,8 +116,18 @@ - diff --git a/Platform/Apple/tools/jace/src/main/resources/jace/data/icon.icns b/Platform/Apple/tools/jace/src/main/resources/jace/data/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..3b3e9fab70226384a000deb3fc584487650b5f68 GIT binary patch literal 194433 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