package net.minecraft.server.dialog.action; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.Map; import java.util.Optional; import net.minecraft.network.chat.ClickEvent; public record CommandTemplate(ParsedTemplate template) implements Action { public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( instance -> instance.group(ParsedTemplate.CODEC.fieldOf("template").forGetter(CommandTemplate::template)).apply(instance, CommandTemplate::new) ); @Override public MapCodec codec() { return MAP_CODEC; } @Override public Optional createAction(Map valueGetters) { String string = this.template.instantiate(Action.ValueGetter.getAsTemplateSubstitutions(valueGetters)); return Optional.of(new ClickEvent.RunCommand(string)); } }