From 9af864e8fd8e5930441d8fb2c3e5a33483e1f2c7 Mon Sep 17 00:00:00 2001 From: Ivan Kh <47220198+Ivan-Khar@users.noreply.github.com> Date: Wed, 7 Feb 2024 19:19:26 +0300 Subject: [PATCH] Fishing net now uses its own tag to check for valid fish. critters now have "can breathe underwater" tag --- .../data/server/tag/EntityTypeTagProvider.kt | 13 +++++++++++++ .../dev/hybridlabs/aquatic/item/FishingNetItem.kt | 2 +- .../aquatic/loot/entry/MessageInABottleItemEntry.kt | 1 + .../aquatic/tag/HybridAquaticEntityTags.kt | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/data/server/tag/EntityTypeTagProvider.kt b/src/main/kotlin/dev/hybridlabs/aquatic/data/server/tag/EntityTypeTagProvider.kt index bbfac0d5d..5e2055cf8 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/data/server/tag/EntityTypeTagProvider.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/data/server/tag/EntityTypeTagProvider.kt @@ -6,6 +6,7 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider import net.minecraft.entity.EntityType import net.minecraft.registry.RegistryWrapper +import net.minecraft.registry.tag.EntityTypeTags import java.util.concurrent.CompletableFuture class EntityTypeTagProvider(output: FabricDataOutput, registriesFuture: CompletableFuture) : FabricTagProvider.EntityTypeTagProvider(output, registriesFuture) { @@ -207,6 +208,11 @@ class EntityTypeTagProvider(output: FabricDataOutput, registriesFuture: Completa HybridAquaticEntityTypes.STARFISH, ) + getOrCreateTagBuilder(EntityTypeTags.CAN_BREATHE_UNDER_WATER) + .addTag(HybridAquaticEntityTags.CRAB) + .addTag(HybridAquaticEntityTags.CRITTER) + .addTag(HybridAquaticEntityTags.SHRIMP) + // jellyfish getOrCreateTagBuilder(HybridAquaticEntityTags.JELLYFISH) .add( @@ -220,5 +226,12 @@ class EntityTypeTagProvider(output: FabricDataOutput, registriesFuture: Completa HybridAquaticEntityTypes.COMPASS_JELLYFISH, HybridAquaticEntityTypes.BLUE_JELLYFISH, ) + + // fishing net + getOrCreateTagBuilder(HybridAquaticEntityTags.CAN_USE_FISHING_NET_ON) + .addTag(HybridAquaticEntityTags.JELLYFISH) + .addTag(HybridAquaticEntityTags.CRITTER) + .addTag(HybridAquaticEntityTags.SMALL_PREY) + .addTag(HybridAquaticEntityTags.MEDIUM_PREY) } } diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/item/FishingNetItem.kt b/src/main/kotlin/dev/hybridlabs/aquatic/item/FishingNetItem.kt index 9abf830a3..0cae0acb5 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/item/FishingNetItem.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/item/FishingNetItem.kt @@ -18,7 +18,7 @@ import java.util.* class FishingNetItem(settings: Settings?): Item(settings) { override fun useOnEntity(stack: ItemStack, user: PlayerEntity, entity: LivingEntity, hand: Hand): ActionResult { - val validFishForNet = entity.type.isIn(HybridAquaticEntityTags.JELLYFISH) || entity.type.isIn(HybridAquaticEntityTags.CRITTER) || entity.type.isIn(HybridAquaticEntityTags.SMALL_PREY) || entity.type.isIn(HybridAquaticEntityTags.MEDIUM_PREY) + val validFishForNet = entity.type.isIn(HybridAquaticEntityTags.CAN_USE_FISHING_NET_ON) if (!alreadyHasFish(stack) && validFishForNet) { writeEntityToNet(entity, user, hand) diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/loot/entry/MessageInABottleItemEntry.kt b/src/main/kotlin/dev/hybridlabs/aquatic/loot/entry/MessageInABottleItemEntry.kt index d24f2b6fd..d4755bdac 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/loot/entry/MessageInABottleItemEntry.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/loot/entry/MessageInABottleItemEntry.kt @@ -52,6 +52,7 @@ class MessageInABottleItemEntry( */ val CODEC: Codec = RecordCodecBuilder.create { instance -> val default = addLeafFields(instance) + instance.group( default.t1(), default.t2(), diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/tag/HybridAquaticEntityTags.kt b/src/main/kotlin/dev/hybridlabs/aquatic/tag/HybridAquaticEntityTags.kt index 025993b14..e65f56a1c 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/tag/HybridAquaticEntityTags.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/tag/HybridAquaticEntityTags.kt @@ -28,6 +28,8 @@ object HybridAquaticEntityTags { val FISHES = create("fishes") val SHARKS = create("sharks") + val CAN_USE_FISHING_NET_ON = create("can_use_fishing_net_on") + private fun create(id: String): TagKey> { return TagKey.of(RegistryKeys.ENTITY_TYPE, Identifier(HybridAquatic.MOD_ID, id)) }