Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / BehaviorBedJump.java
package net.minecraft.server;

import com.google.common.collect.ImmutableMap;
import java.util.Optional;
import javax.annotation.Nullable;

public class BehaviorBedJump extends Behavior<EntityInsentient> {

    private final float a;
    @Nullable
    private BlockPosition b;
    private int c;
    private int d;
    private int e;

    public BehaviorBedJump(float f) {
        super(ImmutableMap.of(MemoryModuleType.NEAREST_BED, MemoryStatus.VALUE_PRESENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT));
        this.a = f;
    }

    protected boolean a(WorldServer worldserver, EntityInsentient entityinsentient) {
        return entityinsentient.isBaby() && this.b(worldserver, entityinsentient);
    }

    protected void a(WorldServer worldserver, EntityInsentient entityinsentient, long i) {
        super.a(worldserver, entityinsentient, i);
        this.a(entityinsentient).ifPresent((blockposition) -> {
            this.b = blockposition;
            this.c = 100;
            this.d = 3 + worldserver.random.nextInt(4);
            this.e = 0;
            this.a(entityinsentient, blockposition);
        });
    }

    protected void f(WorldServer worldserver, EntityInsentient entityinsentient, long i) {
        super.f(worldserver, entityinsentient, i);
        this.b = null;
        this.c = 0;
        this.d = 0;
        this.e = 0;
    }

    protected boolean g(WorldServer worldserver, EntityInsentient entityinsentient, long i) {
        return entityinsentient.isBaby() && this.b != null && this.a(worldserver, this.b) && !this.e(worldserver, entityinsentient) && !this.f(worldserver, entityinsentient);
    }

    @Override
    protected boolean a(long i) {
        return false;
    }

    protected void d(WorldServer worldserver, EntityInsentient entityinsentient, long i) {
        if (!this.c(worldserver, entityinsentient)) {
            --this.c;
        } else if (this.e > 0) {
            --this.e;
        } else {
            if (this.d(worldserver, entityinsentient)) {
                entityinsentient.getControllerJump().jump();
                --this.d;
                this.e = 5;
            }

        }
    }

    private void a(EntityInsentient entityinsentient, BlockPosition blockposition) {
        entityinsentient.getBehaviorController().setMemory(MemoryModuleType.WALK_TARGET, (Object) (new MemoryTarget(blockposition, this.a, 0)));
    }

    private boolean b(WorldServer worldserver, EntityInsentient entityinsentient) {
        return this.c(worldserver, entityinsentient) || this.a(entityinsentient).isPresent();
    }

    private boolean c(WorldServer worldserver, EntityInsentient entityinsentient) {
        BlockPosition blockposition = new BlockPosition(entityinsentient);
        BlockPosition blockposition1 = blockposition.down();

        return this.a(worldserver, blockposition) || this.a(worldserver, blockposition1);
    }

    private boolean d(WorldServer worldserver, EntityInsentient entityinsentient) {
        return this.a(worldserver, new BlockPosition(entityinsentient));
    }

    private boolean a(WorldServer worldserver, BlockPosition blockposition) {
        return worldserver.getType(blockposition).a(TagsBlock.BEDS);
    }

    private Optional<BlockPosition> a(EntityInsentient entityinsentient) {
        return entityinsentient.getBehaviorController().getMemory(MemoryModuleType.NEAREST_BED);
    }

    private boolean e(WorldServer worldserver, EntityInsentient entityinsentient) {
        return !this.c(worldserver, entityinsentient) && this.c <= 0;
    }

    private boolean f(WorldServer worldserver, EntityInsentient entityinsentient) {
        return this.c(worldserver, entityinsentient) && this.d <= 0;
    }
}