From 06d9fa1d98baeef269a652911587e40554f3e600 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 26 Nov 2020 20:51:06 -0700 Subject: [PATCH] Actually load configs on startup --- lib/Tectonic-0.1.0.jar | Bin 29734 -> 30189 bytes src/main/java/com/dfsek/terra/Terra.java | 2 ++ .../dfsek/terra/config/base/ConfigPack.java | 30 ++++++++++-------- .../dfsek/terra/config/base/PluginConfig.java | 1 + .../dfsek/terra/config/base/WorldConfig.java | 3 +- .../terra/config/factories/CarverFactory.java | 2 +- .../config/templates/CarverTemplate.java | 2 +- .../config/templates/StructureTemplate.java | 2 +- .../dfsek/terra/registry/ConfigRegistry.java | 23 ++++++++++++++ .../java/com/dfsek/terra/util/ConfigUtil.java | 3 +- 10 files changed, 50 insertions(+), 18 deletions(-) diff --git a/lib/Tectonic-0.1.0.jar b/lib/Tectonic-0.1.0.jar index 4ac0fea7ce6208a7e9480221e2498d44a6ba1f25..40e2f36a1d03472417d728ceabe1eb7eeba374f9 100644 GIT binary patch delta 7887 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 delta 7397 zcmZX3Wmr|u*ETJO?rx9<=`QI*cPri9&5@QozyYK?1(fdYMpO`_LqJj*q+U4w{yvx2 zyFcuix%WM5V(qnNt-TNSU`uvj(bW{;5l~=Ykda~P(R>rpd*GjnX^y7?a$x)%qGpL& z#{+AF{sh$JV)P?HD^~ad04OD&LI4UZQn0{cKT_0@u<7!Cqrt%BQNh5lK@#~XAg}Cj zKn?l;AFUbudsVKHOkZDaAQBuJGMcF(J%AROnvOL>f(nNK5F+u40wQ_;C{uxGU!^Ehg(@xow(!j>>FE#bRf>)kRaFfQRj=wRMK3$jN6^y4qJn~Y-reN- z9|~^g_^0}BOlyKE5je6*ED>DQdZ~%^K>{{XFp-YcYfJ#~gv6LoF3ljuH95XH#N#2Z z6NH;De0V4U(z2c1Q*&x`zv{RmkORIVz3ZMDA!7e^$`?y;#lR&CxYZ;b1l)2Hn?%4;_jx?}CpF5l(*1Hv9Br>jvfAb+DMFDuE#fJR=LYj!m+ zrS^*7G6p=LAh_=RA$EoiXwi@~0aB=q9s89k?W?0HA=t!fXBf`Y~vmu;a5p5B6hK99u z=BJNH2JO_2g~q2c?G=rU_PlYOCYepX=6Y?tq^4#Zc{lBn;ghi;`O|9r3n1<$D|Y*Y z1u4HwifMj(hwjRI?XTA}E_$pAa=0OG)_bs`T<;QIX|!gTl%w+5n<@H97|u>NzC^9k z;J->=cR>5C^Ngp6l?xvbkb>%F4$kW@EFM`&v)qb-s>Gs(-nQotrN z$B(M{rI0(zE}>Vj7UmneT;Pi2fZ8@Omup$^eTxwA$vV|#!=%W%H45YryBpy`SM!uusCQX!;GOC%m{U+|1@Wl5!SKmwt>7Ce#2Ka9gh{g( zo`E-I8KxPXbaAq2r){DJ-v+(;5;l`7&G=TTA=>Db<(0S7gJr=Kaq7i$AkPKlLsN)z zvHF^n;ehG*#kKjJj1!7iSb#wXyGkcV3xzWF1>;-@i*G>_giQz3R~3MOA{Lh*=|mz| zMl9i8N$&4YTIe0bvGeWgn{t^R>*JPYIP=pQTge%!0jD^d%Aus=GZ*U@3pNuywkdobi4ud?#ZaT<2?WeWV%>IH!{rzf|sO4zHvPgiX=mTlRR?W zsd|ri?wzpR9-tuzYkyT59K*7MZ>>_4Futz(%POyTQ&|*;w%J~a+S8u46lhh_XamdE zf7V~C#ZN+`Y@1F7G%{fATd&<`Y8n=6nJWrJIBsW*^N~va(v97re9A6g|66IDo5*%X zGK#lmzr>7W>ar0Hl|`2{BX3p6BWhYYoPOFOT%jx(wL=m_!3-%g%16m4NYD+KEG|b; zEVXU~#0_({EQ(TjOcEyE!6 z+3u%!b#c~t3MO=-AA8n}XZ4$i`@DHa=`!trbJubE%AU$vIXDNyq|KZk#z z(y59y`b@+`Q#~n0?gQm&jzD`ZlO(X@QlR$??AEiHdHx&iaLatEx7T^!*MqjCHGx{V25Zk1Lnnj?v5uc*?k8yk<;3ofQEsoj&x_nUe=~X{ zrU;Z`>N2YIYX)8|4ShbV*6;HuY_H?VX>t!%C;=HL%tkE<=(!&y)*J%LQ!l))%$8{C zz!`EvTmyvGw@Z>%hbg-R5O*6C>-BQGA6W5at<}_3djor{leN+den`5v3F$0tG9E|3 zpB6=^uu=2Mef>J%j;&!I#aJDsdAETo1A%19Kh~wwPfJJy|BS(<69zL+a z(aji=xNervooTwkDL#4ChM#9%{R{c)?oTA&f?{sx>((ZC?&m21kqAPy~idxs-0

Zs^}K< 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 diff --git a/src/main/java/com/dfsek/terra/Terra.java b/src/main/java/com/dfsek/terra/Terra.java index 8c4d1a2da..f385f18fe 100644 --- a/src/main/java/com/dfsek/terra/Terra.java +++ b/src/main/java/com/dfsek/terra/Terra.java @@ -6,6 +6,7 @@ import com.dfsek.terra.config.base.PluginConfig; import com.dfsek.terra.config.base.WorldConfig; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.generation.TerraChunkGenerator; +import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.util.PaperUtil; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -49,6 +50,7 @@ public class Terra extends GaeaPlugin { PluginConfig.load(this); LangUtil.load(PluginConfig.getLanguage(), this); // Load language. TerraWorld.invalidate(); + ConfigRegistry.loadAll(this); PluginCommand c = Objects.requireNonNull(getCommand("terra")); TerraCommand command = new TerraCommand(this); diff --git a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java index 0297bbf40..7fe7cceda 100644 --- a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java +++ b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.base; import com.dfsek.tectonic.abstraction.AbstractConfigLoader; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.terra.Debug; import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.builder.BiomeGridBuilder; @@ -35,7 +36,6 @@ import java.util.logging.Level; * Represents a Terra configuration pack. */ public class ConfigPack { - private static final Map configs = new HashMap<>(); private final ConfigPackTemplate template = new ConfigPackTemplate(); private final Map biomes = new HashMap<>(); private final Map biomeGrids = new HashMap<>(); @@ -60,31 +60,35 @@ public class ConfigPack { AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); List structureTemplates = abstractConfigLoader.load(ConfigUtil.loadFromPath(new File(folder, "structures/single").toPath()), StructureTemplate::new); - structureTemplates.forEach(structure -> structures.put(structure.getId(), structure)); + structureTemplates.forEach(structure -> { + structures.put(structure.getID(), structure); + Debug.info("Loaded structure " + structure.getID()); + }); List carverTemplates = abstractConfigLoader.load(ConfigUtil.loadFromPath(new File(folder, "carving").toPath()), CarverTemplate::new); CarverFactory carverFactory = new CarverFactory(); - carverTemplates.forEach(carver -> carvers.put(carver.getId(), carverFactory.build(carver))); + carverTemplates.forEach(carver -> { + carvers.put(carver.getID(), carverFactory.build(carver)); + Debug.info("Loaded carver " + carver.getID()); + }); List biomeTemplates = abstractConfigLoader.load(ConfigUtil.loadFromPath(new File(folder, "biomes").toPath()), () -> new BiomeTemplate(this)); BiomeFactory biomeFactory = new BiomeFactory(); - biomeTemplates.forEach(biome -> biomes.put(biome.getID(), biomeFactory.build(biome))); + biomeTemplates.forEach(biome -> { + biomes.put(biome.getID(), biomeFactory.build(biome)); + Debug.info("Loaded biome " + biome.getID()); + }); List biomeGridTemplates = abstractConfigLoader.load(ConfigUtil.loadFromPath(new File(folder, "grids").toPath()), BiomeGridTemplate::new); BiomeGridFactory biomeGridFactory = new BiomeGridFactory(); - biomeGridTemplates.forEach(grid -> biomeGrids.put(grid.getID(), biomeGridFactory.build(grid))); - - - configs.put(template.getID(), this); - + biomeGridTemplates.forEach(grid -> { + biomeGrids.put(grid.getID(), biomeGridFactory.build(grid)); + Debug.info("Loaded BiomeGrid " + grid.getID()); + }); LangUtil.log("config-pack.loaded", Level.INFO, template.getID(), String.valueOf((System.nanoTime() - l) / 1000000D)); } - public static ConfigPack fromID(String id) { - return configs.get(id); - } - public UserDefinedBiome getBiome(String id) { return biomes.get(id); } diff --git a/src/main/java/com/dfsek/terra/config/base/PluginConfig.java b/src/main/java/com/dfsek/terra/config/base/PluginConfig.java index 716c372ab..9cfba5641 100644 --- a/src/main/java/com/dfsek/terra/config/base/PluginConfig.java +++ b/src/main/java/com/dfsek/terra/config/base/PluginConfig.java @@ -69,6 +69,7 @@ public class PluginConfig implements ConfigTemplate { } catch(ConfigException | IOException e) { e.printStackTrace(); } + logger.info("Debug: " + isDebug()); } public static String getLanguage() { diff --git a/src/main/java/com/dfsek/terra/config/base/WorldConfig.java b/src/main/java/com/dfsek/terra/config/base/WorldConfig.java index 6038104c6..e8554ed48 100644 --- a/src/main/java/com/dfsek/terra/config/base/WorldConfig.java +++ b/src/main/java/com/dfsek/terra/config/base/WorldConfig.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.Debug; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.image.ImageLoader; +import com.dfsek.terra.registry.ConfigRegistry; import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; import org.bukkit.configuration.InvalidConfigurationException; @@ -54,7 +55,7 @@ public class WorldConfig implements ConfigTemplate { // Get values from config. fromImage = config.getBoolean("image.enable", false); - tConfig = ConfigPack.fromID(configID); + tConfig = ConfigRegistry.getRegistry().get(configID); // Load image stuff try { diff --git a/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java b/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java index b25c698d8..7658a8062 100644 --- a/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java +++ b/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java @@ -9,7 +9,7 @@ public class CarverFactory implements TerraFactory update = new HashSet<>(); - public String getId() { + public String getID() { return id; } diff --git a/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index e5c7c73d2..694881957 100644 --- a/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -48,7 +48,7 @@ public class StructureTemplate implements ConfigTemplate { return loot; } - public String getId() { + public String getID() { return id; } diff --git a/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java b/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java index ba4ab0c45..c9f60b44d 100644 --- a/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java +++ b/src/main/java/com/dfsek/terra/registry/ConfigRegistry.java @@ -1,6 +1,7 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.terra.Terra; import com.dfsek.terra.config.base.ConfigPack; import java.io.File; @@ -9,8 +10,30 @@ import java.io.File; * Class to hold config packs */ public class ConfigRegistry extends TerraRegistry { + private static ConfigRegistry singleton; + + private ConfigRegistry() { + + } + + public static ConfigRegistry getRegistry() { + if(singleton == null) singleton = new ConfigRegistry(); + return singleton; + } + public void load(File folder) throws ConfigException { ConfigPack pack = new ConfigPack(folder); add(pack.getTemplate().getID(), pack); } + + public static void loadAll(Terra main) { + File packsFolder = new File(main.getDataFolder(), "packs"); + for(File dir : packsFolder.listFiles(File::isDirectory)) { + try { + getRegistry().load(dir); + } catch(ConfigException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/main/java/com/dfsek/terra/util/ConfigUtil.java b/src/main/java/com/dfsek/terra/util/ConfigUtil.java index 53f7fa9de..2aaa0a023 100644 --- a/src/main/java/com/dfsek/terra/util/ConfigUtil.java +++ b/src/main/java/com/dfsek/terra/util/ConfigUtil.java @@ -13,8 +13,9 @@ import java.util.stream.Stream; public final class ConfigUtil { public static List loadFromPath(Path folder) { List streams = new ArrayList<>(); + folder.toFile().mkdirs(); try(Stream paths = Files.walk(folder)) { - paths.filter(Files::isRegularFile).filter(file -> file.endsWith(".yml")).forEach(file -> { + paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(".yml")).forEach(file -> { try { streams.add(new FileInputStream(file.toFile())); } catch(FileNotFoundException e) {