{"id":15014865,"url":"https://github.com/juuxel/loom-vineflower","last_synced_at":"2025-04-12T08:26:00.755Z","repository":{"id":37078049,"uuid":"376552653","full_name":"Juuxel/loom-vineflower","owner":"Juuxel","description":"A Gradle plugin that adds Vineflower as a Loom decompiler.","archived":false,"fork":false,"pushed_at":"2023-07-11T22:19:04.000Z","size":499,"stargazers_count":66,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T03:33:17.212Z","etag":null,"topics":["architectury","decompiler","fabricmc","gradle","gradle-plugin","minecraft","quiltmc","vineflower"],"latest_commit_sha":null,"homepage":"https://plugins.gradle.org/plugin/io.github.juuxel.loom-vineflower","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Juuxel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-13T13:38:06.000Z","updated_at":"2025-01-14T00:26:15.000Z","dependencies_parsed_at":"2023-01-20T16:59:36.201Z","dependency_job_id":null,"html_url":"https://github.com/Juuxel/loom-vineflower","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juuxel%2Floom-vineflower","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juuxel%2Floom-vineflower/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juuxel%2Floom-vineflower/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juuxel%2Floom-vineflower/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Juuxel","download_url":"https://codeload.github.com/Juuxel/loom-vineflower/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248538638,"owners_count":21121020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architectury","decompiler","fabricmc","gradle","gradle-plugin","minecraft","quiltmc","vineflower"],"created_at":"2024-09-24T19:46:11.499Z","updated_at":"2025-04-12T08:26:00.734Z","avatar_url":"https://github.com/Juuxel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vineflower for Loom\n\n![Build status](https://img.shields.io/github/actions/workflow/status/Juuxel/loom-vineflower/build.yml?style=flat-square\u0026branch=master)\n[![Maven metadata](https://img.shields.io/maven-metadata/v/https/plugins.gradle.org/m2/io/github/juuxel/loom-vineflower/maven-metadata.xml.svg?label=latest%20plugin%20version\u0026style=flat-square\u0026color=49bfe0)][pluginportal]\n![Vineflower version](https://img.shields.io/maven-metadata/v/https/repo1.maven.org/maven2/org/vineflower/vineflower/maven-metadata.xml.svg?label=latest%20vineflower\u0026style=flat-square\u0026color=9846d6)\n\n[pluginportal]: https://plugins.gradle.org/plugin/io.github.juuxel.loom-vineflower\n\nA Loom addon that adds [Vineflower](https://github.com/Vineflower/vineflower) as a decompiler\nfor Fabric Loom and its forks (Architectury etc.).\n\n- [Version compatibility](#version-compatibility)\n- [Getting started](#getting-started)\n  - [Fabric projects](#fabric-projects)\n  - [Architectury projects](#architectury-projects)\n- [Configuration](#configuration)\n  - [Decompiler version](#decompiler-version)\n  - [Decompiler sources](#decompiler-sources)\n  - [Decompilation preferences](#decompilation-preferences)\n\n## Version compatibility\n\n| Loom variant        | Plugin ID               | Supported versions                                  |\n|---------------------|-------------------------|-----------------------------------------------------|\n| Fabric Loom         | `fabric-loom`           | 0.8, 0.9, 0.11, 0.12, 1.0, 1.1, 1.2                           |\n| Architectury Loom   | `dev.architectury.loom` | 0.7.2, 0.7.4, 0.10.0¹, 0.11.0, 0.12.0, 1.0, 1.1, 1.2 |\n| Quilt Loom          | `org.quiltmc.loom`      | 0.12, 1.0, 1.1, 1.2                                           |\n| `gg.essential.loom` | `gg.essential.loom`     | *None*²                                             |\n| Babric Loom         | `babric-loom`           | 0.12²                                               |\n| Ornithe Loom        | `ornithe-loom`          | 1.0²                                                |\n\n¹ From build 0.10.0.206 onwards  \n² Completely untested\n\nOlder versions might be compatible, but using them is unsupported. Bugs caused by outdated Loom versions will not be fixed.\n\nFor the latest Fabric Loom 0.10 versions (0.10.28+),\nuse [loom-quiltflower-mini](https://github.com/Juuxel/loom-quiltflower-mini) instead.\n\n## Getting started\n\n\u003e Note: versions before 1.7.1 required adding Cotton's maven repository,\n\u003e but LVF 1.7.1+ is available on the Gradle Plugin Portal\n\u003e like most other plugins. Versions before 1.11.0 are available under the plugin ID\n\u003e `io.github.juuxel.loom-quiltflower`.\n\n### Fabric projects\n\n1. Add Vineflower for Loom to your plugins:\n```diff\n  plugins {\n      id 'fabric-loom' version '1.2-SNAPSHOT'\n+     id 'io.github.juuxel.loom-vineflower' version '1.11.0'\n      id 'maven-publish'\n  }\n```\n\n2. Instead of `genSources`, you can now use `genSourcesWithVineflower`.\n\n### Architectury projects\n\n1. Add Vineflower for Loom to your `plugins` block:\n```diff\n  plugins {\n      id \"architectury-plugin\" version \"3.4-SNAPSHOT\"\n      id \"dev.architectury.loom\" version \"1.2-SNAPSHOT\" apply false\n+     id 'io.github.juuxel.loom-vineflower' version '1.11.0' apply false\n  }\n```\n\n2. Apply Vineflower for Loom to subprojects:\n\n```diff\n  subprojects {\n      apply plugin: \"dev.architectury.loom\"\n+     apply plugin: \"io.github.juuxel.loom-vineflower\"\n```\n\n\u003e Note: this can also be done in the subprojects' `plugins` blocks.\n\n3. Instead of `genSources`, you can now use `genSourcesWithVineflower`.\n\n## Configuration\n\n### Decompiler version\n\nYou can configure the used version of Vineflower with the `vineflower` extension (called `quiltflower` before 1.11.0\nand `loomQuiltflower` before 1.2.0):\n\n```groovy\nvineflower {\n    // This is the default; 1.4.0 and above should work\n    toolVersion.set(\"1.9.1\")\n\n    // If you're using Groovy DSL, you can also specify the version like this:\n    toolVersion = '1.9.1'\n}\n```\n\n### Decompiler brand\n\n\u003e Added in LVF 1.11.0.\n\nThis plugin supports using Vineflower versions under two names or \"brands\": Vineflower and Quiltflower.\nBy default, the brand is determined automatically from the version with versions ≤1.9.0 being Quiltflower.\n\nThe brand affects the default Maven repository for downloading Vineflower, as well as\nits dependency coordinates.\n\nThe brand can also be manually set using the `vineflower.brand` property,\nbut this should only be done if it cannot be detected automatically:\n```kotlin\nvineflower {\n    // Force the Vineflower brand.\n    brand.set(DecompilerBrand.VINEFLOWER)\n\n    // Force the Quiltflower brand.\n    brand.set(DecompilerBrand.QUILTFLOWER)\n}\n```\n\n### Decompiler sources\n\n\u003e Added in LVF 1.2.0.\n\nIn addition to specifying a version, you can also use a completely different *decompiler source*.\nThey are configured with the `vineflower.toolSource` property, or with the following methods.\n\n```kotlin\nvineflower {\n    // Downloads the wanted VF version from the official source for the decompiler version.\n    // This is the default behaviour.\n    fromOfficialRepository()\n\n    // Downloads the wanted VF version from the project repositories.\n    fromProjectRepositories()\n\n    // Downloads the latest official snapshot of Vineflower.\n    fromLatestSnapshot()\n\n    // Resolves VF using a Gradle dependency.\n    // The parameter can be any dependency notation supported by Gradle.\n    fromDependency(\"a:b:1.2.3\")\n\n    // Downloads or copies the wanted VF version from a URL.\n    fromUrl(\"https://address.to/the/vineflower.jar\")\n\n    // Uses a local VF file\n    fromFile(\"my-vineflower.jar\")\n}\n```\n\n### Decompilation preferences\n\n\u003e Added in LVF 1.2.0.\n\nYou can also change the preferences used to decompile the game.\nFor changing the properties, you can either use their 3-letter names or, with some properties, a preset method.\n\nPreset methods as of 1.4.0:\n\n| Method | ID | Description | Default |\n|--------|----|-------------|----------|\n| `inlineSimpleLambdas` | `isl` | Collapse single-line lambdas | 1 |\n| `useJadVarnaming` | `jvn` | Use JAD-style local variable naming from ForgeFlower | 0 |\n| `patternMatching` | `pam` | Pattern matching support[^1] | 1 |\n| `experimentalTryLoopFix` | `tlf` | Fix for interactions between `try` and loops[^1] | 1 |\n\n[^1]: Used to be experimental, but considered stable as of Vineflower 1.9\n\n#### Groovy DSL\n```groovy\nvineflower {\n    preferences {\n        // fake options: don't try at home\n        abc = 1\n        ghi = 'thing'\n\n        inlineSimpleLambdas 0\n    }\n}\n```\n\n#### Kotlin DSL\n```kotlin\nvineflower {\n    preferences(\n        // fake options: don't try at home\n        \"abc\" to 1,\n        \"ghi\" to \"thing\",\n    )\n\n    preferences.inlineSimpleLambdas(0)\n}\n```\n\n#### gradle.properties\n\n\u003e Added in LVF 1.3.0.\n\nPreferences can also be declared in gradle.properties files using their 3-letter names, prefixed\nwith `vineflower.preference.` or (deprecated) `loom-quiltflower.preference.`.\n\n```properties\n# Fake option here too :^)\nvineflower.preference.abc = 1\n```\n\nYou can use the global gradle.properties file in the Gradle user home directory to set your\nwanted properties, like the indentation string, for each project that uses LVF.\n\n#### Decompiler options\n\n\u003e Added in LVF 1.6.0. Only works on Fabric Loom 0.11+!\n\nYou can also configure the options with Loom's new\ndecompiler options API:\n\n*Groovy DSL*\n\n```groovy\nloom {\n    decompilers {\n        vineflower {\n            options += [\n                // optionName: \"value\"\n                abc: \"a\"\n            ]\n        }\n    }\n}\n```\n\n*Kotlin DSL*\n\n```kotlin\nloom {\n    decompilers {\n        named(\"vineflower\") {\n            options.put(\"\u003coption name\u003e\", \"\u003cvalue\u003e\")\n        }\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuuxel%2Floom-vineflower","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuuxel%2Floom-vineflower","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuuxel%2Floom-vineflower/lists"}