diff options
author | citrons <citrons@mondecitronne.com> | 2023-11-06 13:21:38 -0600 |
---|---|---|
committer | citrons <citrons@mondecitronne.com> | 2023-11-06 13:21:38 -0600 |
commit | 26cdb5e8c1d58d46f3819ce44fb1fc17826296e2 (patch) | |
tree | bd0e927346d73dbe449fa50cdd0848cb9cdd1eeb | |
parent | e74d8fc0aa5c2881af287b06d4a00ae9e9b7ce54 (diff) |
add AI behaviors
3 files changed, 56 insertions, 0 deletions
diff --git a/src/main/java/com/mondecitronne/homunculus/EntityAIPanicFire.java b/src/main/java/com/mondecitronne/homunculus/EntityAIPanicFire.java new file mode 100644 index 0000000..8ed366b --- /dev/null +++ b/src/main/java/com/mondecitronne/homunculus/EntityAIPanicFire.java @@ -0,0 +1,15 @@ +package com.mondecitronne.homunculus; + +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIPanic; + +public class EntityAIPanicFire extends EntityAIPanic { + public EntityAIPanicFire(EntityCreature creature, double speedIn) { + super(creature, speedIn); + } + + @Override + public boolean shouldExecute() { + return super.shouldExecute() && creature.isBurning(); + } +} diff --git a/src/main/java/com/mondecitronne/homunculus/EntityAIWatchLeashHolder.java b/src/main/java/com/mondecitronne/homunculus/EntityAIWatchLeashHolder.java new file mode 100644 index 0000000..89885e8 --- /dev/null +++ b/src/main/java/com/mondecitronne/homunculus/EntityAIWatchLeashHolder.java @@ -0,0 +1,33 @@ +package com.mondecitronne.homunculus; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; + +public class EntityAIWatchLeashHolder extends EntityAIBase { + protected EntityCreature entity; + + public EntityAIWatchLeashHolder(EntityCreature entityIn) { + entity = entityIn; + } + + @Override + public boolean shouldExecute() { + return entity.getLeashed(); + } + + @Override + public boolean shouldContinueExecuting() { + return shouldExecute(); + } + + @Override + public void updateTask() { + Entity holder = this.entity.getLeashHolder(); + if (holder == null) { + return; + } + entity.getLookHelper().setLookPosition(holder.posX, holder.posY + (double) holder.getEyeHeight(), holder.posZ, + (float) entity.getHorizontalFaceSpeed(), (float) entity.getVerticalFaceSpeed()); + } +} diff --git a/src/main/java/com/mondecitronne/homunculus/EntityHomunculus.java b/src/main/java/com/mondecitronne/homunculus/EntityHomunculus.java index bf2332b..9c60a75 100644 --- a/src/main/java/com/mondecitronne/homunculus/EntityHomunculus.java +++ b/src/main/java/com/mondecitronne/homunculus/EntityHomunculus.java @@ -8,6 +8,7 @@ import com.mondecitronne.homunculus.skin.PlayerSkin; import com.mondecitronne.homunculus.skin.Skin; import io.netty.util.internal.StringUtil; import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTUtil; import net.minecraft.network.datasync.DataParameter; @@ -34,6 +35,13 @@ public class EntityHomunculus extends EntityCreature { super.entityInit(); } + @Override + protected void initEntityAI() { + tasks.addTask(0, new EntityAIPanicFire(this, 0.7)); + tasks.addTask(1, new EntityAISwimming(this)); + tasks.addTask(2, new EntityAIWatchLeashHolder(this)); + } + private boolean isPlayerProfileUpdated(GameProfile a, GameProfile b) { if (b == null || b.getName() == null) { return a != null; |