implement AbstractTerraPlugin#load

This commit is contained in:
dfsek
2021-07-25 22:42:53 -07:00
parent 19d4673afe
commit c13494ca03
2 changed files with 19 additions and 3 deletions
@@ -9,12 +9,12 @@ import com.dfsek.terra.api.command.exception.MalformedCommandException;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.config.PluginConfig;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.lang.Language;
import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.profiler.Profiler;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.api.util.generic.Lazy;
import com.dfsek.terra.api.util.mutable.MutableBoolean;
import com.dfsek.terra.commands.CommandUtil; import com.dfsek.terra.commands.CommandUtil;
import com.dfsek.terra.commands.TerraCommandManager; import com.dfsek.terra.commands.TerraCommandManager;
import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.GenericLoaders;
@@ -35,6 +35,8 @@ import java.util.Optional;
/** /**
* Skeleton implementation of {@link TerraPlugin} * Skeleton implementation of {@link TerraPlugin}
*
* Implementations must invoke {@link #load()} in their constructors.
*/ */
public abstract class AbstractTerraPlugin implements TerraPlugin { public abstract class AbstractTerraPlugin implements TerraPlugin {
private final Lazy<DebugLogger> debugLogger = Lazy.lazy(() -> new DebugLogger(logger())); private final Lazy<DebugLogger> debugLogger = Lazy.lazy(() -> new DebugLogger(logger()));
@@ -56,12 +58,23 @@ public abstract class AbstractTerraPlugin implements TerraPlugin {
private final Logger logger; private final Logger logger;
private static final MutableBoolean LOADED = new MutableBoolean(false);
public AbstractTerraPlugin() { public AbstractTerraPlugin() {
this.logger = createLogger(); this.logger = createLogger();
System.out.println(logger); addonRegistry = getPlatformAddon().map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this));
}
protected void load() {
if(LOADED.get()) {
throw new IllegalStateException("Someone tried to initialize Terra, but Terra has already initialized. This is most likely due to a broken platform implementation, or a misbehaving mod.");
}
LOADED.set(true);
logger().info("Initializing Terra..."); logger().info("Initializing Terra...");
saveDefaultConfig();
config.load(this); // load config.yml config.load(this); // load config.yml
LangUtil.load(config.getLanguage(), this); // load language LangUtil.load(config.getLanguage(), this); // load language
@@ -72,7 +85,6 @@ public abstract class AbstractTerraPlugin implements TerraPlugin {
profiler.start(); profiler.start();
} }
addonRegistry = getPlatformAddon().map(terraAddon -> new AddonRegistry(terraAddon, this)).orElseGet(() -> new AddonRegistry(this));
addonRegistry.register(new InternalAddon(this)); addonRegistry.register(new InternalAddon(this));
if(!addonRegistry.loadAll(getClass().getClassLoader())) { // load all addons if(!addonRegistry.loadAll(getClass().getClassLoader())) { // load all addons
@@ -36,6 +36,10 @@ public class TerraPluginImpl extends AbstractTerraPlugin {
return Optional.of(new FabricAddon(this)); return Optional.of(new FabricAddon(this));
} }
public TerraPluginImpl() {
load();
}
@Override @Override
protected Logger createLogger() { protected Logger createLogger() {
final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger(); final org.apache.logging.log4j.Logger log4jLogger = LogManager.getLogger();