Dependency injection moment

This commit is contained in:
dfsek
2020-12-08 20:35:18 -07:00
parent 11cb11bc2b
commit 2b6e8eb67c
45 changed files with 266 additions and 263 deletions

View File

@@ -6,7 +6,6 @@ import com.dfsek.terra.biome.grid.master.TerraRadialBiomeGrid;
import com.dfsek.terra.biome.grid.master.TerraStandardBiomeGrid;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.base.ConfigPackTemplate;
import com.dfsek.terra.config.base.WorldConfig;
import com.dfsek.terra.config.builder.biomegrid.BiomeGridBuilder;
import com.dfsek.terra.debug.Debug;
import com.dfsek.terra.generation.TerraChunkGenerator;
@@ -14,24 +13,16 @@ import org.bukkit.Bukkit;
import org.bukkit.World;
import org.polydev.gaea.biome.BiomeGrid;
import java.util.HashMap;
import java.util.Map;
public class TerraWorld {
private static final Map<World, TerraWorld> map = new HashMap<>();
private static final Map<String, WorldConfig> loaded = new HashMap<>();
private final TerraBiomeGrid grid;
private final BiomeZone zone;
private final ConfigPack config;
private final WorldConfig worldConfig;
private boolean safe;
private TerraWorld(World w) {
public TerraWorld(World w, ConfigPack c) {
safe = true;
worldConfig = loaded.get(w.getName());
config = worldConfig.getConfig();
config = c;
ConfigPackTemplate template = config.getTemplate();
@@ -42,7 +33,7 @@ public class TerraWorld {
String partName = template.getGrids().get(i);
try {
BiomeGridBuilder g = config.getBiomeGrid(partName);
BiomeGrid b = g.build(w, worldConfig);
BiomeGrid b = g.build(w, c);
definedGrids[i] = b;
} catch(NullPointerException e) {
safe = false;
@@ -53,30 +44,14 @@ public class TerraWorld {
Bukkit.getLogger().severe("Terrain will NOT generate properly at this point. Correct your config before using your server!");
}
}
zone = new BiomeZone(w, worldConfig, definedGrids);
zone = new BiomeZone(w, c, definedGrids);
if(template.getGridType().equals(TerraBiomeGrid.Type.RADIAL)) {
BiomeGrid internal = config.getBiomeGrid(template.getRadialInternalGrid()).build(w, worldConfig);
BiomeGrid internal = config.getBiomeGrid(template.getRadialInternalGrid()).build(w, c);
grid = new TerraRadialBiomeGrid(w, template.getGridFreqX(), template.getGridFreqZ(), zone, config, template.getRadialGridRadius(), internal);
} else grid = new TerraStandardBiomeGrid(w, template.getGridFreqX(), template.getGridFreqZ(), zone, config);
}
public static void loadWorld(WorldConfig w) {
loaded.put(w.getWorldID(), w);
}
public static synchronized TerraWorld getWorld(World w) {
return map.computeIfAbsent(w, TerraWorld::new);
}
public static synchronized void invalidate() {
map.clear();
}
public static int numWorlds() {
return map.size();
}
public static boolean isTerraWorld(World w) {
return w.getGenerator() instanceof TerraChunkGenerator;
}
@@ -89,10 +64,6 @@ public class TerraWorld {
return config;
}
public WorldConfig getWorldConfig() {
return worldConfig;
}
public BiomeZone getZone() {
return zone;
}