From 23fecd972ce0560d5cab5d84bfb951b637f09941 Mon Sep 17 00:00:00 2001 From: MysticKoko <132279944+MysticKoko@users.noreply.github.com> Date: Thu, 6 Jun 2024 14:19:12 +0300 Subject: [PATCH] Passive sharks no longer revenge attack players --- .../aquatic/entity/shark/BullSharkEntity.kt | 8 +++++++- .../aquatic/entity/shark/FrilledSharkEntity.kt | 6 ++++++ .../aquatic/entity/shark/GreatWhiteSharkEntity.kt | 7 +++++++ .../aquatic/entity/shark/HammerheadSharkEntity.kt | 7 +++++++ .../aquatic/entity/shark/HybridAquaticSharkEntity.kt | 11 ++++------- .../aquatic/entity/shark/ThresherSharkEntity.kt | 9 ++++++++- .../aquatic/entity/shark/TigerSharkEntity.kt | 9 ++++++++- 7 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/BullSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/BullSharkEntity.kt index 812f54695..fa2278d5e 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/BullSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/BullSharkEntity.kt @@ -5,6 +5,7 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags import net.minecraft.entity.Entity import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity +import net.minecraft.entity.ai.goal.RevengeGoal import net.minecraft.entity.attribute.DefaultAttributeContainer import net.minecraft.entity.attribute.EntityAttributes import net.minecraft.entity.effect.StatusEffectInstance @@ -15,7 +16,12 @@ import net.minecraft.world.World class BullSharkEntity(entityType: EntityType, world: World) : HybridAquaticSharkEntity(entityType, world, HybridAquaticEntityTags.BULL_SHARK_PREY, false, true) { - companion object { + + override fun initGoals() { + super.initGoals() + goalSelector.add(1, RevengeGoal(this)) + } + companion object { fun createMobAttributes(): DefaultAttributeContainer.Builder { return WaterCreatureEntity.createMobAttributes() .add(EntityAttributes.GENERIC_MAX_HEALTH, 36.0) diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/FrilledSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/FrilledSharkEntity.kt index 3b75c3b88..8405b0b1f 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/FrilledSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/FrilledSharkEntity.kt @@ -5,6 +5,7 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags import net.minecraft.entity.Entity import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity +import net.minecraft.entity.ai.goal.RevengeGoal import net.minecraft.entity.attribute.DefaultAttributeContainer import net.minecraft.entity.attribute.EntityAttributes import net.minecraft.entity.effect.StatusEffectInstance @@ -16,6 +17,11 @@ import net.minecraft.world.World class FrilledSharkEntity(entityType: EntityType, world: World) : HybridAquaticSharkEntity(entityType, world, HybridAquaticEntityTags.FRILLED_SHARK_PREY, false, false) { + override fun initGoals() { + super.initGoals() + goalSelector.add(1, RevengeGoal(this)) + } + companion object { fun createMobAttributes(): DefaultAttributeContainer.Builder { return WaterCreatureEntity.createMobAttributes() diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/GreatWhiteSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/GreatWhiteSharkEntity.kt index 06cf399cc..d5929a61a 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/GreatWhiteSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/GreatWhiteSharkEntity.kt @@ -5,6 +5,7 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags import net.minecraft.entity.Entity import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity +import net.minecraft.entity.ai.goal.RevengeGoal import net.minecraft.entity.attribute.DefaultAttributeContainer import net.minecraft.entity.attribute.EntityAttributes import net.minecraft.entity.effect.StatusEffectInstance @@ -15,6 +16,12 @@ import net.minecraft.world.World class GreatWhiteSharkEntity(entityType: EntityType, world: World) : HybridAquaticSharkEntity(entityType, world, HybridAquaticEntityTags.GREAT_WHITE_SHARK_PREY, false, true) { + + override fun initGoals() { + super.initGoals() + goalSelector.add(1, RevengeGoal(this)) + } + companion object { fun createMobAttributes(): DefaultAttributeContainer.Builder { return WaterCreatureEntity.createMobAttributes() diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HammerheadSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HammerheadSharkEntity.kt index aa06d2162..77b0bf05f 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HammerheadSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HammerheadSharkEntity.kt @@ -5,6 +5,7 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags import net.minecraft.entity.Entity import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity +import net.minecraft.entity.ai.goal.RevengeGoal import net.minecraft.entity.attribute.DefaultAttributeContainer import net.minecraft.entity.attribute.EntityAttributes import net.minecraft.entity.effect.StatusEffectInstance @@ -15,6 +16,12 @@ import net.minecraft.world.World class HammerheadSharkEntity(entityType: EntityType, world: World) : HybridAquaticSharkEntity(entityType, world, HybridAquaticEntityTags.HAMMERHEAD_SHARK_PREY, false, false) { + + override fun initGoals() { + super.initGoals() + goalSelector.add(1, RevengeGoal(this)) + } + companion object { fun createMobAttributes(): DefaultAttributeContainer.Builder { return WaterCreatureEntity.createMobAttributes() diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HybridAquaticSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HybridAquaticSharkEntity.kt index a68c21cda..2b2723ed1 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HybridAquaticSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/HybridAquaticSharkEntity.kt @@ -127,14 +127,11 @@ open class HybridAquaticSharkEntity( goalSelector.add(4, SwimAroundGoal(this, 1.0, 2)) goalSelector.add(4, LookAroundGoal(this)) goalSelector.add(5, LookAtEntityGoal(this, PlayerEntity::class.java, 6.0f)) - if (!isPassive) { - goalSelector.add(1, AttackGoal(this)) - goalSelector.add(1, RevengeGoal(this)) - targetSelector.add(2, ActiveTargetGoal(this, PlayerEntity::class.java, 10, true, true) { entity: LivingEntity -> shouldAngerAt(entity) || shouldProximityAttack(entity as PlayerEntity) }) - targetSelector.add(3, ActiveTargetGoal(this, LivingEntity::class.java, 10, true, true) { hunger <= 100 && it.type.isIn(prey) }) - targetSelector.add(1, ActiveTargetGoal(this, LivingEntity::class.java, 10, true, true) { it.hasStatusEffect(HybridAquaticStatusEffects.BLEEDING) && it !is HybridAquaticSharkEntity}) + goalSelector.add(1, AttackGoal(this)) + targetSelector.add(2, ActiveTargetGoal(this, PlayerEntity::class.java, 10, true, true) { entity: LivingEntity -> shouldAngerAt(entity) || shouldProximityAttack(entity as PlayerEntity) && !isPassive}) + targetSelector.add(3, ActiveTargetGoal(this, LivingEntity::class.java, 10, true, true) { hunger <= 100 && it.type.isIn(prey) && !isPassive}) + targetSelector.add(1, ActiveTargetGoal(this, LivingEntity::class.java, 10, true, true) { it.hasStatusEffect(HybridAquaticStatusEffects.BLEEDING) && it !is HybridAquaticSharkEntity && !isPassive}) } - } override fun initDataTracker() { super.initDataTracker() diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/ThresherSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/ThresherSharkEntity.kt index 78dca4f04..6399c26bd 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/ThresherSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/ThresherSharkEntity.kt @@ -5,6 +5,7 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags import net.minecraft.entity.Entity import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity +import net.minecraft.entity.ai.goal.RevengeGoal import net.minecraft.entity.attribute.DefaultAttributeContainer import net.minecraft.entity.attribute.EntityAttributes import net.minecraft.entity.effect.StatusEffectInstance @@ -15,7 +16,13 @@ import net.minecraft.world.World class ThresherSharkEntity(entityType: EntityType, world: World) : HybridAquaticSharkEntity(entityType, world, HybridAquaticEntityTags.THRESHER_SHARK_PREY, false, false) { - companion object { + + override fun initGoals() { + super.initGoals() + goalSelector.add(1, RevengeGoal(this)) + } + + companion object { fun createMobAttributes(): DefaultAttributeContainer.Builder { return WaterCreatureEntity.createMobAttributes() .add(EntityAttributes.GENERIC_MAX_HEALTH, 24.0) diff --git a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/TigerSharkEntity.kt b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/TigerSharkEntity.kt index a531e3f88..01323037d 100644 --- a/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/TigerSharkEntity.kt +++ b/src/main/kotlin/dev/hybridlabs/aquatic/entity/shark/TigerSharkEntity.kt @@ -5,6 +5,7 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags import net.minecraft.entity.Entity import net.minecraft.entity.EntityType import net.minecraft.entity.LivingEntity +import net.minecraft.entity.ai.goal.RevengeGoal import net.minecraft.entity.attribute.DefaultAttributeContainer import net.minecraft.entity.attribute.EntityAttributes import net.minecraft.entity.effect.StatusEffectInstance @@ -15,7 +16,13 @@ import net.minecraft.world.World class TigerSharkEntity(entityType: EntityType, world: World) : HybridAquaticSharkEntity(entityType, world, HybridAquaticEntityTags.TIGER_SHARK_PREY, false, true) { - companion object { + + override fun initGoals() { + super.initGoals() + goalSelector.add(1, RevengeGoal(this)) + } + + companion object { fun createMobAttributes(): DefaultAttributeContainer.Builder { return WaterCreatureEntity.createMobAttributes() .add(EntityAttributes.GENERIC_MAX_HEALTH, 36.0)