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 020import baritone.api.utils.BetterBlockPos; 021import net.minecraft.util.math.BlockPos; 022 023/** 024 * @author Brady 025 * @since 10/8/2018 026 */ 027public interface IMovement { 028 029 double getCost(); 030 031 MovementStatus update(); 032 033 /** 034 * Resets the current state status to {@link MovementStatus#PREPPING} 035 */ 036 void reset(); 037 038 /** 039 * Resets the cache for special break, place, and walk into blocks 040 */ 041 void resetBlockCache(); 042 043 /** 044 * @return Whether or not it is safe to cancel the current movement state 045 */ 046 boolean safeToCancel(); 047 048 boolean calculatedWhileLoaded(); 049 050 BetterBlockPos getSrc(); 051 052 BetterBlockPos getDest(); 053 054 BlockPos getDirection(); 055}