mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-08-29 21:30:43 +00:00
load addon dependencies before pack manifest
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
|||||||
|
package com.dfsek.terra.config.pack;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.annotations.Default;
|
||||||
|
import com.dfsek.tectonic.annotations.Value;
|
||||||
|
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||||
|
import com.dfsek.terra.api.addon.TerraAddon;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class ConfigPackAddonsTemplate implements ConfigTemplate {
|
||||||
|
@Value("addons")
|
||||||
|
@Default
|
||||||
|
private Set<TerraAddon> addons = new HashSet<>();
|
||||||
|
|
||||||
|
|
||||||
|
public Set<TerraAddon> getAddons() {
|
||||||
|
return addons;
|
||||||
|
}
|
||||||
|
}
|
||||||
+21
-22
@@ -13,11 +13,7 @@ import com.dfsek.tectonic.loading.TypeRegistry;
|
|||||||
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
import com.dfsek.terra.api.addon.TerraAddon;
|
import com.dfsek.terra.api.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.config.AbstractableTemplate;
|
import com.dfsek.terra.api.config.*;
|
||||||
import com.dfsek.terra.api.config.ConfigFactory;
|
|
||||||
import com.dfsek.terra.api.config.ConfigPack;
|
|
||||||
import com.dfsek.terra.api.config.ConfigType;
|
|
||||||
import com.dfsek.terra.api.config.Loader;
|
|
||||||
import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent;
|
import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent;
|
||||||
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
|
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
|
||||||
import com.dfsek.terra.api.registry.CheckedRegistry;
|
import com.dfsek.terra.api.registry.CheckedRegistry;
|
||||||
@@ -25,8 +21,8 @@ import com.dfsek.terra.api.registry.OpenRegistry;
|
|||||||
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
||||||
import com.dfsek.terra.api.registry.meta.RegistryFactory;
|
import com.dfsek.terra.api.registry.meta.RegistryFactory;
|
||||||
import com.dfsek.terra.api.util.generic.pair.ImmutablePair;
|
import com.dfsek.terra.api.util.generic.pair.ImmutablePair;
|
||||||
import com.dfsek.terra.api.world.TerraWorld;
|
|
||||||
import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder;
|
import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder;
|
||||||
|
import com.dfsek.terra.api.world.TerraWorld;
|
||||||
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
|
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
|
||||||
import com.dfsek.terra.config.dummy.DummyWorld;
|
import com.dfsek.terra.config.dummy.DummyWorld;
|
||||||
import com.dfsek.terra.config.fileloaders.FolderLoader;
|
import com.dfsek.terra.config.fileloaders.FolderLoader;
|
||||||
@@ -44,18 +40,8 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serial;
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
|
|
||||||
@@ -76,6 +62,8 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
|
|
||||||
private final Configuration configuration;
|
private final Configuration configuration;
|
||||||
|
|
||||||
|
private final Set<TerraAddon> addons;
|
||||||
|
|
||||||
private final BiomeProviderBuilder biomeProviderBuilder;
|
private final BiomeProviderBuilder biomeProviderBuilder;
|
||||||
|
|
||||||
|
|
||||||
@@ -106,12 +94,16 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
configuration = new Configuration(new FileInputStream(pack));
|
configuration = new Configuration(new FileInputStream(pack));
|
||||||
selfLoader.load(template, configuration);
|
|
||||||
|
|
||||||
main.logger().info("Loading config pack \"" + template.getID() + "\"");
|
ConfigPackAddonsTemplate addonsTemplate = new ConfigPackAddonsTemplate();
|
||||||
|
selfLoader.load(addonsTemplate, configuration);
|
||||||
|
this.addons = addonsTemplate.getAddons();
|
||||||
|
|
||||||
main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration)));
|
main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration)));
|
||||||
|
|
||||||
|
selfLoader.load(template, configuration);
|
||||||
|
|
||||||
|
main.logger().info("Loading config pack \"" + template.getID() + "\"");
|
||||||
load(l, main);
|
load(l, main);
|
||||||
|
|
||||||
ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate();
|
ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate();
|
||||||
@@ -158,11 +150,17 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
if(pack == null) throw new LoadException("No pack.yml file found in " + file.getName());
|
if(pack == null) throw new LoadException("No pack.yml file found in " + file.getName());
|
||||||
|
|
||||||
configuration = new Configuration(file.getInputStream(pack));
|
configuration = new Configuration(file.getInputStream(pack));
|
||||||
selfLoader.load(template, configuration);
|
|
||||||
main.logger().info("Loading config pack \"" + template.getID() + "\"");
|
ConfigPackAddonsTemplate addonsTemplate = new ConfigPackAddonsTemplate();
|
||||||
|
selfLoader.load(addonsTemplate, configuration);
|
||||||
|
this.addons = addonsTemplate.getAddons();
|
||||||
|
|
||||||
main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration)));
|
main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration)));
|
||||||
|
|
||||||
|
|
||||||
|
selfLoader.load(template, configuration);
|
||||||
|
main.logger().info("Loading config pack \"" + template.getID() + "\"");
|
||||||
|
|
||||||
load(l, main);
|
load(l, main);
|
||||||
|
|
||||||
ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate();
|
ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate();
|
||||||
@@ -185,6 +183,7 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
private void checkDeadEntries(TerraPlugin main) {
|
private void checkDeadEntries(TerraPlugin main) {
|
||||||
registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl<?>) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'")));
|
registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl<?>) pair.getLeft()).getDeadEntries().forEach((id, value) -> main.getDebugLogger().warning("Dead entry in '" + clazz + "' registry: '" + id + "'")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> ConfigPackImpl applyLoader(Type type, TypeLoader<T> loader) {
|
public <T> ConfigPackImpl applyLoader(Type type, TypeLoader<T> loader) {
|
||||||
abstractConfigLoader.registerLoader(type, loader);
|
abstractConfigLoader.registerLoader(type, loader);
|
||||||
@@ -306,7 +305,7 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<TerraAddon> addons() {
|
public Set<TerraAddon> addons() {
|
||||||
return template.getAddons();
|
return addons;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
-8
@@ -17,10 +17,6 @@ public class ConfigPackTemplate implements ConfigTemplate {
|
|||||||
@Value("id")
|
@Value("id")
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Value("addons")
|
|
||||||
@Default
|
|
||||||
private Set<TerraAddon> addons = new HashSet<>();
|
|
||||||
|
|
||||||
@Value("variables")
|
@Value("variables")
|
||||||
@Default
|
@Default
|
||||||
private Map<String, Double> variables = new HashMap<>();
|
private Map<String, Double> variables = new HashMap<>();
|
||||||
@@ -159,8 +155,4 @@ public class ConfigPackTemplate implements ConfigTemplate {
|
|||||||
public boolean doBetaCarvers() {
|
public boolean doBetaCarvers() {
|
||||||
return betaCarvers;
|
return betaCarvers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<TerraAddon> getAddons() {
|
|
||||||
return addons;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user