From 02e99b8cc49847e7795e3acafbff975cf89af02b Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 7 Dec 2020 11:44:20 +0300 Subject: [PATCH] AI prototype & shaders fix --- .../ru/betterend/entity/EntityCubozoa.java | 42 +++++++++++++++++-- .../entity/{jello.json => cubozoa.json} | 0 2 files changed, 39 insertions(+), 3 deletions(-) rename src/main/resources/assets/betterend/materialmaps/entity/{jello.json => cubozoa.json} (100%) diff --git a/src/main/java/ru/betterend/entity/EntityCubozoa.java b/src/main/java/ru/betterend/entity/EntityCubozoa.java index 1d109287..b5e4b978 100644 --- a/src/main/java/ru/betterend/entity/EntityCubozoa.java +++ b/src/main/java/ru/betterend/entity/EntityCubozoa.java @@ -3,6 +3,7 @@ package ru.betterend.entity; import java.util.List; import java.util.Random; +import net.minecraft.block.Blocks; import net.minecraft.entity.EntityData; import net.minecraft.entity.EntityDimensions; import net.minecraft.entity.EntityPose; @@ -22,19 +23,23 @@ import net.minecraft.world.LocalDifficulty; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.World; import ru.betterend.registry.EndBiomes; +import ru.betterend.util.MHelper; public class EntityCubozoa extends WaterCreatureEntity { public static final int VARIANTS = 2; private static final TrackedData VARIANT = DataTracker.registerData(EntityCubozoa.class, TrackedDataHandlerRegistry.BYTE); private static final TrackedData SCALE = DataTracker.registerData(EntityCubozoa.class, TrackedDataHandlerRegistry.BYTE); + private int moveTicks = 0; + private double moveX; + private double moveY; + private double moveZ; + private int timer; public EntityCubozoa(EntityType entityType, World world) { super(entityType, world); + timer = MHelper.randRange(20, 40, random); } - @Override - protected void initGoals() {} - @Override public EntityData initialize(ServerWorldAccess world, LocalDifficulty difficulty, SpawnReason spawnReason, EntityData entityData, CompoundTag entityTag) { EntityData data = super.initialize(world, difficulty, spawnReason, entityData, entityTag); @@ -96,4 +101,35 @@ public class EntityCubozoa extends WaterCreatureEntity { protected float getActiveEyeHeight(EntityPose pose, EntityDimensions dimensions) { return dimensions.height * 0.5F; } + + @Override + public void tickMovement() { + super.tickMovement(); + if (moveTicks >= timer) { + if (random.nextInt(4) == 0 && world.getBlockState(getBlockPos().down()).isOf(Blocks.WATER)) { + moveX = 0; + moveZ = 0; + moveY = -0.05; + } + else if (random.nextBoolean()) { + moveX = random.nextGaussian(); + moveZ = random.nextGaussian(); + moveY = (moveX == 0 && moveZ == 0) ? 1 : random.nextDouble(); + double l = MHelper.lengthSqr(moveX, moveY, moveZ) / 0.05; + moveX /= l; + moveY /= l; + moveZ /= l; + } + moveTicks = 0; + timer = MHelper.randRange(20, 40, random); + this.yaw = (float) Math.atan2(moveX, moveZ); + this.bodyYaw = this.yaw; + this.pitch = (float) Math.asin(-moveY); + } + moveX *= 0.98; + moveY *= 0.98; + moveZ *= 0.98; + this.setVelocity(moveX, moveY, moveZ); + moveTicks ++; + } } diff --git a/src/main/resources/assets/betterend/materialmaps/entity/jello.json b/src/main/resources/assets/betterend/materialmaps/entity/cubozoa.json similarity index 100% rename from src/main/resources/assets/betterend/materialmaps/entity/jello.json rename to src/main/resources/assets/betterend/materialmaps/entity/cubozoa.json