1 Entrypoints
Juniper Gardiner edited this page 2026-04-19 11:33:20 +01:00

When using the provided template mod (https://forgejo.sillyjune.xyz/mlem/template-mod), you will have some additional fields in gradle.properties:

org.gradle.jvmargs=-Xmx4G
org.gradle.parallel=true

group=com.example
version=1.0.0

minecraft_version=26.1.2
# Find on https://fabricmc.net/develop/
fabric_loader_version=0.19.2
# Find on https://projects.neoforged.net/neoforged/neoforge
neoforge_version=26.1.2.12-beta
# Find on https://forgejo.sillyjune.xyz/mlem/mlem-api/releases
mlem_version=0.1.1

# Mod metadata
mod_id = "examplemod"
name = "Example Mod"
description = "The greatest mod ever made"
license = "ARR"
author = "Me!"

url = "https://modrinth.com/mod/examplemod"
discord = "https://discord.gg/myserverinvite"
modrinth = "https://modrinth.com/mod/examplemod"
curseforge = "https://curseforge.com/minecraft/mc-mods/examplemod"
sources = "https://forgejo.sillyjune.xyz/mlem/template-mod"
issues = "https://forgejo.sillyjune.xyz/mlem/template-mod/issues"

# MLEM API
# `group` is appended to the full entrypoint, e.g com.example.examplemod.client.ExampleModClient
client_entrypoint = "examplemod.client.ExampleModClient"

Most importantly of note for this are group and client_entrypoint. The jar file containing the entrypoint will be stored at the group followed by the client_entrypoint, so, for the template mod, with the above gradle.properties, it's stored in /src/main/java/com/example/examplemod/client/ExampleModClient.java.

The ExampleModClient must implement ClientEntrypoint, as can be seen in the example template;

public class ExampleModClient implements ClientEntrypoint {
    private static final Logger LOGGER = LogManager.getLogger();

    @Override
    public void init() {
        LOGGER.info("Hello from example mod!");

        [...]
    }
}

This is not too different from regular NeoForge or Fabric modding, but this entrypoint will work across both Fabric and NeoForge without any further changes.