mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-04 06:46:21 +00:00
custom biome color configuration
This commit is contained in:
@@ -4,7 +4,10 @@ import com.dfsek.terra.api.platform.world.Biome;
|
|||||||
import com.dfsek.terra.api.util.collections.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collections.ProbabilityCollection;
|
||||||
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||||
|
import com.dfsek.terra.config.templates.BiomeTemplate;
|
||||||
|
|
||||||
public interface BiomeBuilder extends SeededBuilder<TerraBiome> {
|
public interface BiomeBuilder extends SeededBuilder<TerraBiome> {
|
||||||
ProbabilityCollection<Biome> getVanillaBiomes();
|
ProbabilityCollection<Biome> getVanillaBiomes();
|
||||||
|
|
||||||
|
BiomeTemplate getTemplate();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,4 +66,9 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder {
|
|||||||
public ProbabilityCollection<Biome> getVanillaBiomes() {
|
public ProbabilityCollection<Biome> getVanillaBiomes() {
|
||||||
return template.getVanilla();
|
return template.getVanilla();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BiomeTemplate getTemplate() {
|
||||||
|
return template;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,10 +190,19 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf
|
|||||||
@Default
|
@Default
|
||||||
private Map<UserDefinedCarver, Integer> carvers = new HashMap<>();
|
private Map<UserDefinedCarver, Integer> carvers = new HashMap<>();
|
||||||
|
|
||||||
|
@Value("colors")
|
||||||
|
@Abstractable
|
||||||
|
@Default
|
||||||
|
private Map<String, Integer> colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything).
|
||||||
|
|
||||||
public Set<String> getTags() {
|
public Set<String> getTags() {
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> getColors() {
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
|
||||||
public Map<UserDefinedCarver, Integer> getCarvers() {
|
public Map<UserDefinedCarver, Integer> getCarvers() {
|
||||||
return carvers;
|
return carvers;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import com.dfsek.terra.config.loaders.config.biome.templates.provider.SingleBiom
|
|||||||
import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader;
|
import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
||||||
|
import com.dfsek.terra.config.templates.BiomeTemplate;
|
||||||
import com.dfsek.terra.registry.config.BiomeRegistry;
|
import com.dfsek.terra.registry.config.BiomeRegistry;
|
||||||
import com.dfsek.terra.registry.config.NoiseRegistry;
|
import com.dfsek.terra.registry.config.NoiseRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
@@ -306,6 +307,11 @@ public class DistributionTest {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BiomeTemplate getTemplate() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Generator getGenerator(World w) {
|
public Generator getGenerator(World w) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import com.dfsek.terra.config.builder.BiomeBuilder;
|
|||||||
import com.dfsek.terra.config.lang.LangUtil;
|
import com.dfsek.terra.config.lang.LangUtil;
|
||||||
import com.dfsek.terra.config.lang.Language;
|
import com.dfsek.terra.config.lang.Language;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
|
import com.dfsek.terra.config.templates.BiomeTemplate;
|
||||||
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
||||||
import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor;
|
import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor;
|
||||||
import com.dfsek.terra.fabric.world.FabricAdapter;
|
import com.dfsek.terra.fabric.world.FabricAdapter;
|
||||||
@@ -246,6 +247,9 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
DefaultBiomeFeatures.addFarmAnimals(spawnSettings);
|
DefaultBiomeFeatures.addFarmAnimals(spawnSettings);
|
||||||
DefaultBiomeFeatures.addMonsters(spawnSettings, 95, 5, 100);
|
DefaultBiomeFeatures.addMonsters(spawnSettings, 95, 5, 100);
|
||||||
|
|
||||||
|
BiomeTemplate template = biome.getTemplate();
|
||||||
|
Map<String, Integer> colors = template.getColors();
|
||||||
|
|
||||||
Biome vanilla = ((FabricBiome) new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0)).getHandle();
|
Biome vanilla = ((FabricBiome) new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0)).getHandle();
|
||||||
|
|
||||||
GenerationSettings.Builder generationSettings = new GenerationSettings.Builder();
|
GenerationSettings.Builder generationSettings = new GenerationSettings.Builder();
|
||||||
@@ -254,28 +258,37 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
|
|
||||||
|
|
||||||
BiomeEffects.Builder effects = new BiomeEffects.Builder()
|
BiomeEffects.Builder effects = new BiomeEffects.Builder()
|
||||||
.waterColor(vanilla.getEffects().waterColor)
|
.waterColor(colors.getOrDefault("water", vanilla.getEffects().waterColor))
|
||||||
.waterFogColor(vanilla.getEffects().waterFogColor)
|
.waterFogColor(colors.getOrDefault("water-fog", vanilla.getEffects().waterFogColor))
|
||||||
.fogColor(vanilla.getEffects().fogColor)
|
.fogColor(colors.getOrDefault("fog", vanilla.getEffects().fogColor))
|
||||||
.skyColor(vanilla.getEffects().skyColor)
|
.skyColor(colors.getOrDefault("sky", vanilla.getEffects().skyColor))
|
||||||
.grassColorModifier(vanilla.getEffects().grassColorModifier);
|
.grassColorModifier(vanilla.getEffects().grassColorModifier);
|
||||||
vanilla.getEffects().grassColor.ifPresent(effects::grassColor);
|
|
||||||
vanilla.getEffects().foliageColor.ifPresent(effects::foliageColor);
|
|
||||||
|
|
||||||
return (new Biome.Builder())
|
if(colors.containsKey("grass")) {
|
||||||
|
effects.grassColor(colors.get("grass"));
|
||||||
|
} else {
|
||||||
|
vanilla.getEffects().grassColor.ifPresent(effects::grassColor);
|
||||||
|
}
|
||||||
|
vanilla.getEffects().foliageColor.ifPresent(effects::foliageColor);
|
||||||
|
if(colors.containsKey("foliage")) {
|
||||||
|
effects.foliageColor(colors.get("foliage"));
|
||||||
|
} else {
|
||||||
|
vanilla.getEffects().foliageColor.ifPresent(effects::foliageColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Biome.Builder()
|
||||||
.precipitation(vanilla.getPrecipitation())
|
.precipitation(vanilla.getPrecipitation())
|
||||||
.category(vanilla.getCategory())
|
.category(vanilla.getCategory())
|
||||||
.depth(vanilla.getDepth())
|
.depth(vanilla.getDepth())
|
||||||
.scale(vanilla.getScale())
|
.scale(vanilla.getScale())
|
||||||
.temperature(vanilla.getTemperature())
|
.temperature(vanilla.getTemperature())
|
||||||
.downfall(vanilla.getDownfall())
|
.downfall(vanilla.getDownfall())
|
||||||
.effects(vanilla.getEffects()) // TODO: configurable
|
.effects(effects.build())
|
||||||
.spawnSettings(spawnSettings.build())
|
.spawnSettings(spawnSettings.build())
|
||||||
.generationSettings(generationSettings.build())
|
.generationSettings(generationSettings.build())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|||||||
Reference in New Issue
Block a user