A template processor is used to transform a MutableLookup before components are initialised with it. This allows mod developers to perform complex actions such as grabbing items from a recipe and passing those into item galleries. Creating a Template Processor is extremely simple:
Step 1.) Create a Template Processor
TemplateProcessor is a functional interface, you could pass a lambda or method reference into registration but for the purposes of the documentation it's being implemented as a class. In this example we'll just be replacing input_string
with b
if it was a
.
public class MyTemplateProcessor implements TemplateProcessor {public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("mymod", "myprocessor");@Overridepublic void init(Book book, MutableLookup lookup, Level level) {String input = lookup.get("input_string").asString();if(input.equals("a"))lookup.set("input_string", Variable.of("b"));}}
Step 2.) Registering your Template Processor
All you need to do now is register your Template Processor by calling TemplateRegistry#registerProcessor
in your mod's Client Entrypoint. The ID you use to register your processor will be what templates use to reference it in their processor
field.
TemplateRegistry.get().registerProcessor(MyTemplateProcessor.ID, new MyTemplateProcessor());