apply downfall to 1.19 NMS biomes

This commit is contained in:
dfsek 2022-06-12 21:36:29 -07:00
parent fbc1a38a8d
commit ee88f9e75f

View File

@ -1,5 +1,10 @@
package com.dfsek.terra.bukkit.nms.v1_19_R1; package com.dfsek.terra.bukkit.nms.v1_19_R1;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.bukkit.config.VanillaBiomeProperties;
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
import com.dfsek.terra.registry.master.ConfigRegistry;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.mojang.serialization.Lifecycle; import com.mojang.serialization.Lifecycle;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
@ -16,18 +21,7 @@ import org.bukkit.NamespacedKey;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.bukkit.config.VanillaBiomeProperties;
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
import com.dfsek.terra.registry.master.ConfigRegistry;
public class NMSBiomeInjector { public class NMSBiomeInjector {
@ -50,9 +44,10 @@ public class NMSBiomeInjector {
Biome platform = createBiome( Biome platform = createBiome(
biome, biome,
Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey)) // get Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey)) // get
); );
ResourceKey<Biome> delegateKey = ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation("terra", createBiomeID(pack, key))); ResourceKey<Biome> delegateKey = ResourceKey.create(Registry.BIOME_REGISTRY,
new ResourceLocation("terra", createBiomeID(pack, key)));
BuiltinRegistries.register(BuiltinRegistries.BIOME, delegateKey, platform); BuiltinRegistries.register(BuiltinRegistries.BIOME, delegateKey, platform);
biomeRegistry.register(delegateKey, platform, Lifecycle.stable()); biomeRegistry.register(delegateKey, platform, Lifecycle.stable());
@ -65,7 +60,7 @@ public class NMSBiomeInjector {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
})); }));
Reflection.MAPPED_REGISTRY.setFrozen((MappedRegistry<?>) biomeRegistry, true); // freeze registry again :) Reflection.MAPPED_REGISTRY.setFrozen((MappedRegistry<?>) biomeRegistry, true); // freeze registry again :)
LOGGER.info("Doing tag garbage...."); LOGGER.info("Doing tag garbage....");
@ -75,7 +70,7 @@ public class NMSBiomeInjector {
(map, pair) -> (map, pair) ->
map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())), map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().stream().toList())),
HashMap::putAll); HashMap::putAll);
terraBiomeMap terraBiomeMap
.forEach((vb, terraBiomes) -> .forEach((vb, terraBiomes) ->
getEntry(biomeRegistry, vb) getEntry(biomeRegistry, vb)
@ -89,7 +84,7 @@ public class NMSBiomeInjector {
terra.unwrapKey().orElseThrow().location() + terra.unwrapKey().orElseThrow().location() +
": " + ": " +
vanilla.tags().toList()); vanilla.tags().toList());
vanilla.tags() vanilla.tags()
.forEach( .forEach(
tag -> collect tag -> collect
@ -101,7 +96,7 @@ public class NMSBiomeInjector {
"No such biome: {}", "No such biome: {}",
tb))), tb))),
() -> LOGGER.error("No vanilla biome: {}", vb))); () -> LOGGER.error("No vanilla biome: {}", vb)));
biomeRegistry.resetTags(); biomeRegistry.resetTags();
biomeRegistry.bindTags(ImmutableMap.copyOf(collect)); biomeRegistry.bindTags(ImmutableMap.copyOf(collect));
@ -121,14 +116,13 @@ public class NMSBiomeInjector {
Biome.BiomeBuilder builder = new Biome.BiomeBuilder(); Biome.BiomeBuilder builder = new Biome.BiomeBuilder();
builder builder
.precipitation(vanilla.getPrecipitation()) .precipitation(vanilla.getPrecipitation())
.downfall(vanilla.getDownfall())
.temperature(vanilla.getBaseTemperature()) .temperature(vanilla.getBaseTemperature())
.mobSpawnSettings(vanilla.getMobSettings()) .mobSpawnSettings(vanilla.getMobSettings())
.generationSettings(vanilla.getGenerationSettings()); .generationSettings(vanilla.getGenerationSettings());
BiomeSpecialEffects.Builder effects = new BiomeSpecialEffects.Builder(); BiomeSpecialEffects.Builder effects = new BiomeSpecialEffects.Builder();
effects.grassColorModifier(vanilla.getSpecialEffects().getGrassColorModifier()); effects.grassColorModifier(vanilla.getSpecialEffects().getGrassColorModifier());
@ -137,11 +131,11 @@ public class NMSBiomeInjector {
effects.fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) effects.fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor()))
.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) .waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor()))
.waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor()))
.skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())); .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor()));
if(vanillaBiomeProperties.getFoliageColor() == null) { if(vanillaBiomeProperties.getFoliageColor() == null) {
vanilla.getSpecialEffects().getFoliageColorOverride().ifPresent(effects::foliageColorOverride); vanilla.getSpecialEffects().getFoliageColorOverride().ifPresent(effects::foliageColorOverride);