From 16a7d23602670dc8f5cc2d3d5cb23a88d6d41706 Mon Sep 17 00:00:00 2001 From: itsmeow Date: Thu, 9 Jun 2022 13:47:34 -0400 Subject: [PATCH] Implement hasTag onto BiomeContext (#272) * Implement hasTag onto BiomeContext * Improve optional handling [norelease] to allow for version bumping and reformatting before release --- .../level/biome/BiomeModifications.java | 5 +++++ .../biome/fabric/BiomeModificationsImpl.java | 6 ++++++ .../biome/forge/BiomeModificationsImpl.java | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/common/src/main/java/dev/architectury/registry/level/biome/BiomeModifications.java b/common/src/main/java/dev/architectury/registry/level/biome/BiomeModifications.java index 1395e665..63fcd285 100644 --- a/common/src/main/java/dev/architectury/registry/level/biome/BiomeModifications.java +++ b/common/src/main/java/dev/architectury/registry/level/biome/BiomeModifications.java @@ -22,7 +22,10 @@ package dev.architectury.registry.level.biome; import com.google.common.base.Predicates; import dev.architectury.hooks.level.biome.BiomeProperties; import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.core.Holder; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.biome.Biome; import java.util.Optional; import java.util.function.BiConsumer; @@ -90,5 +93,7 @@ public final class BiomeModifications { Optional getKey(); BiomeProperties getProperties(); + + boolean hasTag(TagKey tag); } } diff --git a/fabric/src/main/java/dev/architectury/registry/level/biome/fabric/BiomeModificationsImpl.java b/fabric/src/main/java/dev/architectury/registry/level/biome/fabric/BiomeModificationsImpl.java index 2ef3f2ce..97dde2c8 100644 --- a/fabric/src/main/java/dev/architectury/registry/level/biome/fabric/BiomeModificationsImpl.java +++ b/fabric/src/main/java/dev/architectury/registry/level/biome/fabric/BiomeModificationsImpl.java @@ -33,6 +33,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.*; @@ -109,6 +110,11 @@ public class BiomeModificationsImpl { public BiomeProperties getProperties() { return properties; } + + @Override + public boolean hasTag(TagKey tag) { + return context.hasTag(tag); + } }; } diff --git a/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java b/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java index c5063752..35f157e5 100644 --- a/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java +++ b/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java @@ -25,11 +25,15 @@ import dev.architectury.forge.ArchitecturyForge; import dev.architectury.hooks.level.biome.*; import dev.architectury.platform.forge.EventBuses; import dev.architectury.registry.level.biome.BiomeModifications.BiomeContext; +import dev.architectury.utils.GameInstance; import net.minecraft.core.Holder; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.*; @@ -136,6 +140,21 @@ public class BiomeModificationsImpl { public BiomeProperties getProperties() { return properties; } + + @Override + public boolean hasTag(TagKey tag) { + MinecraftServer server = GameInstance.getServer(); + if(server != null) { + Optional> registry = server.registryAccess().registry(Registry.BIOME_REGISTRY); + if(registry.isPresent()) { + Optional> holder = registry.get().getHolder(biomeResourceKey.get()); + if(holder.isPresent()) { + return holder.get().is(tag); + } + } + } + return false; + } }; }