Merge remote-tracking branch 'duplexsystem/dev/enviroment' into ver/6.2.0

This commit is contained in:
Zoë 2022-06-26 21:39:52 -07:00
commit 4487be03f1
10 changed files with 308 additions and 55 deletions

1
.gitignore vendored
View File

@ -246,3 +246,4 @@ nbdist/
/run/ /run/
**/testDir/ **/testDir/
platforms/fabric/run/config/Terra/config.yml

View File

@ -32,6 +32,10 @@ import com.dfsek.terra.mod.util.PresetUtil;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.MinecraftVersion; import net.minecraft.MinecraftVersion;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.sound.BiomeAdditionsSound;
import net.minecraft.sound.BiomeMoodSound;
import net.minecraft.sound.MusicSound;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.BuiltinRegistries;
import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionOptions;

View File

@ -6,12 +6,14 @@ import com.dfsek.terra.fabric.FabricEntryPoint;
import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions;
import com.dfsek.terra.mod.config.ProtoPlatformBiome; import com.dfsek.terra.mod.config.ProtoPlatformBiome;
import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder;
import com.dfsek.terra.mod.util.MinecraftUtil; import com.dfsek.terra.mod.util.MinecraftUtil;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.BuiltinRegistries;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -68,5 +70,4 @@ public final class BiomeUtil {
MinecraftUtil.TERRA_BIOME_MAP.computeIfAbsent(vanilla.getValue(), i -> new ArrayList<>()).add(identifier); MinecraftUtil.TERRA_BIOME_MAP.computeIfAbsent(vanilla.getValue(), i -> new ArrayList<>()).add(identifier);
} }
} }
} }

View File

@ -0,0 +1,27 @@
package com.dfsek.terra.mod.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import net.minecraft.sound.BiomeAdditionsSound;
import net.minecraft.sound.SoundEvent;
public class BiomeAdditionsSoundTemplate implements ObjectTemplate<BiomeAdditionsSound> {
@Value("sound")
@Default
private SoundEvent sound = null;
@Value("sound")
@Default
private Double soundChance = null;
@Override
public BiomeAdditionsSound get() {
if (sound == null || soundChance == null) {
return null;
} else {
return new BiomeAdditionsSound(sound, soundChance);
}
}
}

View File

@ -0,0 +1,35 @@
package com.dfsek.terra.mod.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import net.minecraft.sound.BiomeMoodSound;
import net.minecraft.sound.SoundEvent;
public class BiomeMoodSoundTemplate implements ObjectTemplate<BiomeMoodSound> {
@Value("sound")
@Default
private SoundEvent sound = null;
@Value("cultivation-ticks")
@Default
private Integer soundCultivationTicks = null;
@Value("spawn-range")
@Default
private Integer soundSpawnRange = null;
@Value("extra-distance")
@Default
private Double soundExtraDistance = null;
@Override
public BiomeMoodSound get() {
if (sound == null || soundCultivationTicks == null || soundSpawnRange == null || soundExtraDistance == null) {
return null;
} else {
return new BiomeMoodSound(sound, soundCultivationTicks, soundSpawnRange, soundExtraDistance);
}
}
}

View File

@ -0,0 +1,33 @@
package com.dfsek.terra.mod.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.command.argument.ParticleEffectArgumentType;
import net.minecraft.world.biome.BiomeParticleConfig;
public class BiomeParticleConfigTemplate implements ObjectTemplate<BiomeParticleConfig> {
@Value("particle")
@Default
private String particle = null;
@Value("probability")
@Default
private Integer particleProbability = null;
@Override
public BiomeParticleConfig get() {
if (particle == null || particleProbability == null) {
return null;
}
try {
return new BiomeParticleConfig(ParticleEffectArgumentType.readParameters(new StringReader(particle)), particleProbability);
} catch(CommandSyntaxException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -0,0 +1,35 @@
package com.dfsek.terra.mod.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import net.minecraft.sound.MusicSound;
import net.minecraft.sound.SoundEvent;
public class MusicSoundTemplate implements ObjectTemplate<MusicSound> {
@Value("sound")
@Default
private SoundEvent sound = null;
@Value("min-delay")
@Default
private Integer minDelay = null;
@Value("max-delay")
@Default
private Integer maxDelay = null;
@Value("-current-music")
@Default
private Boolean replaceCurrentMusic = null;
@Override
public MusicSound get() {
if (sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) {
return null;
} else {
return new MusicSound(sound, minDelay, maxDelay, replaceCurrentMusic);
}
}
}

View File

@ -0,0 +1,29 @@
package com.dfsek.terra.mod.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
public class SoundEventTemplate implements ObjectTemplate<SoundEvent> {
@Value("id")
@Default
private Identifier id = null;
@Value("distanceToTravel")
@Default
private Float distanceToTravel = null;
@Override
public SoundEvent get() {
if (id == null) {
return null;
} else if (distanceToTravel == null) {
return new SoundEvent(id);
} else {
return new SoundEvent(id, distanceToTravel);
}
}
}

View File

@ -3,11 +3,18 @@ package com.dfsek.terra.mod.config;
import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.ConfigTemplate;
import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.annotations.Value;
import net.minecraft.sound.BiomeAdditionsSound;
import net.minecraft.sound.BiomeMoodSound;
import net.minecraft.sound.MusicSound;
import net.minecraft.sound.SoundEvent;
import net.minecraft.world.biome.Biome.Precipitation; import net.minecraft.world.biome.Biome.Precipitation;
import net.minecraft.world.biome.Biome.TemperatureModifier;
import net.minecraft.world.biome.BiomeEffects.GrassColorModifier; import net.minecraft.world.biome.BiomeEffects.GrassColorModifier;
import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.properties.Properties;
import net.minecraft.world.biome.BiomeParticleConfig;
public class VanillaBiomeProperties implements ConfigTemplate, Properties { public class VanillaBiomeProperties implements ConfigTemplate, Properties {
@Value("colors.grass") @Value("colors.grass")
@ -38,22 +45,50 @@ public class VanillaBiomeProperties implements ConfigTemplate, Properties {
@Default @Default
private GrassColorModifier modifier = null; private GrassColorModifier modifier = null;
@Value("particles")
@Default
private BiomeParticleConfig particleConfig = null;
@Value("climate.precipitation") @Value("climate.precipitation")
@Default @Default
private Precipitation precipitation = null; private Precipitation precipitation = null;
public Integer getFogColor() { @Value("climate.temperature")
return fogColor; @Default
} private Float temperature = null;
public Integer getFoliageColor() { @Value("climate.temperature-modifier")
return foliageColor; @Default
} private TemperatureModifier temperatureModifier = null;
@Value("climate.downfall")
@Default
private Float downfall = null;
@Value("sound.loop-sound.sound")
@Default
private SoundEvent loopSound = null;
@Value("sound.mood-sound")
@Default
private BiomeMoodSound moodSound = null;
@Value("sound.additions-sound")
@Default
private BiomeAdditionsSound additionsSound = null;
@Value("sound.music")
@Default
private MusicSound music = null;
public Integer getGrassColor() { public Integer getGrassColor() {
return grassColor; return grassColor;
} }
public Integer getFogColor() {
return fogColor;
}
public Integer getWaterColor() { public Integer getWaterColor() {
return waterColor; return waterColor;
} }
@ -62,15 +97,51 @@ public class VanillaBiomeProperties implements ConfigTemplate, Properties {
return waterFogColor; return waterFogColor;
} }
public Integer getFoliageColor() {
return foliageColor;
}
public Integer getSkyColor() { public Integer getSkyColor() {
return skyColor; return skyColor;
} }
public GrassColorModifier getGrassColorModifier() {
return modifier;
}
public BiomeParticleConfig getParticleConfig() {
return particleConfig;
}
public Precipitation getPrecipitation() { public Precipitation getPrecipitation() {
return precipitation; return precipitation;
} }
public GrassColorModifier getModifier() { public Float getTemperature() {
return modifier; return temperature;
}
public TemperatureModifier getTemperatureModifier() {
return temperatureModifier;
}
public Float getDownfall() {
return downfall;
}
public SoundEvent getLoopSound() {
return loopSound;
}
public BiomeMoodSound getMoodSound() {
return moodSound;
}
public BiomeAdditionsSound getAdditionsSound() {
return additionsSound;
}
public MusicSound getMusic() {
return music;
} }
} }

View File

@ -94,9 +94,8 @@ public final class MinecraftUtil {
BiomeEffects.Builder effects = new BiomeEffects.Builder(); BiomeEffects.Builder effects = new BiomeEffects.Builder();
Biome.Builder builder = new Builder(); net.minecraft.world.biome.Biome.Builder builder = new Builder();
if(biome.getContext().has(VanillaBiomeProperties.class)) {
VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class);
effects.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) effects.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor()))
@ -104,14 +103,7 @@ public final class MinecraftUtil {
.fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) .fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor()))
.skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())) .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor()))
.grassColorModifier( .grassColorModifier(
Objects.requireNonNullElse(vanillaBiomeProperties.getModifier(), vanilla.getEffects().getGrassColorModifier())); Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), vanilla.getEffects().getGrassColorModifier()));
if(vanillaBiomeProperties.getGrassColor() == null) {
vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor);
} else {
effects.grassColor(vanillaBiomeProperties.getGrassColor());
}
if (vanillaBiomeProperties.getFoliageColor() == null) { if (vanillaBiomeProperties.getFoliageColor() == null) {
vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor); vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor);
@ -119,28 +111,53 @@ public final class MinecraftUtil {
effects.foliageColor(vanillaBiomeProperties.getFoliageColor()); effects.foliageColor(vanillaBiomeProperties.getFoliageColor());
} }
builder.precipitation(Objects.requireNonNullElse(vanillaBiomeProperties.getPrecipitation(), vanilla.getPrecipitation())); if (vanillaBiomeProperties.getGrassColor() == null) {
} else {
effects.waterColor(vanilla.getWaterColor())
.waterFogColor(vanilla.getWaterFogColor())
.fogColor(vanilla.getFogColor())
.skyColor(vanilla.getSkyColor());
vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor);
vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor); vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor);
} else {
builder.precipitation(vanilla.getPrecipitation()); effects.grassColor(vanillaBiomeProperties.getGrassColor());
} }
vanilla.getLoopSound().ifPresent(effects::loopSound); if (vanillaBiomeProperties.getParticleConfig() == null) {
vanilla.getAdditionsSound().ifPresent(effects::additionsSound); vanilla.getEffects().getParticleConfig().ifPresent(effects::particleConfig);
vanilla.getMoodSound().ifPresent(effects::moodSound); } else {
vanilla.getMusic().ifPresent(effects::music); effects.particleConfig(vanillaBiomeProperties.getParticleConfig());
vanilla.getParticleConfig().ifPresent(effects::particleConfig); }
if (vanillaBiomeProperties.getLoopSound() == null) {
vanilla.getEffects().getLoopSound().ifPresent(effects::loopSound);
} else {
effects.loopSound(vanillaBiomeProperties.getLoopSound());
}
if (vanillaBiomeProperties.getMoodSound() == null) {
vanilla.getEffects().getMoodSound().ifPresent(effects::moodSound);
} else {
effects.moodSound(vanillaBiomeProperties.getMoodSound());
}
if (vanillaBiomeProperties.getAdditionsSound() == null) {
vanilla.getEffects().getAdditionsSound().ifPresent(effects::additionsSound);
} else {
effects.additionsSound(vanillaBiomeProperties.getAdditionsSound());
}
if (vanillaBiomeProperties.getMusic() == null) {
vanilla.getEffects().getMusic().ifPresent(effects::music);
} else {
effects.music(vanillaBiomeProperties.getMusic());
}
builder.precipitation(Objects.requireNonNullElse(vanillaBiomeProperties.getPrecipitation(), vanilla.getPrecipitation()));
builder.temperature(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperature(), vanilla.getTemperature()));
builder.downfall(Objects.requireNonNullElse(vanillaBiomeProperties.getDownfall(), vanilla.getDownfall()));
if (vanillaBiomeProperties.getTemperatureModifier() != null) {
builder.temperatureModifier(vanillaBiomeProperties.getTemperatureModifier());
}
return builder return builder
.temperature(vanilla.getTemperature())
.downfall(vanilla.getDownfall())
.effects(effects.build()) .effects(effects.build())
.spawnSettings(vanilla.getSpawnSettings()) .spawnSettings(vanilla.getSpawnSettings())
.generationSettings(generationSettings.build()) .generationSettings(generationSettings.build())