{"id":18385355,"url":"https://github.com/themrmilchmann/ae2ccbridge","last_synced_at":"2025-08-08T19:24:42.977Z","repository":{"id":103648854,"uuid":"570861733","full_name":"TheMrMilchmann/AE2CCBridge","owner":"TheMrMilchmann","description":"A simple bridge between Applied Energistics 2 and ComputerCraft","archived":false,"fork":false,"pushed_at":"2025-03-06T21:08:22.000Z","size":454,"stargazers_count":8,"open_issues_count":6,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-22T09:32:37.606Z","etag":null,"topics":["ae2","applied-energistics","computercraft","fabricmc","minecraft","minecraft-mod"],"latest_commit_sha":null,"homepage":"https://www.curseforge.com/minecraft/mc-mods/ae2cc-bridge","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/TheMrMilchmann.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-26T11:22:57.000Z","updated_at":"2025-03-06T21:08:00.000Z","dependencies_parsed_at":"2023-11-15T21:26:17.030Z","dependency_job_id":"10a78ad6-62b7-45c7-8554-ef8bf5979a08","html_url":"https://github.com/TheMrMilchmann/AE2CCBridge","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheMrMilchmann%2FAE2CCBridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheMrMilchmann%2FAE2CCBridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheMrMilchmann%2FAE2CCBridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheMrMilchmann%2FAE2CCBridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheMrMilchmann","download_url":"https://codeload.github.com/TheMrMilchmann/AE2CCBridge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247574088,"owners_count":20960495,"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":["ae2","applied-energistics","computercraft","fabricmc","minecraft","minecraft-mod"],"created_at":"2024-11-06T01:17:23.054Z","updated_at":"2025-04-07T00:32:00.344Z","avatar_url":"https://github.com/TheMrMilchmann.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AE2CC Bridge\n\nAE2CC Bridge adds a simple peripheral block that may be used to access an [Applied Energistics 2](https://github.com/AppliedEnergistics/Applied-Energistics-2)\nME system from [ComputerCraft](https://github.com/cc-tweaked/cc-restitched) computers.\n\n\u003e [!IMPORTANT]\n\u003e This mod is inherently unbalanced. The peripheral access to the ME system\n\u003e provided by this mod allows players to circumvent channel limitations and\n\u003e perform arbitrary logic at effectively no energy cost.\n\n\u003e [!NOTE]\n\u003e Currently, the peripheral only exposes a fairly small API. If you find that\n\u003e functionality you need is missing, please file a feature request in our issue\n\u003e tracker.\n\n## Peripheral API - Crafting (Functions)\n\n### `getAvailableObjects()`\n\nReturns a list of objects that are currently available in the ME system.\n\n#### Returns\n\n1. `{ { type = string, id = string, displayName = string, amount = number }... }` –\n   a table with a list of objects available in the ME system\n\n\n### `getCraftableObjects()`\n\nReturns a list of objects that can be crafted by the ME system.\n\n#### Returns\n\n1. `{ { type = string, id = string, displayName = string }... }` – a table with\n   a list of objects that can be crafted by the ME system\n\n\n### `getCraftingCPUs()`\n\nReturns a list of crafting CPUs available in the ME system.\n\n#### Returns\n\n1. `{ cpu... }`\n\nwhere `cpu` is a table defined as follows:\n\n| Key                     | Type      | Description                                                                      |\n|-------------------------|-----------|----------------------------------------------------------------------------------|\n| `availableCoProcessors` | `number`  | The number of available co-processors.                                           |\n| `availableStorage`      | `number`  | The amount of available crafting storage.                                        |\n| `selectionMode`         | `string`  | The selection mode of the CPU. (Either `ANY`, `MACHINE_ONLY`, or `PLAYER_ONLY`.) |\n| `jobStatus`             | `string?` | Information about the currently running job.                                     |\n| `name`                  | `string?` | The custom name of the CPU.                                                      |\n\nwhere `jobStatus` is a table defined as follows:\n\n| Key              | Type      | Description                                                           |\n|------------------|-----------|-----------------------------------------------------------------------|\n| `totalObjects`   | `number`  | The total amount of objects that will be crafted during the job.      |\n| `craftedObjects` | `number`  | The amount of crafted objects.                                        |\n| `elapsedNanos`   | `number`  | The time (in nanoseconds) that has elapsed since the job has started. |\n| `systemID`       | `string?` | The ID given to the running job by the ME system.                     |\n| `output`         | `output`  | The job's output.                                                     |\n\nwhere `output` is defined as follows:\n\n| Key           | Type     | Description                      |\n|---------------|----------|----------------------------------|\n| `amount`      | `number` | The number of requested objects. |\n| `type`        | `string` | The type of the object.          |\n| `id`          | `string` | The ID of the object.            |\n| `displayName` | `string` | The display name of the object.  |\n\n\n#### Remarks\n\nFor technical reasons, determining the `systemID` may fail in some cases. If\nthis happens, the `systemID` is not included and an error is logged. If you\nare using up-to-date versions of AE2 and AE2CC Bridge, please make sure this\nissue is known in the issue tracker for your versions.\n\n\n### `getIssuedCraftingJobs`\n\nReturns a list of unfinished crafting jobs issued by the peripheral.\n\n#### Returns\n\n1. `{ { state = string, jobID = string, systemID = string? }... }` – a table with\n   a list of objects for each unfinished job issued by the peripheral.\n\n#### Remarks\n\nFor a job to be included in the output, its state must either be `SCHEDULED` or\n`STARTED`. If the job has started running, an additional `systemID` is field is\nincluded. This ID is the ID given to the running job by the ME system (opposed\nto the `jobID` which is local to a peripheral).\n\n\n### `scheduleCrafting(type, id, amount)`\n\nSchedules a crafting job.\n\n#### Parameters\n\n1. `type`: `string` – the type of the object to craft (\"fluid\" or \"item\")\n2. `id`: `string` – the ID of the object to craft\n3. `amount`: `number` – the amount of the object to craft\n\n#### Returns\n\n1. `string` – a unique ID representing the crafting job\n\n#### Remarks\n\n\u003e **Note**: This method is deliberately named `scheduleCrafting` as scheduling a\n\u003e crafting job does not actually start a crafting process immediately. Instead,\n\u003e the crafting job is started at some point in the future when the ME system is\n\u003e ready.\n\nTo work with crafting jobs, it is necessary to understand their lifecycle.\n\n```mermaid\nflowchart LR\nScheduled --\u003e Started\nStarted --\u003e Done\nStarted --\u003e Cancelled\nScheduled --\u003e Cancelled\n```\n\nInitially, a newly created crafting job's state is `SCHEDULED`. During creation,\nthe ME system is instructed to prepare for the crafting job (which includes\ncalculating) the exact crafting plan.\n\nOnce the system has finished all necessary preparations, the crafting job's\nstate changes to `STARTED`. The `ae2cc:crafting_started` event can be used to\nlisten to this state change.\n\nFinally, when the crafting job is finished, it's state changes to `DONE` and the\n`ae2cc:crafting_done` event is fired.\n\nAdditionally, if the job is cancelled or an error occurs at any point of the\ncrafting job's lifecycle, the `ae2cc:crafting_cancelled` event is fired.\n\n\n## Peripheral API - Crafting (Events)\n\n### `ae2cc:crafting_cancelled`\n\nThe `ae2cc:crafting_cancelled` event is fired when a crafting job is cancelled.\n\n#### Return Values\n\n1. `string` – the name of the event\n2. `string` – the ID of the cancelled crafting job\n3. `string` - the reason for the cancellation\n\n#### Remarks\n\nThe reason for the cancellation is always one of:\n\n| Value                | Description                                                 |\n|----------------------|-------------------------------------------------------------|\n| `CANCELLED`          | The job was cancelled (either manually or by a machine).    |\n| `CPU_NOT_FOUND`      | The selected crafting CPU was not found.                    |\n| `INCOMPLETE_PLAN`    | No crafting plan could be calculated for the job.           |\n| `NO_CPU_FOUND`       | No crafting CPU to execute the job was found.               |\n| `CPU_BUSY`           | The selected crafting CPU is busy.                          |\n| `CPU_OFFLINE`        | The selected crafting CPU is offline.                       |\n| `CPU_TO_SMALL`       | The selected crafting CPU is too small to process the job.  |\n| `MISSING_INGREDIENT` | Could not obtain one of the ingredients needed for the job. |\n\n\n### `ae2cc:crafting_done`\n\nThe `ae2cc:crafting_done` event is fired when a crafting job is done.\n\n#### Return Values\n\n1. `string` – the name of the event\n2. `string` – the ID of the finished crafting job\n\n\n### `ae2cc:crafting_started`\n\nThe `ae2cc:crafting_started` event is fired when the state of a previously\n_SCHEDULED_ crafting job changes to _STARTED_.\n\n#### Return Values\n\n1. `string` – the name of the event \n2. `string` – the ID of the started crafting job\n\n\n## Peripheral API - Energy (Functions)\n\n### `getAveragePowerInjection()`\n\nReturns the average energy injected into the ME system per tick, for the last 10 ticks.\n\n#### Returns\n\n1. `number` – the average injected energy\n\n\n### `getAveragePowerUsage()`\n\nReturns the average power drain over the past 10 ticks.\n\n#### Returns\n\n1. `number` – the drained power\n\n\n### `getChannelPowerUsage()`\n\nReturns the current idle power usage of channels in the ME system.\n\n#### Returns\n\n1. `number` – the power used by idle channels\n\n\n### `getIdlePowerUsage()`\n\nReturns the current calculated total idle power usage of the ME system.\n\n#### Returns\n\n1. `number` – the power drained from the ME system each tick while idle\n\n\n### `getMaxStoredPower()`\n\nReturns the (estimated) maximum amount of power that can be stored in the ME system.\n\n#### Returns\n\n1. `number` – the estimated maximum stored power\n\n\n### `getStoredPower()`\n\nReturns the (estimated) amount of power stored in the ME system.\n\n#### Returns\n\n1. `number` – the estimated stored power\n\n\n## Versioning\n\nAE2CC Bridge uses a custom versioning scheme that follows the spirit of the\n[SemVer 2.0.0](https://semver.org/spec/v2.0.0.html) specification.\n\nGiven a version number `WORLD.API.FEATURE-MC-LOADER-TARGET.PATCH`, increment the:\n\n1. `WORLD` version when you make save-game incompatible changes,\n2. `API` version when you make incompatible API changes,\n3. `FEATURE` version when you update functionality in a backwards compatible\n   manner\n4. `TARGET` version when you update to a backward incompatible version of your\n   loader\n5. `PATCH` version when you make backwards compatible bug fixes\n\nThe `MC` version should always be the version string of the targeted version of\nMinecraft. If multiple Minecraft versions are supported by a single mod version,\ntypically the oldest supported version string should be chosen.\n\nSimilarly, the `LOADER` version should be used to indicate which mod loader the\nversion was written for (e.g. \"FABRIC\").\n\n\n## Supported versions\n\n| Minecraft Version                                               | State              |\n|-----------------------------------------------------------------|--------------------|\n| 1.20                                                            | Mainline           |\n| [1.18](https://github.com/TheMrMilchmann/AE2CCBridge/tree/1.19) | Active Development |\n| [1.18](https://github.com/TheMrMilchmann/AE2CCBridge/tree/1.18) | Active Development |\n\n**This is the mainline branch** for the development of _AE2CC Bridge_\nwhich usually targets the most recent Minecraft version. The development for\nother versions of Minecraft happens in the repositories and branches linked in\nthe table above.\n\n\n### Support Cycle\n\n| State                  | Description                                                  |\n|------------------------|--------------------------------------------------------------|\n| **Mainline**           | The primary development branch                               |\n| **Active Development** | This version still receives all updates                      |\n| **Maintenance Mode**   | This version still receives fixes but no new features        |\n| **Unsupported**        | This version is unsupported and does not receive any updates |\n\n\n## Building from source\n\n### Setup\n\nThis project uses [Gradle's toolchain support](https://docs.gradle.org/current/userguide/toolchains.html)\nto detect and select the JDKs required to run the build. Please refer to the\nbuild scripts to find out which toolchains are requested.\n\nAn installed JDK 1.8 (or later) is required to use Gradle.\n\nA local installation of CC:Restitched is required to build this mod. The\nrecommended way to create one is going to the submodule under `deps/cc-restitched`\nand calling:\n\n    gradlew jar publishToMavenLocal\n\n### Building\n\nOnce the setup is complete, invoke the respective Gradle tasks using the\nfollowing command on Unix/macOS:\n\n    ./gradlew \u003ctasks\u003e\n\nor the following command on Windows:\n\n    gradlew \u003ctasks\u003e\n\nImportant Gradle tasks to remember are:\n- `clean`                   - clean build results\n- `build`                   - assemble and test the project\n- `runClient`               - runs the development client\n- `runServer`               - runs the development server\n\nAdditionally `tasks` may be used to print a list of all available tasks.\n\n\n## License\n\n```\nCopyright (c) 2022-2024 Leon Linhart\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemrmilchmann%2Fae2ccbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemrmilchmann%2Fae2ccbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemrmilchmann%2Fae2ccbridge/lists"}