package carpet.script.utils; import carpet.fakes.BiomeEffectsInterface; import carpet.fakes.PlacedFeatureInterface; import carpet.script.value.BlockValue; import carpet.script.value.ListValue; import carpet.script.value.NumericValue; import carpet.script.value.StringValue; import carpet.script.value.Value; import carpet.script.value.ValueConversions; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.registry.Registry; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.ConfiguredStructureFeature; import java.util.HashMap; import java.util.Map; import java.util.function.BiFunction; public class BiomeInfo { public final static Map> biomeFeatures = new HashMap>(){{ //put("top_material", (w, b) -> new BlockValue( b.getGenerationSettings(). getSurfaceConfig().getTopMaterial(), null, null)); //put("under_material", (w, b) -> new BlockValue( b.getGenerationSettings().getSurfaceConfig().getUnderMaterial(), null, null)); put("category", (w, b) -> StringValue.of(b.getCategory().getName())); put("temperature", (w, b) -> NumericValue.of(b.getTemperature())); put("fog_color", (w, b) -> ValueConversions.ofRGB(b.getEffects().getFogColor())); put("foliage_color", (w, b) -> ValueConversions.ofRGB(b.getEffects().getFoliageColor().orElse(4764952))); // client Biome.getDefaultFoliageColor put("sky_color", (w, b) -> ValueConversions.ofRGB(b.getEffects().getSkyColor())); put("water_color", (w, b) -> ValueConversions.ofRGB(b.getEffects().getWaterColor())); put("water_fog_color", (w, b) -> ValueConversions.ofRGB(b.getEffects().getWaterFogColor())); put("humidity", (w, b) -> NumericValue.of(b.getDownfall())); put("precipitation", (w, b) -> StringValue.of(b.getPrecipitation().getName())); //put("depth", (w, b) -> NumericValue.of(b.getDepth())); //put("scale", (w, b) -> NumericValue.of(b.getScale())); put("features", (w, b) -> { Registry> registry = w.getRegistryManager().get(Registry.CONFIGURED_FEATURE_KEY); return ListValue.wrap( b.getGenerationSettings().getFeatures().stream().map(step -> ListValue.wrap(step.stream().map(cfp -> ValueConversions.of(registry.getId(((PlacedFeatureInterface)cfp.get()).getRawFeature())) )) ) ); }); //put("structures", (w, b) -> { // Registry> registry = w.getRegistryManager().get(Registry.CONFIGURED_STRUCTURE_FEATURE_KEY); // return ListValue.wrap(b.getGenerationSettings().getStructureFeatures().stream().map(str -> ValueConversions.of(registry.getId(str.get())))); //}); }}; }