Mod Guidelines

These are the guidelines for how mods are allowed to the mods index. All mods on the index are required to follow these rules.

It is the responsiblity of both the mod developer and the person who verifies the mod to make sure the mod abides by the rules. If a mod is mistakingly approved, or it receives an update the breaks the rules, they may be applied retroactively.

Ban rules

A mod found breaking any of these rules will be rejected unconditionally from the index, as well as very likely leading to a total and permanent ban from posting on the index and a removal of all existing mods on the index.

Please note that a mod purposefully altering the experience of specific users (such as making gameplay unplayable) is considered malware, regardless of the users in question. This specific form of malware is unlikely to lead to an index-wide ban, though that depends on the gravity of the situation.

Other rules

ℹ️ As a TL;DR; the rule of thumb for whether something is allowed on the index is compatability. If the mod is or might be incompatible with other mods that it should be compatible with, that is usually grounds for a rejection.

A mod found breaking any of these rules will be rejected unconditionally from the index.

A mod found breaking any of these rules will likely be rejected, although depending on the situation, they could also still be approved.

A mod found breaking any of these rules will likely still be approved, although constant and/or prolific breaking can result in a rejection.

Non-rules

These are some things one might expect to result in a rejection, but actually most likely won’t.

There are also some code patterns that one might assume would be rejected, but are actually allowed:

#ifdef GEODE_IS_WINDOWS
auto editorUIGridSize = reinterpret_cast<float*>(reinterpret_cast<uintptr_t>(EditorUI::get()) + 0x1d0);
#endif

Accessing & modifying members by their raw platform offset is totally okay, as this does not pose any interoperability concerns with other mods, it just makes your mod harder to port.

if (this->querySelector("hjfod.gdshare/export-button")) {
    // GDShare is loaded, compatability code
}

Checking that another mod is loaded by looking for identifying effects of them in the game is completely fine, as long as the checks are safe and don’t make assumptions about things that haven’t been checked. For example, just doing Loader::get()->isModLoaded("hjfod.gdshare") is NOT enough to guarantee all of GDShare’s buttons exist, so you should always check for the buttons themselves!

Mods modifying the Geode UI

Some mods may want to extend Geode’s own UI, for example to add custom features to their own mod’s page. This is allowed, however on the following conditions:

  1. The mod may only access nodes by ID. No matching types or indices, if the node the mod wants to modify doesn’t have an ID, the mod can not edit it
  2. The mod must always check for null on every node they access. It should never assume the existence of a node, even if it’s trivial
  3. The mod must safely handle all possible failure states, such as missing sprites
  4. If the mod finds any missing IDs, it must undo any/all of its changes and not make any more. The recommended way to do this is to first use querySelector to grab all the nodes in the scene it intends to modify beforehand, and then returning early if any of them are null

These rules are in place because the Geode UI is a highly volatile place that may change at any time, and any mod causing the Geode UI itself to crash would make it impossible to disable without safe mode.

Mods using Generative AI

Due to controversy among developers regarding the subject, mods that utilize Generative AI have to follow these additional guidelines in relation to their AI usage.

ℹ️ TL;DR; All mods using AI must be trained on consentually obtained data, and may not be used for creating levels.

In addition, all mods utilizing AI must be manually verified on the index and approved unilaterally by Geode lead developers, regardless of whether the developer is verified on the index or not.

Hateful conduct

Developers may be banned off the mods index and other Geode-related online spaces such as the Discord server and the GitHub organization, if they have committed acts in or outside the Geode community that are considered hateful, harmful, or otherwise detestable. These include, but are not limited to:

This ruling is in place to ensure that Geode stays a safe and welcoming place for everyone. This is a mod loader for a children’s video game - we do not want to indirectly publicize mean people or their actions with it!

Do take note that the list above is not comprehensive nor set in stone, and what qualifies as hateful conduct may and will change and mold over time, with the final say always being left to the Geode team of that time.

Do also note that these rules may very well be enforced retroactively. While we do believe in and hope for people to grow to be better, any person ruled to have committed hateful conduct in the past must give reason for the Geode Team to believe they actually have changed to overturn the verdict.