package dev.isxander.yacl3.config.v3; import com.mojang.serialization.DynamicOps; import com.mojang.serialization.RecordBuilder; import org.jetbrains.annotations.ApiStatus; import java.util.function.Consumer; import java.util.function.UnaryOperator; @ApiStatus.Experimental public interface ReadonlyConfigEntry { String fieldName(); T get(); ReadonlyConfigEntry modifyGet(UnaryOperator modifier); default ReadonlyConfigEntry onGet(Consumer consumer) { return this.modifyGet(v -> { consumer.accept(v); return v; }); } RecordBuilder encode(DynamicOps ops, RecordBuilder recordBuilder); boolean decode(R encoded, DynamicOps ops); }