Implemented wolf variant support

This commit is contained in:
Oak 2025-06-19 21:12:24 +01:00
parent 85234ddc39
commit d8524603c6

View File

@ -25,10 +25,8 @@ import com.dfsek.terra.bukkit.hooks.MultiverseGeneratorPluginHook;
import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; import com.dfsek.terra.bukkit.world.BukkitBiomeInfo;
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
import io.papermc.paper.registry.RegistryAccess; import org.bukkit.NamespacedKey;
import io.papermc.paper.registry.RegistryKey;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
import org.bukkit.entity.Wolf.Variant; import org.bukkit.entity.Wolf.Variant;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -95,21 +93,21 @@ public class CommonListener implements Listener {
return; return;
} }
// TODO: This is not functional NamespacedKey biomeKey = wolf.getWorld().getBiome(wolf.getLocation()).getKey();
pack.getBiomeProvider().stream() pack.getBiomeProvider().stream()
.map(biome -> RegistryAccess.registryAccess().getRegistry(RegistryKey.BIOME) .map(biome -> ((BukkitPlatformBiome) biome.getPlatformBiome()).getContext()
.getOrThrow(((BukkitPlatformBiome) biome.getPlatformBiome()).getContext() .get(BukkitBiomeInfo.class)
.get(BukkitBiomeInfo.class) .vanillaBiomeKey())
.vanillaBiomeKey())); .filter(biomeKey::equals)
.findFirst()
.ifPresent(vanillaBiomeKey -> {
Biome biome = wolf.getWorld().getBiome(wolf.getLocation()); switch(vanillaBiomeKey.toString()) {
switch(biome.getKey().toString()) { case "minecraft:snowy_taiga" -> wolf.setVariant(Variant.ASHEN);
case "minecraft:snowy_taiga" -> wolf.setVariant(Variant.ASHEN); case "minecraft:old_growth_pine_taiga" -> wolf.setVariant(Variant.BLACK);
case "minecraft:old_growth_pine_taiga" -> wolf.setVariant(Variant.BLACK); case "minecraft:old_growth_spruce_taiga" -> wolf.setVariant(Variant.CHESTNUT);
case "minecraft:old_growth_spruce_taiga" -> wolf.setVariant(Variant.CHESTNUT); case "minecraft:grove" -> wolf.setVariant(Variant.SNOWY);
case "minecraft:grove" -> wolf.setVariant(Variant.SNOWY); case "minecraft:forest" -> wolf.setVariant(Variant.WOODS);
case "minecraft:forest" -> wolf.setVariant(Variant.WOODS); }
} });
} }
} }