diff options
Diffstat (limited to 'src/main/java/com/keuin/ohmyvanillamc/mixins/rule/disableFishSchooling/SchoolingFishEntityMixin.java')
-rw-r--r-- | src/main/java/com/keuin/ohmyvanillamc/mixins/rule/disableFishSchooling/SchoolingFishEntityMixin.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/com/keuin/ohmyvanillamc/mixins/rule/disableFishSchooling/SchoolingFishEntityMixin.java b/src/main/java/com/keuin/ohmyvanillamc/mixins/rule/disableFishSchooling/SchoolingFishEntityMixin.java new file mode 100644 index 0000000..9e82f09 --- /dev/null +++ b/src/main/java/com/keuin/ohmyvanillamc/mixins/rule/disableFishSchooling/SchoolingFishEntityMixin.java @@ -0,0 +1,50 @@ +package com.keuin.ohmyvanillamc.mixins.rule.disableFishSchooling; + +import com.keuin.ohmyvanillamc.OmvmSettings; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.ai.goal.FollowGroupLeaderGoal; +import net.minecraft.entity.passive.FishEntity; +import net.minecraft.entity.passive.SchoolingFishEntity; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(SchoolingFishEntity.class) +public abstract class SchoolingFishEntityMixin extends FishEntity { + + public SchoolingFishEntityMixin(EntityType<? extends FishEntity> type, World world) { + super(type, world); + } + + @Shadow + public abstract boolean hasLeader(); + + @Shadow + private SchoolingFishEntity leader; + + /** + * @reason To disable SchoolingFish schooling. + * @author trueKeuin + */ + @Overwrite + public void moveTowardLeader() { + if (!OmvmSettings.disableFishSchooling) { + if (this.hasLeader()) { + this.getNavigation().startMovingTo(this.leader, 1.0D); + } + } + } + + /** + * @reason To disable SchoolingFish schooling. + * @author trueKeuin + */ + @Overwrite + public void initGoals() { + super.initGoals(); + if (!OmvmSettings.disableFishSchooling) { + this.goalSelector.add(5, new FollowGroupLeaderGoal((SchoolingFishEntity) (Object) this)); + } + } +} |