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.