[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.java]\nindent_style = tab\nindent_size = 4\ntab_width = 4\n\n[*.gradle]\nindent_style = space\nindent_size = 4\n\n[*.{json,toml,yml,yaml,xml}]\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".gitignore",
    "content": "# exclude all\n/*\n\n# include important folders\n# need gradle\n!gradle/\n!bintray/\n!gradlew\n!gradlew.bat\n!build.gradle\n!build.properties\n!gradle.properties\n!settings.gradle\n!.github/\n\n# include markdowns\n!README.md\n!LICENSE\n!LICENSE.md\n!COPYING.txt\n\n# include sourcecode\n!src/\nsrc/generated/resources/.cache\n\n# include git important files\n!.gitmodules\n!.gitignore\n!.editorconfig\n\n# code format to reduce noise in git commits\n!codeformat/\n\n# include web files\n!web/\n"
  },
  {
    "path": "LICENSE.md",
    "content": "# All Rights Reserved License\n\nCopyright (c) 2025 P3pp3rF1y\n\nThis project is licensed under **All Rights Reserved (ARR).**\n\n## 1. License Scope\n- All **source code, assets, and other project files** are licensed under **All Rights Reserved (ARR)**.\n- **Translations** are freely available with **no license restrictions** and may be used, shared, modified, or distributed without limitation.\n\n## 2. No Redistribution\nYou may **not** copy, distribute, rehost, sublicense, or share this software in any form, including modified or unmodified versions.\n\n## 3. No Unauthorized Modification for Public Use\nYou **may modify** the software **only for personal, non-commercial use**.  \nYou **may not** share, distribute, or publish modifications.\n\n## 4. No Commercial Use\nYou may **not** use this software, in whole or in part, for any commercial purpose without explicit written permission from the author.\n\n## 5. No Unauthorized Forks or Derivative Works\n- You **may not** create forks, derivative projects, or adaptations of this software without explicit permission from the author.\n- **Exception:** You **may fork this repository on GitHub** **solely for the purpose of submitting pull requests (PRs) to this project.**\n- Any other use of forks outside of PR contributions requires explicit permission.\n\n## 6. Limited Code Reuse for Inspiration\n- You **may reference** or **be inspired by** this code for your own work.\n- You **may reuse small snippets** (less than **20 lines**) in your own projects **as long as proper attribution is given**.\n- You **may not copy large portions, entire files, or substantial code structures** without explicit permission from the author.\n- If you are unsure whether your use qualifies as \"small reuse,\" please contact the author.\n\n## 7. Disclaimer of Liability\nThis software is provided **\"as is\"**, without any express or implied warranties.  \nThe author **is not responsible for any damages**, including but not limited to:\n- Software crashes, bugs, or data corruption.\n- Security vulnerabilities or unauthorized modifications.\n- Performance issues, overheating, or hardware damage.\n- Legal issues arising from misuse of the software.\n\nUse at your own risk.\n\n---\n\n## **Contact**\nFor licensing inquiries, please contact me via GitHub:  \n🔗 **[GitHub Profile](https://github.com/P3pp3rF1y)**"
  },
  {
    "path": "README.md",
    "content": "# SophisticatedBackpacks\n\nAny feature requests / suggestions are welcome in [Discussions](https://github.com/P3pp3rF1y/SophisticatedBackpacks/discussions)\n"
  },
  {
    "path": "build.gradle",
    "content": "plugins {\n    id 'java-library'\n    id 'idea'\n    id 'maven-publish'\n    id 'net.neoforged.moddev' version '1.0.14'\n    id \"org.sonarqube\" version \"5.0.0.4638\"\n    id \"net.darkhax.curseforgegradle\" version \"1.1.15\"\n    id \"com.modrinth.minotaur\" version \"2.+\"\n    id \"com.diffplug.spotless\" version \"7.0.4\"\n}\n\nidea {\n    module {\n        downloadJavadoc = true\n        downloadSources = true\n    }\n}\n\nspotless {\n    enforceCheck = false\n    def spotlessFiles = findProperty(\"spotlessFiles\")\n\n    java {\n        target spotlessFiles == null ? \"src/*/java/**/*.java\" : spotlessFiles.toString().split(/\\s*,\\s*/).findAll { it.endsWith(\".java\") }\n\n        eclipse().configFile \"$projectDir/codeformat/eclipse-java-format.xml\"\n        importOrder \"\", \"javax\", \"java\"\n        removeUnusedImports()\n        trimTrailingWhitespace()\n        endWithNewline()\n    }\n\n    groovyGradle {\n        target spotlessFiles == null ? \"*.gradle\" : spotlessFiles.toString().split(/\\s*,\\s*/).findAll { it.endsWith(\".gradle\") }\n        trimTrailingWhitespace()\n        endWithNewline()\n    }\n}\n\nif (findProject(':SophisticatedCore') != null) {\n    evaluationDependsOn(':SophisticatedCore')\n}\n\nversion = \"${project.minecraft_version}-${project.mod_version}.${getBuildNumber()}${getStable()}\"\ngroup = mod_group_id\n\nrepositories {\n    mavenCentral()\n    maven {\n        url \"https://minecraft.curseforge.com/api/maven/\"\n        content {\n            includeGroup \"curse.maven\"\n        }\n    }\n    maven {\n        url \"https://www.cursemaven.com\"\n        content {\n            includeGroup \"curse.maven\"\n        }\n    }\n    maven {\n        url \"https://maven.blamejared.com/\"\n        content {\n            includeGroup \"mezz.jei\"\n        }\n    }\n    maven {\n        name = \"GitHubPackages\"\n        url = uri(\"https://maven.pkg.github.com/p3pp3rf1y/sophisticatedcore\")\n        credentials {\n            username = System.getenv(\"GITHUB_ACTOR\")\n            password = System.getenv(\"GITHUB_TOKEN\")\n        }\n        content {\n            includeModule(\"net.p3pp3rf1y\", \"sophisticatedcore\")\n        }\n    }\n    maven {\n        name = \"TerraformersMC\"\n        url = \"https://maven.terraformersmc.com/\"\n        content {\n            includeGroup \"dev.emi\"\n        }\n    }\n    maven {\n        url = \"https://maven.shedaniel.me/\"\n        content {\n            includeGroup \"dev.architectury\"\n            includeGroup \"me.shedaniel\"\n            includeGroup \"me.shedaniel.cloth\"\n        }\n    }\n    maven {\n        url = 'https://maven.wispforest.io/releases'\n        content {\n            includeGroup \"io.wispforest\"\n        }\n    }\n}\n\nbase {\n    archivesName = mod_id\n}\n\njava.toolchain.languageVersion = JavaLanguageVersion.of(21)\n\nneoForge {\n    version = project.neo_version\n\n    parchment {\n        mappingsVersion = project.parchment_mappings_version\n        minecraftVersion = project.parchment_minecraft_version\n    }\n\n    accessTransformers = project.files('src/main/resources/META-INF/accesstransformer.cfg')\n\n    runs {\n        configureEach {\n            systemProperty 'forge.logging.markers', 'REGISTRIES'\n            systemProperty 'forge.logging.console.level', 'debug'\n            systemProperty 'mixin.env.disableRefMap', 'true'\n        }\n\n        client {\n            client()\n        }\n\n        client2 {\n            client()\n\n            programArguments.addAll '--username', 'Dev2'\n        }\n\n        server {\n            server()\n            programArgument '--nogui'\n        }\n\n        data {\n            data()\n            programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()\n        }\n    }\n\n    mods {\n        \"${mod_id}\" {\n            sourceSet(sourceSets.main)\n        }\n        if (findProject(':SophisticatedCore') != null) {\n            \"sophisticatedcore\" {\n                sourceSet(project(':SophisticatedCore').sourceSets.main)\n            }\n        }\n    }\n\n    unitTest {\n        enable()\n        testedMod = mods.\"${mod_id}\"\n    }\n}\n\nsourceSets.main.resources {\n    srcDir 'src/generated/resources'\n}\n\nconfigurations {\n    runtimeClasspath.extendsFrom localRuntime\n}\n\ndependencies {\n    if (findProject(':SophisticatedCore') != null) {\n        dependencies.implementation project(':SophisticatedCore')\n    } else {\n        dependencies.implementation(\"net.p3pp3rf1y:sophisticatedcore:${sc_version}\") {\n            transitive = false\n        }\n        dependencies.testImplementation(\"net.p3pp3rf1y:sophisticatedcore:${sc_version}\") {\n            transitive = false\n        }\n    }\n\n//    implementation files('/libs/sophisticatedcore-1.20.4-0.6.18.-SNAPSHOT.jar')\n\n    compileOnly \"mezz.jei:jei-${jei_mc_version}:${jei_version}\"\n    localRuntime \"mezz.jei:jei-${jei_mc_version}:${jei_version}\"\n    compileOnly \"dev.emi:emi-neoforge:${emi_version}:api\"\n    localRuntime \"dev.emi:emi-neoforge:${emi_version}\"\n    compileOnly \"me.shedaniel:RoughlyEnoughItems-api-neoforge:${rei_version}\"\n    compileOnly \"me.shedaniel:RoughlyEnoughItems-default-plugin-neoforge:${rei_version}\"\n    localRuntime \"me.shedaniel:RoughlyEnoughItems-neoforge:${rei_version}\"\n    localRuntime \"me.shedaniel:RoughlyEnoughItems-default-plugin-neoforge:${rei_version}\"\n    compileOnly \"curse.maven:curios-309927:${curios_cf_file_id}\"\n    localRuntime \"curse.maven:curios-309927:${curios_cf_file_id}\"\n    compileOnly \"curse.maven:balm-531761:${balm_cf_file_id}\"\n    localRuntime \"curse.maven:balm-531761:${balm_cf_file_id}\"\n    compileOnly \"curse.maven:craftingtweaks-233071:${crafting_tweaks_cf_file_id}\"\n    localRuntime \"curse.maven:craftingtweaks-233071:${crafting_tweaks_cf_file_id}\"\n    dependencies.compileOnly(\"io.wispforest:accessories-neoforge:${accessories_version}\") {\n        transitive = false\n    }\n    compileOnly \"curse.maven:chipped-456956:${chipped_cf_file_id}\"\n    localRuntime \"curse.maven:chipped-456956:${chipped_cf_file_id}\"\n    compileOnly \"curse.maven:athena-841890:${athena_cf_file_id}\"\n    localRuntime \"curse.maven:athena-841890:${athena_cf_file_id}\"\n    compileOnly \"curse.maven:resourcefullib-570073:${resourcefullib_cf_file_id}\"\n    localRuntime \"curse.maven:resourcefullib-570073:${resourcefullib_cf_file_id}\"\n    compileOnly \"curse.maven:sawmill-964817:${sawmill_cf_file_id}\"\n    localRuntime \"curse.maven:sawmill-964817:${sawmill_cf_file_id}\"\n    compileOnly \"curse.maven:moonlightlib-499980:${moonlightlib_cf_file_id}\"\n    localRuntime \"curse.maven:moonlightlib-499980:${moonlightlib_cf_file_id}\"\n\n    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.+'\n    testImplementation \"org.mockito:mockito-core:5.12.+\"\n    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.+'\n/*\n    compileOnly \"vazkii.botania:Botania:${botania_version}:api\")\n    runtimeOnly \"vazkii.botania:Botania:${botania_version}\")\n    compileOnly \"vazkii.patchouli:Patchouli:${patchouli_version}:api\")\n    runtimeOnly \"vazkii.patchouli:Patchouli:${patchouli_version}\")\n*/\n}\n\nvar generateModMetadata = tasks.register(\"generateModMetadata\", ProcessResources) {\n    var replaceProperties = [\n            minecraft_version   : minecraft_version, minecraft_version_range: minecraft_version_range,\n            neo_version         : neo_version, neo_version_range: neo_version_range,\n            loader_version_range: loader_version_range,\n            mod_id              : mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version,\n            mod_issue_tracker_url: mod_issue_tracker_url, mod_logo_file: mod_logo_file, mod_credits: mod_credits,\n            mod_authors         : mod_authors, mod_description: mod_description, mod_display_url: mod_display_url,\n            mod_full_version    : \"${project.mod_version}.${getBuildNumber()}${getStable()}\",\n            sc_version          :\"[\" + sc_version.substring(sc_version.indexOf(\"-\") + 1, sc_version.lastIndexOf(',')) + \",)\"\n    ]\n    inputs.properties replaceProperties\n\n    expand replaceProperties\n    from \"src/main/templates\"\n    into \"build/generated/sources/modMetadata\"\n}\n\n// Include the output of \"generateModMetadata\" as an input directory for the build\n// this works with both building through Gradle and the IDE.\nsourceSets.main.resources.srcDir generateModMetadata\n// To avoid having to run \"generateModMetadata\" manually, make it run on every project reload\nneoForge.ideSyncTask generateModMetadata\n\ndef runRecipeViewerRegressionTests = gradle.startParameter.taskNames.any { it == 'recipeViewerRegressionTest' || it == \"${project.path}:recipeViewerRegressionTest\" } || project.hasProperty('recipeViewerRegression')\n\ntest {\n    inputs.property('recipeViewerRegressionMode', runRecipeViewerRegressionTests)\n    useJUnitPlatform {\n        if (runRecipeViewerRegressionTests) {\n            includeTags 'recipeViewerRegression'\n        } else {\n            excludeTags 'recipeViewerRegression'\n        }\n    }\n    testLogging {\n        events \"passed\", \"skipped\", \"failed\"\n    }\n}\n\ntasks.register('recipeViewerRegressionTest') {\n    description = 'Runs recipe viewer regression tests.'\n    group = 'verification'\n    dependsOn test\n}\n\ntasks.withType(JavaCompile).configureEach {\n    options.encoding = 'UTF-8'\n}\n\njar {\n    manifest {\n        attributes([\"Specification-Title\"     : project.mod_id,\n                    \"Specification-Vendor\"    : project.mod_id,\n                    \"Specification-Version\"   : \"1\",\n                    \"Implementation-Title\"    : project.name,\n                    \"Implementation-Version\"  : \"${version}\",\n                    \"Implementation-Vendor\"   : project.mod_id,\n                    \"Implementation-Timestamp\": new Date().format(\"yyyy-MM-dd'T'HH:mm:ssZ\")],)\n    }\n}\n\n\nstatic def getBuildNumber() {\n    if (System.getenv(\"GITHUB_RUN_NUMBER\") != null) {\n        return System.getenv(\"GITHUB_RUN_NUMBER\").toString()\n    }\n    return \"\"\n}\n\nstatic def getStable() {\n    if (System.getenv(\"GITHUB_REF\") == null || System.getenv(\"GITHUB_REF\").endsWith(\"-dev\")) {\n        return \"-SNAPSHOT\"\n    }\n    return \"\"\n}\n\npublishing {\n    repositories {\n        maven {\n            name = \"GitHubPackages\"\n            url = uri(\"${github_package_url}\")\n            credentials {\n                username = System.getenv(\"GITHUB_ACTOR\")\n                password = System.getenv(\"GITHUB_TOKEN\")\n            }\n        }\n    }\n    publications {\n        gpr(MavenPublication) {\n            artifactId = mod_id\n            from(components.java)\n        }\n    }\n}\n\nsonar {\n    properties {\n        property \"sonar.organization\", \"p3pp3rf1y-github\"\n        property \"sonar.projectKey\", \"${sonar_project_key}\"\n    }\n}\n\ndef sharedChangelogScript = file('../../MultiWorkspace1.20.1/gradle/changelog.gradle')\napply from: sharedChangelogScript.exists() ? sharedChangelogScript : 'https://raw.githubusercontent.com/P3pp3rF1y/MultiWorkspace/1.20.x/gradle/changelog.gradle'\n\ntask curseforge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) {\n    dependsOn 'generateChangelog'\n\n    apiToken = System.getenv(\"CURSEFORGE_TOKEN\")\n    def mainFile = upload(project.curseforge_id, file(\"${project.buildDir}/libs/${archivesBaseName}-${version}.jar\"))\n    mainFile.changelogType = 'markdown'\n    mainFile.changelog = {project.ext.changelog}\n    mainFile.addModLoader('NeoForge')\n    mainFile.releaseType = \"${release_type}\"\n    \"${release_versions}\".split(',').each {\n        mainFile.addGameVersion(\"${it}\")\n    }\n    mainFile.addRequirement('sophisticated-core')\n    mainFile.addOptional('jei')\n    mainFile.addOptional('curios')\n    mainFile.addOptional('crafting-tweaks')\n    mainFile.addOptional('trashslot')\n    mainFile.addOptional('item-borders')\n    mainFile.addOptional('chipped')\n    mainFile.addOptional('sawmill')\n    onlyIf { !project.ext.changelog.isEmpty() }\n}\n\nmodrinth {\n    token = System.getenv(\"MODRINTH_TOKEN\")\n    projectId = \"${modrinth_project_id}\"\n    versionType = \"${release_type}\"\n    uploadFile = jar\n    gameVersions = \"${release_versions}\".split(',').collect {e -> e}\n    loaders = [\"neoforge\"]\n    dependencies {\n        required.project \"sophisticated-core\"\n        optional.project \"jei\"\n        optional.project \"crafting-tweaks\"\n        optional.project \"curios\"\n        optional.project \"trashslot\"\n        optional.project \"item-borders\"\n        optional.project \"chipped\"\n        optional.project \"universal-sawmill\"\n    }\n    changelog = provider {\n        project.ext.changelog\n    }\n}\ntasks.modrinth {\n    dependsOn(tasks.generateChangelog)\n    onlyIf { !project.ext.changelog.isEmpty() }\n}\n\ntask printVersionName {\n    println \"version:\" + project.version\n}\n"
  },
  {
    "path": "gradle.properties",
    "content": "org.gradle.jvmargs=-Xmx3G\norg.gradle.daemon=true\norg.gradle.parallel=true\norg.gradle.caching=true\norg.gradle.debug=false\n\nparchment_minecraft_version=1.21\nparchment_mappings_version=2024.11.10\nminecraft_version=1.21.1\nminecraft_version_range=[1.21.1,1.21.2)\nneo_version=21.1.80\nneo_version_range=[21.1.0,)\nloader_version_range=[4,)\n\nmod_id=sophisticatedbackpacks\nmod_name=Sophisticated Backpacks\nmod_license=All Rights Reserved\nmod_version=3.25.45\nmod_group_id=net.p3pp3rf1y\nmod_authors=P3pp3rF1y, Ridanisaurus\nmod_description=Fancy and functional backpacks.\nmod_credits=Created by P3pp3rF1y and art by Ridanisaurus.\nmod_logo_file=logo.png\nmod_display_url=https://www.curseforge.com/minecraft/mc-mods/sophisticated-backpacks\nmod_issue_tracker_url=https://github.com/P3pp3rF1y/SophisticatedBackpacks/issues\nsonar_project_key=sophisticatedbackpacks:SophisticatedBackpacks\ngithub_package_url=https://maven.pkg.github.com/P3pp3rF1y/SophisticatedBackpacks\n\njei_mc_version=1.21.1-neoforge\njei_version=19.21.0.247\nemi_version=1.1.22+1.21.1\nrei_version=16.0.799\n#botania_version=1.19.2-439-FORGE-SNAPSHOT\n#patchouli_version=1.19.2-78-SNAPSHOT\nbalm_cf_file_id=5525369\ncrafting_tweaks_cf_file_id=5426925\naccessories_version=1.1.0-beta.52+1.21.1\nchipped_cf_file_id=5506938\nresourcefullib_cf_file_id=5483169\nathena_cf_file_id=5431579\ncurios_cf_file_id=6076118\nsawmill_cf_file_id=6119477\nmoonlightlib_cf_file_id=6224057\nsc_version=[1.21.1-1.4.39,1.21.2)\n\n#publish\ncurseforge_id=422301\nrelease_type=release\nrelease_versions=1.21.1\nmodrinth_project_id=TyCTlI4b\n"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn ( ) {\n    echo \"$*\"\n}\n\ndie ( ) {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\nesac\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched.\nif $cygwin ; then\n    [ -n \"$JAVA_HOME\" ] && JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\nfi\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >&-\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >&-\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules\nfunction splitJvmOpts() {\n    JVM_OPTS=(\"$@\")\n}\neval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\nJVM_OPTS[${#JVM_OPTS[*]}]=\"-Dorg.gradle.appname=$APP_BASE_NAME\"\n\nexec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem  Gradle startup script for Windows\n@rem\n@rem ##########################################################################\n\n@rem Set local scope for the variables with windows NT shell\nif \"%OS%\"==\"Windows_NT\" setlocal\n\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nset DEFAULT_JVM_OPTS=\n\nset DIRNAME=%~dp0\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\nset APP_BASE_NAME=%~n0\nset APP_HOME=%DIRNAME%\n\n@rem Find java.exe\nif defined JAVA_HOME goto findJavaFromJavaHome\n\nset JAVA_EXE=java.exe\n%JAVA_EXE% -version >NUL 2>&1\nif \"%ERRORLEVEL%\" == \"0\" goto init\n\necho.\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:findJavaFromJavaHome\nset JAVA_HOME=%JAVA_HOME:\"=%\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\n\nif exist \"%JAVA_EXE%\" goto init\n\necho.\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:init\n@rem Get command-line arguments, handling Windowz variants\n\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\nif \"%@eval[2+2]\" == \"4\" goto 4NT_args\n\n:win9xME_args\n@rem Slurp the command line arguments.\nset CMD_LINE_ARGS=\nset _SKIP=2\n\n:win9xME_args_slurp\nif \"x%~1\" == \"x\" goto execute\n\nset CMD_LINE_ARGS=%*\ngoto execute\n\n:4NT_args\n@rem Get arguments from the 4NT Shell from JP Software\nset CMD_LINE_ARGS=%$\n\n:execute\n@rem Setup the command line\n\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n\n@rem Execute Gradle\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\n\n:end\n@rem End local scope for the variables with windows NT shell\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\n\n:fail\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\nrem the _cmd.exe /c_ return code!\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\nexit /b 1\n\n:mainEnd\nif \"%OS%\"==\"Windows_NT\" endlocal\n\n:omega\n"
  },
  {
    "path": "settings.gradle",
    "content": "pluginManagement {\n    repositories {\n        mavenLocal()\n        gradlePluginPortal()\n        maven { url = 'https://maven.neoforged.net/releases' }\n    }\n}\n\nplugins {\n    id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0'\n}\n\n"
  }
]