001/*
002 * This file is part of Baritone.
003 *
004 * Baritone is free software: you can redistribute it and/or modify
005 * it under the terms of the GNU Lesser General Public License as published by
006 * the Free Software Foundation, either version 3 of the License, or
007 * (at your option) any later version.
008 *
009 * Baritone is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012 * GNU Lesser General Public License for more details.
013 *
014 * You should have received a copy of the GNU Lesser General Public License
015 * along with Baritone.  If not, see <https://www.gnu.org/licenses/>.
016 */
017
018package baritone.api.pathing.movement;
019
020/**
021 * @author Brady
022 * @since 10/8/2018
023 */
024public enum MovementStatus {
025
026    /**
027     * We are preparing the movement to be executed. This is when any blocks obstructing the destination are broken.
028     */
029    PREPPING(false),
030
031    /**
032     * We are waiting for the movement to begin, after {@link MovementStatus#PREPPING}.
033     */
034    WAITING(false),
035
036    /**
037     * The movement is currently in progress, after {@link MovementStatus#WAITING}
038     */
039    RUNNING(false),
040
041    /**
042     * The movement has been completed and we are at our destination
043     */
044    SUCCESS(true),
045
046    /**
047     * There was a change in state between calculation and actual
048     * movement execution, and the movement has now become impossible.
049     */
050    UNREACHABLE(true),
051
052    /**
053     * Unused
054     */
055    FAILED(true),
056
057    /**
058     * "Unused"
059     */
060    CANCELED(true);
061
062    /**
063     * Whether or not this status indicates a complete movement.
064     */
065    private final boolean complete;
066
067    MovementStatus(boolean complete) {
068        this.complete = complete;
069    }
070
071    public final boolean isComplete() {
072        return this.complete;
073    }
074}