Skip to main content

ExpectPlatform Annotation

@ExpectPlatform can be applied to static methods, and its content will be replaced by the platform-specific implementation.

Here we will declare a method with @ExpectPlatform, please note that you don't need to do this to get the configuration directory if you are using the Architectury API.

package net.examplemod;

import dev.architectury.injectables.annotations.ExpectPlatform;

import java.io.File;

class ExampleClass {
@ExpectPlatform
static File getConfigDirectory() {
// Just throw an error, the content should get replaced at runtime.
// Something is terribly wrong if this is not replaced.
throw new AssertionError();
}
}

Now, we can go and implement the platform-specific version of this method, we will do Fabric as an example. The package of this class must be suffixed with .fabric, and the name of this platform-specific class is suffixed with Impl.

package net.examplemod.fabric;

import net.fabricmc.loader.api.FabricLoader;

import java.io.File;

public class ExampleClassImpl {
public static File getConfigDirectory() {
return FabricLoader.getInstance().getConfigDir().toFile();
}
}