Skip to content

Text Effects

Text effects apply a per-letter offset to dialog text during rendering, allowing animated visual effects like waves, shakes, or bounces.

Creating a text effect

Implement ITextEffect. It receives the letter index, the current tick, the partial tick, and named parameters from the Ink tag. It returns a Vec2 offset applied to the letter's render position.

It can be a lambda:

java
registry.register("wave", (letterIndex, tick, partialTick, params) -> {
    float amplitude = Float.parseFloat(params.getOrDefault("amplitude", "2"));
    float offset = (float) Math.sin(tick * 0.1 + letterIndex * 0.5) * amplitude;
    return new Vec2(0, offset);
});

Registering

java
NarrativeCraftAPI.getInstance().getTextEffectRegistry()
    .register("my-effect", new MyEffect());

IDialogPresetProvider

Lets you expose dialog presets to the editor.

java
public class MyPresetProvider implements IDialogPresetProvider {
    @Override
    public void providePresets(IDialogPresetConsumer consumer) {
        consumer.registerPreset("my-preset", myPresetObject);
    }
}