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.process;
019
020import baritone.api.pathing.goals.Goal;
021
022import java.util.Objects;
023
024/**
025 * @author leijurv
026 */
027public class PathingCommand {
028
029    /**
030     * The target goal, may be {@code null}.
031     */
032    public final Goal goal;
033
034    /**
035     * The command type.
036     *
037     * @see PathingCommandType
038     */
039    public final PathingCommandType commandType;
040
041    /**
042     * Create a new {@link PathingCommand}.
043     *
044     * @param goal        The target goal, may be {@code null}.
045     * @param commandType The command type, cannot be {@code null}.
046     * @throws NullPointerException if {@code commandType} is {@code null}.
047     * @see Goal
048     * @see PathingCommandType
049     */
050    public PathingCommand(Goal goal, PathingCommandType commandType) {
051        Objects.requireNonNull(commandType);
052
053        this.goal = goal;
054        this.commandType = commandType;
055    }
056
057    @Override
058    public String toString() {
059        return commandType + " " + goal;
060    }
061}