From e8e00e8dfb514bd4c1e34184ec66ded88f317d90 Mon Sep 17 00:00:00 2001 From: Brady Date: Sat, 23 Feb 2019 12:27:24 -0600 Subject: [PATCH] CRLF -> LF It was inconsistent across the board --- gradle/wrapper/gradle-wrapper.properties | 12 +- gradlew.bat | 168 +++---- settings.gradle | 38 +- src/main/java/baritone/Baritone.java | 422 +++++++++--------- src/main/java/baritone/utils/Helper.java | 144 +++--- .../baritone/utils/InputOverrideHandler.java | 280 ++++++------ 6 files changed, 532 insertions(+), 532 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 59006a9e6..599a02b7a 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Jul 31 21:56:56 PDT 2018 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip +#Tue Jul 31 21:56:56 PDT 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip diff --git a/gradlew.bat b/gradlew.bat index e95643d6a..f9553162f 100755 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle index baa9dfc9b..567f84110 100755 --- a/settings.gradle +++ b/settings.gradle @@ -1,19 +1,19 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -rootProject.name = 'baritone' - +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +rootProject.name = 'baritone' + diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 2eb69cba6..51a6ff699 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -1,211 +1,211 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone; - -import baritone.api.BaritoneAPI; -import baritone.api.IBaritone; -import baritone.api.Settings; -import baritone.api.event.listener.IEventBus; -import baritone.api.utils.IPlayerContext; -import baritone.behavior.*; -import baritone.cache.WorldProvider; -import baritone.event.GameEventHandler; -import baritone.process.CustomGoalProcess; -import baritone.process.FollowProcess; -import baritone.process.GetToBlockProcess; -import baritone.process.MineProcess; -import baritone.utils.*; -import baritone.utils.player.PrimaryPlayerContext; -import net.minecraft.client.Minecraft; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Executor; -import java.util.concurrent.SynchronousQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * @author Brady - * @since 7/31/2018 - */ -public class Baritone implements IBaritone { - - private static ThreadPoolExecutor threadPool; - private static File dir; - - static { - threadPool = new ThreadPoolExecutor(4, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>()); - - dir = new File(Minecraft.getMinecraft().gameDir, "baritone"); - if (!Files.exists(dir.toPath())) { - try { - Files.createDirectories(dir.toPath()); - } catch (IOException ignored) {} - } - } - - /** - * Whether or not {@link Baritone#init()} has been called yet - */ - private boolean initialized; - - private GameEventHandler gameEventHandler; - - private List behaviors; - private PathingBehavior pathingBehavior; - private LookBehavior lookBehavior; - private MemoryBehavior memoryBehavior; - private InputOverrideHandler inputOverrideHandler; - - private FollowProcess followProcess; - private MineProcess mineProcess; - private GetToBlockProcess getToBlockProcess; - private CustomGoalProcess customGoalProcess; - - private PathingControlManager pathingControlManager; - - private IPlayerContext playerContext; - private WorldProvider worldProvider; - - public BlockStateInterface bsi; - - Baritone() { - this.gameEventHandler = new GameEventHandler(this); - } - - @Override - public synchronized void init() { - if (initialized) { - return; - } - - // Define this before behaviors try and get it, or else it will be null and the builds will fail! - this.playerContext = PrimaryPlayerContext.INSTANCE; - - this.behaviors = new ArrayList<>(); - { - // the Behavior constructor calls baritone.registerBehavior(this) so this populates the behaviors arraylist - pathingBehavior = new PathingBehavior(this); - lookBehavior = new LookBehavior(this); - memoryBehavior = new MemoryBehavior(this); - new InventoryBehavior(this); - inputOverrideHandler = new InputOverrideHandler(this); - new ExampleBaritoneControl(this); - } - - this.pathingControlManager = new PathingControlManager(this); - { - followProcess = new FollowProcess(this); - mineProcess = new MineProcess(this); - customGoalProcess = new CustomGoalProcess(this); // very high iq - getToBlockProcess = new GetToBlockProcess(this); - } - - this.worldProvider = new WorldProvider(); - - if (BaritoneAutoTest.ENABLE_AUTO_TEST) { - this.gameEventHandler.registerEventListener(BaritoneAutoTest.INSTANCE); - } - - this.initialized = true; - } - - @Override - public PathingControlManager getPathingControlManager() { - return this.pathingControlManager; - } - - public List getBehaviors() { - return this.behaviors; - } - - public void registerBehavior(Behavior behavior) { - this.behaviors.add(behavior); - this.gameEventHandler.registerEventListener(behavior); - } - - @Override - public InputOverrideHandler getInputOverrideHandler() { - return this.inputOverrideHandler; - } - - @Override - public CustomGoalProcess getCustomGoalProcess() { // Iffy - return this.customGoalProcess; - } - - @Override - public GetToBlockProcess getGetToBlockProcess() { // Iffy - return this.getToBlockProcess; - } - - @Override - public IPlayerContext getPlayerContext() { - return this.playerContext; - } - - public MemoryBehavior getMemoryBehavior() { - return this.memoryBehavior; - } - - @Override - public FollowProcess getFollowProcess() { - return this.followProcess; - } - - @Override - public LookBehavior getLookBehavior() { - return this.lookBehavior; - } - - @Override - public MineProcess getMineProcess() { - return this.mineProcess; - } - - @Override - public PathingBehavior getPathingBehavior() { - return this.pathingBehavior; - } - - @Override - public WorldProvider getWorldProvider() { - return this.worldProvider; - } - - @Override - public IEventBus getGameEventHandler() { - return this.gameEventHandler; - } - - public static Settings settings() { - return BaritoneAPI.getSettings(); - } - - public static File getDir() { - return dir; - } - - public static Executor getExecutor() { - return threadPool; - } -} +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone; + +import baritone.api.BaritoneAPI; +import baritone.api.IBaritone; +import baritone.api.Settings; +import baritone.api.event.listener.IEventBus; +import baritone.api.utils.IPlayerContext; +import baritone.behavior.*; +import baritone.cache.WorldProvider; +import baritone.event.GameEventHandler; +import baritone.process.CustomGoalProcess; +import baritone.process.FollowProcess; +import baritone.process.GetToBlockProcess; +import baritone.process.MineProcess; +import baritone.utils.*; +import baritone.utils.player.PrimaryPlayerContext; +import net.minecraft.client.Minecraft; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Executor; +import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author Brady + * @since 7/31/2018 + */ +public class Baritone implements IBaritone { + + private static ThreadPoolExecutor threadPool; + private static File dir; + + static { + threadPool = new ThreadPoolExecutor(4, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>()); + + dir = new File(Minecraft.getMinecraft().gameDir, "baritone"); + if (!Files.exists(dir.toPath())) { + try { + Files.createDirectories(dir.toPath()); + } catch (IOException ignored) {} + } + } + + /** + * Whether or not {@link Baritone#init()} has been called yet + */ + private boolean initialized; + + private GameEventHandler gameEventHandler; + + private List behaviors; + private PathingBehavior pathingBehavior; + private LookBehavior lookBehavior; + private MemoryBehavior memoryBehavior; + private InputOverrideHandler inputOverrideHandler; + + private FollowProcess followProcess; + private MineProcess mineProcess; + private GetToBlockProcess getToBlockProcess; + private CustomGoalProcess customGoalProcess; + + private PathingControlManager pathingControlManager; + + private IPlayerContext playerContext; + private WorldProvider worldProvider; + + public BlockStateInterface bsi; + + Baritone() { + this.gameEventHandler = new GameEventHandler(this); + } + + @Override + public synchronized void init() { + if (initialized) { + return; + } + + // Define this before behaviors try and get it, or else it will be null and the builds will fail! + this.playerContext = PrimaryPlayerContext.INSTANCE; + + this.behaviors = new ArrayList<>(); + { + // the Behavior constructor calls baritone.registerBehavior(this) so this populates the behaviors arraylist + pathingBehavior = new PathingBehavior(this); + lookBehavior = new LookBehavior(this); + memoryBehavior = new MemoryBehavior(this); + new InventoryBehavior(this); + inputOverrideHandler = new InputOverrideHandler(this); + new ExampleBaritoneControl(this); + } + + this.pathingControlManager = new PathingControlManager(this); + { + followProcess = new FollowProcess(this); + mineProcess = new MineProcess(this); + customGoalProcess = new CustomGoalProcess(this); // very high iq + getToBlockProcess = new GetToBlockProcess(this); + } + + this.worldProvider = new WorldProvider(); + + if (BaritoneAutoTest.ENABLE_AUTO_TEST) { + this.gameEventHandler.registerEventListener(BaritoneAutoTest.INSTANCE); + } + + this.initialized = true; + } + + @Override + public PathingControlManager getPathingControlManager() { + return this.pathingControlManager; + } + + public List getBehaviors() { + return this.behaviors; + } + + public void registerBehavior(Behavior behavior) { + this.behaviors.add(behavior); + this.gameEventHandler.registerEventListener(behavior); + } + + @Override + public InputOverrideHandler getInputOverrideHandler() { + return this.inputOverrideHandler; + } + + @Override + public CustomGoalProcess getCustomGoalProcess() { // Iffy + return this.customGoalProcess; + } + + @Override + public GetToBlockProcess getGetToBlockProcess() { // Iffy + return this.getToBlockProcess; + } + + @Override + public IPlayerContext getPlayerContext() { + return this.playerContext; + } + + public MemoryBehavior getMemoryBehavior() { + return this.memoryBehavior; + } + + @Override + public FollowProcess getFollowProcess() { + return this.followProcess; + } + + @Override + public LookBehavior getLookBehavior() { + return this.lookBehavior; + } + + @Override + public MineProcess getMineProcess() { + return this.mineProcess; + } + + @Override + public PathingBehavior getPathingBehavior() { + return this.pathingBehavior; + } + + @Override + public WorldProvider getWorldProvider() { + return this.worldProvider; + } + + @Override + public IEventBus getGameEventHandler() { + return this.gameEventHandler; + } + + public static Settings settings() { + return BaritoneAPI.getSettings(); + } + + public static File getDir() { + return dir; + } + + public static Executor getExecutor() { + return threadPool; + } +} diff --git a/src/main/java/baritone/utils/Helper.java b/src/main/java/baritone/utils/Helper.java index 9ee6ed59f..f85f240cc 100755 --- a/src/main/java/baritone/utils/Helper.java +++ b/src/main/java/baritone/utils/Helper.java @@ -1,72 +1,72 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone.utils; - -import baritone.Baritone; -import net.minecraft.client.Minecraft; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextComponentString; -import net.minecraft.util.text.TextFormatting; - -/** - * @author Brady - * @since 8/1/2018 - */ -public interface Helper { - - /** - * Instance of {@link Helper}. Used for static-context reference. - */ - Helper HELPER = new Helper() {}; - - ITextComponent MESSAGE_PREFIX = new TextComponentString(String.format( - "%s[%sBaritone%s]%s", - TextFormatting.DARK_PURPLE, - TextFormatting.LIGHT_PURPLE, - TextFormatting.DARK_PURPLE, - TextFormatting.GRAY - )); - - Minecraft mc = Minecraft.getMinecraft(); - - /** - * Send a message to chat only if chatDebug is on - * - * @param message The message to display in chat - */ - default void logDebug(String message) { - if (!Baritone.settings().chatDebug.get()) { - //System.out.println("Suppressed debug message:"); - //System.out.println(message); - return; - } - logDirect(message); - } - - /** - * Send a message to chat regardless of chatDebug (should only be used for critically important messages, or as a direct response to a chat command) - * - * @param message The message to display in chat - */ - default void logDirect(String message) { - ITextComponent component = MESSAGE_PREFIX.createCopy(); - component.getStyle().setColor(TextFormatting.GRAY); - component.appendSibling(new TextComponentString(" " + message)); - Minecraft.getMinecraft().addScheduledTask(() -> Baritone.settings().logger.get().accept(component)); - } -} +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils; + +import baritone.Baritone; +import net.minecraft.client.Minecraft; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.TextFormatting; + +/** + * @author Brady + * @since 8/1/2018 + */ +public interface Helper { + + /** + * Instance of {@link Helper}. Used for static-context reference. + */ + Helper HELPER = new Helper() {}; + + ITextComponent MESSAGE_PREFIX = new TextComponentString(String.format( + "%s[%sBaritone%s]%s", + TextFormatting.DARK_PURPLE, + TextFormatting.LIGHT_PURPLE, + TextFormatting.DARK_PURPLE, + TextFormatting.GRAY + )); + + Minecraft mc = Minecraft.getMinecraft(); + + /** + * Send a message to chat only if chatDebug is on + * + * @param message The message to display in chat + */ + default void logDebug(String message) { + if (!Baritone.settings().chatDebug.get()) { + //System.out.println("Suppressed debug message:"); + //System.out.println(message); + return; + } + logDirect(message); + } + + /** + * Send a message to chat regardless of chatDebug (should only be used for critically important messages, or as a direct response to a chat command) + * + * @param message The message to display in chat + */ + default void logDirect(String message) { + ITextComponent component = MESSAGE_PREFIX.createCopy(); + component.getStyle().setColor(TextFormatting.GRAY); + component.appendSibling(new TextComponentString(" " + message)); + Minecraft.getMinecraft().addScheduledTask(() -> Baritone.settings().logger.get().accept(component)); + } +} diff --git a/src/main/java/baritone/utils/InputOverrideHandler.java b/src/main/java/baritone/utils/InputOverrideHandler.java index f5ee0530d..6b0a96e70 100755 --- a/src/main/java/baritone/utils/InputOverrideHandler.java +++ b/src/main/java/baritone/utils/InputOverrideHandler.java @@ -1,140 +1,140 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone.utils; - -import baritone.Baritone; -import baritone.api.BaritoneAPI; -import baritone.api.event.events.TickEvent; -import baritone.api.utils.IInputOverrideHandler; -import baritone.api.utils.input.Input; -import baritone.behavior.Behavior; -import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.util.MovementInputFromOptions; - -import java.util.HashMap; -import java.util.Map; - -/** - * An interface with the game's control system allowing the ability to - * force down certain controls, having the same effect as if we were actually - * physically forcing down the assigned key. - * - * @author Brady - * @since 7/31/2018 - */ -public final class InputOverrideHandler extends Behavior implements IInputOverrideHandler { - - /** - * Maps inputs to whether or not we are forcing their state down. - */ - private final Map inputForceStateMap = new HashMap<>(); - - private final BlockBreakHelper blockBreakHelper; - - public InputOverrideHandler(Baritone baritone) { - super(baritone); - this.blockBreakHelper = new BlockBreakHelper(baritone.getPlayerContext()); - } - - /** - * Returns whether or not we are forcing down the specified {@link KeyBinding}. - * - * @param key The KeyBinding object - * @return Whether or not it is being forced down - */ - @Override - public final Boolean isInputForcedDown(KeyBinding key) { - Input input = Input.getInputForBind(key); - if (input == null) { - return null; - } - if (input == Input.CLICK_LEFT && inControl()) { - // only override left click off when pathing - return false; - } - if (input == Input.CLICK_RIGHT) { - if (isInputForcedDown(Input.CLICK_RIGHT)) { - // gettoblock and builder can right click even when not pathing; allow them to do so - return true; - } else if (inControl()) { - // but when we are pathing for real, force right click off - return false; - } - } - return null; // dont force any inputs other than left and right click - } - - /** - * Returns whether or not we are forcing down the specified {@link Input}. - * - * @param input The input - * @return Whether or not it is being forced down - */ - @Override - public final boolean isInputForcedDown(Input input) { - return input == null ? false : this.inputForceStateMap.getOrDefault(input, false); - } - - /** - * Sets whether or not the specified {@link Input} is being forced down. - * - * @param input The {@link Input} - * @param forced Whether or not the state is being forced - */ - @Override - public final void setInputForceState(Input input, boolean forced) { - this.inputForceStateMap.put(input, forced); - } - - /** - * Clears the override state for all keys - */ - @Override - public final void clearAllKeys() { - this.inputForceStateMap.clear(); - } - - @Override - public final void onTick(TickEvent event) { - if (event.getType() == TickEvent.Type.OUT) { - return; - } - blockBreakHelper.tick(isInputForcedDown(Input.CLICK_LEFT)); - - if (inControl()) { - if (ctx.player().movementInput.getClass() != PlayerMovementInput.class) { - ctx.player().movementInput = new PlayerMovementInput(this); - } - } else { - if (ctx.player().movementInput.getClass() == PlayerMovementInput.class) { // allow other movement inputs that aren't this one, e.g. for a freecam - ctx.player().movementInput = new MovementInputFromOptions(Minecraft.getMinecraft().gameSettings); - } - } - // only set it if it was previously incorrect - // gotta do it this way, or else it constantly thinks you're beginning a double tap W sprint lol - } - - private boolean inControl() { - return baritone.getPathingBehavior().isPathing() || baritone != BaritoneAPI.getProvider().getPrimaryBaritone(); - } - - public BlockBreakHelper getBlockBreakHelper() { - return blockBreakHelper; - } -} +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.utils; + +import baritone.Baritone; +import baritone.api.BaritoneAPI; +import baritone.api.event.events.TickEvent; +import baritone.api.utils.IInputOverrideHandler; +import baritone.api.utils.input.Input; +import baritone.behavior.Behavior; +import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.util.MovementInputFromOptions; + +import java.util.HashMap; +import java.util.Map; + +/** + * An interface with the game's control system allowing the ability to + * force down certain controls, having the same effect as if we were actually + * physically forcing down the assigned key. + * + * @author Brady + * @since 7/31/2018 + */ +public final class InputOverrideHandler extends Behavior implements IInputOverrideHandler { + + /** + * Maps inputs to whether or not we are forcing their state down. + */ + private final Map inputForceStateMap = new HashMap<>(); + + private final BlockBreakHelper blockBreakHelper; + + public InputOverrideHandler(Baritone baritone) { + super(baritone); + this.blockBreakHelper = new BlockBreakHelper(baritone.getPlayerContext()); + } + + /** + * Returns whether or not we are forcing down the specified {@link KeyBinding}. + * + * @param key The KeyBinding object + * @return Whether or not it is being forced down + */ + @Override + public final Boolean isInputForcedDown(KeyBinding key) { + Input input = Input.getInputForBind(key); + if (input == null) { + return null; + } + if (input == Input.CLICK_LEFT && inControl()) { + // only override left click off when pathing + return false; + } + if (input == Input.CLICK_RIGHT) { + if (isInputForcedDown(Input.CLICK_RIGHT)) { + // gettoblock and builder can right click even when not pathing; allow them to do so + return true; + } else if (inControl()) { + // but when we are pathing for real, force right click off + return false; + } + } + return null; // dont force any inputs other than left and right click + } + + /** + * Returns whether or not we are forcing down the specified {@link Input}. + * + * @param input The input + * @return Whether or not it is being forced down + */ + @Override + public final boolean isInputForcedDown(Input input) { + return input == null ? false : this.inputForceStateMap.getOrDefault(input, false); + } + + /** + * Sets whether or not the specified {@link Input} is being forced down. + * + * @param input The {@link Input} + * @param forced Whether or not the state is being forced + */ + @Override + public final void setInputForceState(Input input, boolean forced) { + this.inputForceStateMap.put(input, forced); + } + + /** + * Clears the override state for all keys + */ + @Override + public final void clearAllKeys() { + this.inputForceStateMap.clear(); + } + + @Override + public final void onTick(TickEvent event) { + if (event.getType() == TickEvent.Type.OUT) { + return; + } + blockBreakHelper.tick(isInputForcedDown(Input.CLICK_LEFT)); + + if (inControl()) { + if (ctx.player().movementInput.getClass() != PlayerMovementInput.class) { + ctx.player().movementInput = new PlayerMovementInput(this); + } + } else { + if (ctx.player().movementInput.getClass() == PlayerMovementInput.class) { // allow other movement inputs that aren't this one, e.g. for a freecam + ctx.player().movementInput = new MovementInputFromOptions(Minecraft.getMinecraft().gameSettings); + } + } + // only set it if it was previously incorrect + // gotta do it this way, or else it constantly thinks you're beginning a double tap W sprint lol + } + + private boolean inControl() { + return baritone.getPathingBehavior().isPathing() || baritone != BaritoneAPI.getProvider().getPrimaryBaritone(); + } + + public BlockBreakHelper getBlockBreakHelper() { + return blockBreakHelper; + } +}