Github repository containing the extension archive used in the G-ExtensionStore extension (built-in in G-Earth 1.5+). It synchronizes with discord to publish extensions and collect feedback.
In contrast to what the name suggests, all extensions are free
Extension requirements:
- The extension must be compatible with the latest version of G-Earth (at time of submitting)
- The files you submit may not be obfuscated
- Your extension may not contain hardcoded header IDs
- Always use packet names/hashes for identifying packets
- You're also allowed to use techniques to detect headers IDs at runtime
- Only if the above 2 are not applicable, you can require the user to enter header IDs manually
- Your extension is not malicious & is not aimed at disturbing the game
- This includes extensions which give direct advantages in games and/or competitions
- Your extension must be open-source (exceptions are possible, contact me for that)
Framework requirements:
- The framework you use must implement the (latest) G-Earth extension API correctly
- For G-Earth to detect if an extension is an installed extension, the following requirements also apply:
- It must pass a
cookieandfilename(which can also be a folder name) to G-Earth on initialization (CLI arguments) - It must use the
port(CLI argument) to connect with G-Earth
- It must pass a
- The process of the extension must end when the socket with G-Earth is closed
- The framework must be included in
store/config.json->frameworks
You need to follow these steps:
- Fork the base branch of this repository. The base branch will always correspond to the latest G-Earth version.
- In the
store/extensions/folder, add a new folder named with the title of your extension - The folder you just created can contain 4 files:
extension.zipcontains all files required to execute the extension (required)extension.jsoncontains information of your extension. Its contents are described in the next section. (required)icon.pngis a 40x40 image for the extension store (required)screenshot.pngis an optional screenshot for the extension store
- Open a Pull Request into this github repository with your newly added extension
The object containing your extension information must look like this (fields that start with (optional) can also be null, but should still have correct syntax if they are not null):
{
"title": "G-Extension",
"description": "Description of the extension.\n\nGives you *infinite coins* and much more...",
"authors": [
{
"name": "sirjonasxx",
"hotel": "(optional) .nl",
"username": "(optional) sirjonasxx-VII",
"discord": "(optional) sirjonasxx#2633",
"twitter": "(optional) sirjonasxx"
}
],
"version": "0.1.0",
"categories": ["Building", "Trading", "Others"],
"source": "Url to the source code",
"readme": "(optional) readme file",
"releases": "(optional) releases page to share release notes"
"stable": true,
"framework": {
"name": "Native",
"version": "1.5"
},
"language": "Java",
"commands": {
"default": ["java", "-jar", "GClick.jar", "-c", "{cookie}", "-p", "{port}", "-f", "{filename}"],
"linux": ["(optional) <some OS-specific command...>"]
},
"compatibility": {
"systems": ["Linux", "Windows", "Mac"],
"clients": ["Unity", "Flash"]
},
"submissionDate": "15-08-2021 01:16:35",
"updateDate": "15-08-2021 01:16:35",
"isOutdated": false
}Most fields are self-explanatory, but some require extra attention:
titlemust be unique across G-ExtensionStore. Since it will also be a directory name, it can only contain characters that are valid directory names. Also don't include dots and underscores in the title.descriptioncan be a short description but may also be long, and a limited form of styling can be applied to itversioncan only contain dots and numberscategoriesdescribe the type of extension, at least 1 type is required. List of possible categories are to be found instore/config.json.sourceis a required field, it must link to your git repositoryreadmecan point to any URL containing extra information (such as instructions) for your extension, typically it would point to the README file of your repository. It can also be empty or nullreleasescan point to any URL containing release notes for your extension, typically it would point to the Releases page of your repository. It can also be empty or nullstablemust be set tofalseif this extension doesn't always show correct behavior. You're required to have this set totruein the initial PR. You can change it tofalselater on if it turns out to be unstable and aren't deploying a fix anytime soonframework.namemust be available instore/config.json->frameworks. Possible values currently areNative(Java),G-Python,Geode,G-NodeandXabboframework.versionis the version of the framework at time of compilation (or at time of writing in case of interpreted languages). ForNative, it is just the version of G-Earthcommandscontains the commands to execute the extension as if the submittedextension.zipfile was extracted in the current directory. It has to contain{cookie},{port}and{filename}. The command is undercommands.defaultbut you can also add platform-specific commandscompatibility.clients, the clients for which the extension is compatible. Can be one or more ofUnity,Flash,NitroandOrigins. Note that they are not compatible out of the box, so make sure to test
Note: it's possible not all of the fields will be used, but they may be used in future G-Earth versions
Create a new version of the extension and follow the steps from "Submitting an extension" again, do not forget to update extension.json with the new version.
It is also possible to update an extension without setting a new version, for example when updating the description or screenshot. As soon as you have any changes in extension.zip, or if the commands value in extension.json changes, you need to set a new version.
Open a PR and set isOutdated to true in the json file.
- All extensions will be reviewed to not contain malicious code
- The G-ExtensionStore is the main way of installing and publishing G-Earth extensions. In G-Earth 1.5.3+, you have to enable
Experimental modein theExtratab to install extensions in the old way. This comes with a warning!
- Create a tool to create the submission