The class from which all common mods extend. Comes complete with the following:
modIdNo more loose MOD_ID hanging around. Every mod requires it, and it’s a nice easy name.
Each mod ships with a config which extends AbstractConfig, along with a /<mod-id> reload command that reloads the config, and emits a RELOAD_CONFIG event.
A simple logger wrapper that incorporates my general debugging logic, where players can turn debugging off in the config, but the dev can also choose to override that setting for important logs. The latter is handy for common user experience issues, sticking out like a sore thumb in the logs, without having to tell players to turn debug mode on.
Built-in command registration system with type-safe argument handling. Commands extend AbstractCommand and are automatically registered. The system includes support for custom command arguments through CommandArgumentContainer registration.
Registration system for custom Pokémon properties that extend Cobblemon's property system. Properties are registered during mod initialization and become available for use with Pokémon data.
Extensible reload system where components can register listeners that respond to config reload events. This allows different parts of the mod to update their behavior when configuration changes occur.
Centralized registration for mod items and blocks using container-based architecture. Items and blocks are registered with their respective containers and automatically namespaced with the mod ID.
Integration with Cobblemon's spawning system through AppendageCondition registration. Allows mods to define custom spawning conditions that integrate seamlessly with the base spawning logic.
Automatic resource location generation using the mod ID namespace, ensuring consistent naming conventions across all mod resources without manual ResourceLocation creation.