{"id":21905998,"url":"https://github.com/2008choco/evolve","last_synced_at":"2026-02-11T01:05:23.553Z","repository":{"id":39924793,"uuid":"279951474","full_name":"2008Choco/Evolve","owner":"2008Choco","description":"A patch-based, event-oriented modding framework for Equilinox by ThinMatrix","archived":false,"fork":false,"pushed_at":"2024-10-03T20:02:36.000Z","size":12021,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T19:24:25.563Z","etag":null,"topics":["equilinox","framework","java","mod","modding"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2008Choco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://paypal.me/2008Choco/"]}},"created_at":"2020-07-15T18:50:17.000Z","updated_at":"2024-10-03T20:02:36.000Z","dependencies_parsed_at":"2022-09-15T12:11:43.820Z","dependency_job_id":null,"html_url":"https://github.com/2008Choco/Evolve","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2008Choco%2FEvolve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2008Choco%2FEvolve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2008Choco%2FEvolve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2008Choco%2FEvolve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2008Choco","download_url":"https://codeload.github.com/2008Choco/Evolve/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249173061,"owners_count":21224481,"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":["equilinox","framework","java","mod","modding"],"created_at":"2024-11-28T16:39:56.599Z","updated_at":"2026-02-11T01:05:23.534Z","avatar_url":"https://github.com/2008Choco.png","language":"Java","funding_links":["https://paypal.me/2008Choco/"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"branding/evolve_logo_512.png\" alt=\"Evolve Logo\"\u003e\n\u003c/p\u003e\n\nEvolve is a patch-based, event-oriented modding framework for [Equilinox](https://equilinox.com/) by [ThinMatrix](https://twitter.com/ThinMatrix/). In order to avoid republishing and freely distributing the decompiled source code of Equilinox - a game [purchaseable on Steam](https://store.steampowered.com/app/853550/) - this framework works exclusively based on patch files which may be later applied to a locally owned copy of the game. Therefore, if you do not own a legal copy of Equilinox, you will not be able to use or contribute to Evolve.\n\n# Contributing to Evolve\nThis project is open source and welcomes contributions from developers interested in writing more API for Evolve mod developers. When contributing to this project, it is advised that you create a new branch for each pull request you wish to create.\n\n## Prerequisites\n- A legally purchased copy of Equilinox\n- Java 8 or above ([AdoptOpenJDK](adoptopenjdk.net/) is recommended)\n- [Git for Windows](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n  * For Windows, this should include Git Bash. MacOS and Linux both have their own terminals which serve a similar purpose\n- [Apache Maven](http://maven.apache.org/download.cgi)\n\n## Setting Up the Workspace\n1. Locate your installation of Equilinox (on Windows, by default, this is `C:\\Program Files (x86)\\Steam\\steamapps\\common\\Equilinox\\`). It should look similar to the following:\n\n![Equilinox Install Directory](https://i.imgur.com/dzQolLM.png)\n\nYou may find your installation directory directly through Steam using the following option:\n\n![Steam](https://i.imgur.com/s2Amope.png)\n\n2. Create a new directory titled `Evolve` and clone this repository using the Git client of your choice or by running `git clone https://github.com/2008Choco/Evolve.git` in the aforementioned directory. It should look similar to the following:\n\n![Evolve Directory](https://i.imgur.com/MjzI6Gk.png)\n\n3. Run the `setupWorkspace.sh` script and let the shell script complete before continuing. This should take no more than 5 minutes after which point a new `decompile` directory will have been created. It will look like so:\n\n![Installed Evolve Directory](https://i.imgur.com/A1tvc9F.png)\n\n4. Import the Evolve directory into your IDE of choice as a Maven project. **NOTE:** This project was written with Eclipse in mind, no other IDEs have been tested therefore it is requested that IntelliJ or NetBeans users contribute to update these steps as necessary\n\n![Importing in Eclipse](https://i.imgur.com/U7laokK.png)\n![Project Structure](https://i.imgur.com/Id95wf1.png)\n\nCongratulations, you have successfully setup the Evolve workspace and are free to edit as you please. For instructions on how to edit Equilinox code and generate patches, see [The Patch System](#The-Patch-System) below.\n\n# Setting Up Run Configurations\nIn order to run a development environment for Equilinox directly from your IDE, a run configuration must be created for the project. At a later time, this run configuration will be automatically generated. This information applies only to Eclipse IDE though other IDEs almost certain have similar setup.\n\nAccess your run configurations and create one for the Evolve project. Assign the Main class to `wtf.choco.evolve.userdev.LocalLauncher`\n\n![Basic Run Configuration](https://i.imgur.com/lrRA3gZ.png)\n\nOpen the `Environment` tab and add a new environment variable titled `EVOLVE_DIRECTORY`. The value of this variable should be the absolute path to the root directory of Evolve.\n\n![Environment Variables](https://i.imgur.com/1tQqn1a.png)\n\nApply, save and you're ready to run Equilinox in the modded Evolve environment.\n\n# The Patch System\nEquilinox is a paid game and code copyright is held by ThinMatrix, therefore it cannot be distributed or hosted on a public repository such as Evolve. As such, Equilinox makes use of a patch-based system to list the bare minimum, a set of changes on which patches may be applied to the decompiled vanilla source.\n\n**DISCLAIMER:** While you may own the game and have access to its decompiled code on your local system, it is asked that you **DO NOT** create any pull requests or contributions containing decompiled source from Equilinox. At no point should any copywritten code or binaries be distributed through GitHub or any other means.\n\n## Generating Patches (Modifying Equilinox Code)\nThere are two possibilities for a change in Equilinox's decompiled source:\n1. The file has already been patched and applyPatches has generated the modified source already\n2. The file has not yet been patched and is unavailable in the project\n\nIn either case, please follow the [Patching Guidelines](#Patching-Guidelines) as stated below.\n\nIn the first case, you are welcome to modify the source file as you please and skip to [The Script](#The-Script). Alternatively, if the file has not yet been created, you must copy the file you wish to change from the `decompile/` directory into the appropriate package under `src/main/java` of your project directory. After it is present in your IDE, continue with making necessary changes. If any decompilation errors arise (ones that would cause Maven to fail), please resolve these issues and leave an Evolve comment, `// Evolve - decompile error`.\n\n### The Script\nOnce you are satisfied with the changes you have made (and have ensured that the [Patching Guidelines](#Patching-Guidelines) are met), you may proceed with generating the patch(es) for the file(s) you have modified. Evolve provides you with a bash script in the root directory titled `createPatches.sh`. Double clicking this script will not suffice as this script requires a parameter pointing to the path of the clean decompiled source (the source that has not been modified).\n\n![Create Patches Command](https://i.imgur.com/2kNT5y3.png)\n\n`sh createPatches.sh \"./decompile\"`  \nThe argument may take either an absolute or relative path... so long as the path is that of the clean source.\n\nAfter the script has terminated, you should see changes in the patch files corresponding to the source files to which you've made changes. These may be staged, committed and pushed to your fork in preparation for a pull request.\n\n### Patching Guidelines\n- Maintain a minimal diff where possible. Avoid large changes\n- Single line changes should be suffixed with a `// Evolve` comment\n  - If the change is not obvious, leave a note. i.e. `// Evolve - added an argument to foo()`\n- Multi-line changes should be wrapped in comments such as the following:\n```java\n// Evolve start\nthis.buttons.add(this.addLine(7, 13, 2, \"Mods\", event -\u003e {\n    if (event.isLeftClick()) {\n        this.gameMenu.setNewSecondaryScreen(new wtf.choco.evolve.gui.mods.ModPanelGui(gameMenu));\n    }\n}));\nthis.buttons.add(this.addLine(8, 15, 2, GameText.getText(6), new ClickListener() {\n// Evolve end\n```\n- In-line imports if possible. If readability becomes an issue, you may add imports and surround them in multi-line comments\n- For the sake of minimal diff, avoid adding methods to Equilinox source and opt instead for an access level change\n- Access level changes should be marked with an ACCESS comment. For instance, `// ACCESS private -\u003e public`\n- **DO NOT RENAME ANYTHING!** Equilinox is not obfuscated and therefore does not require any mappings. Changing a name may cause unnecessary conflicts\n\n## Applying Patches\nPatch application is a way to ensure that your local source is up to date with the patches pulled from upstream. When pulling patches from upstream, `applyPatches` should be run. Much like with `createPatches`, the clean source must be provided as a script argument.\n\n**WARNING!!** This script will delete any local changes to Equilinox source you may have written. Backup any changes you may have made before running this script.\n\n# Installing Evolve\nWhile Evolve remains in its early stages, installation is still technically possible. However, due to its instability and technical requirements, it is advised otherwise until a later date. Players, stay tuned for an installer!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2008choco%2Fevolve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2008choco%2Fevolve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2008choco%2Fevolve/lists"}