package lol.pyr.znpcsplus.util; public class LazyLoader { private final ObjectProvider provider; private T value; private LazyLoader(ObjectProvider provider) { this.provider = provider; } public T get() { if (value == null) value = provider.provide(); return value; } public static LazyLoader of(ObjectProvider provider) { return new LazyLoader<>(provider); } @FunctionalInterface public interface ObjectProvider { T provide(); } }