TerraForged/src/main/java/com/terraforged/config/ConfigRef.java

31 lines
791 B
Java

package com.terraforged.config;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
import com.terraforged.Log;
import java.util.function.Supplier;
public class ConfigRef implements Supplier<CommentedFileConfig> {
private final Object lock = new Object();
private final Supplier<CommentedFileConfig> factory;
private CommentedFileConfig ref;
public ConfigRef(Supplier<CommentedFileConfig> factory) {
this.factory = factory;
}
@Override
public CommentedFileConfig get() {
synchronized (lock) {
if (ref != null) {
Log.info("Loading config: {}", ref.getFile().getName());
ref.load();
return ref;
}
return ref = factory.get();
}
}
}