diff --git a/.travis.yml b/.travis.yml index 2e793a75d..75d14ffc2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,6 @@ install: script: - docker run --name baritone cabaletta/baritone ./gradlew javadoc -#- docker run --name baritone cabaletta/baritone /bin/sh -c "set -e; /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 128x128x24 -ac +extension GLX +render; DISPLAY=:99 BARITONE_AUTO_TEST=true ./gradlew runClient" - docker cp baritone:/code/dist dist - ls dist - cat dist/checksums.txt diff --git a/Dockerfile b/Dockerfile index 020bea0c4..ba782976d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,5 @@ FROM debian:stretch -RUN echo 'deb http://deb.debian.org/debian stretch-backports main' > /etc/apt/sources.list.d/stretch-backports.list - ENV DEBIAN_FRONTEND noninteractive RUN apt update -y @@ -10,14 +8,8 @@ RUN apt install \ openjdk-8-jdk \ --assume-yes -RUN apt install -qq --assume-yes mesa-utils libgl1-mesa-glx libxcursor1 libxrandr2 libxxf86vm1 x11-xserver-utils xfonts-base xserver-common - COPY . /code WORKDIR /code -# this .deb is specially patched to support lwjgl -# source: https://github.com/tectonicus/tectonicus/issues/60#issuecomment-154239173 -RUN dpkg -i scripts/xvfb_1.16.4-1_amd64.deb - RUN ./gradlew build diff --git a/scripts/xvfb_1.16.4-1_amd64.deb b/scripts/xvfb_1.16.4-1_amd64.deb deleted file mode 100644 index c3ef3de48..000000000 Binary files a/scripts/xvfb_1.16.4-1_amd64.deb and /dev/null differ diff --git a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java index 51e9959f3..097c72905 100644 --- a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java +++ b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java @@ -23,7 +23,6 @@ import baritone.api.event.events.BlockInteractEvent; import baritone.api.event.events.TickEvent; import baritone.api.event.events.WorldEvent; import baritone.api.event.events.type.EventState; -import baritone.utils.BaritoneAutoTest; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.GuiScreen; @@ -63,17 +62,6 @@ public class MixinMinecraft { BaritoneAPI.getProvider().getPrimaryBaritone(); } - @Inject( - method = "init", - at = @At( - value = "INVOKE", - target = "net/minecraft/client/Minecraft.startTimerHackThread()V" - ) - ) - private void preInit(CallbackInfo ci) { - BaritoneAutoTest.INSTANCE.onPreInit(); - } - @Inject( method = "runTick", at = @At( diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 98c47b6d6..d03953fd9 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -29,7 +29,10 @@ import baritone.command.manager.CommandManager; import baritone.event.GameEventHandler; import baritone.process.*; import baritone.selection.SelectionManager; -import baritone.utils.*; +import baritone.utils.BlockStateInterface; +import baritone.utils.GuiClick; +import baritone.utils.InputOverrideHandler; +import baritone.utils.PathingControlManager; import baritone.utils.player.PrimaryPlayerContext; import net.minecraft.client.Minecraft; @@ -117,10 +120,6 @@ public class Baritone implements IBaritone { this.worldProvider = new WorldProvider(); this.selectionManager = new SelectionManager(this); this.commandManager = new CommandManager(this); - - if (BaritoneAutoTest.ENABLE_AUTO_TEST) { - this.gameEventHandler.registerEventListener(BaritoneAutoTest.INSTANCE); - } } @Override diff --git a/src/main/java/baritone/utils/BaritoneAutoTest.java b/src/main/java/baritone/utils/BaritoneAutoTest.java deleted file mode 100644 index 7fe913ac4..000000000 --- a/src/main/java/baritone/utils/BaritoneAutoTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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.api.BaritoneAPI; -import baritone.api.event.events.TickEvent; -import baritone.api.event.listener.AbstractGameEventListener; -import baritone.api.pathing.goals.Goal; -import baritone.api.pathing.goals.GoalBlock; -import baritone.api.utils.Helper; -import baritone.api.utils.IPlayerContext; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiMainMenu; -import net.minecraft.client.settings.GameSettings; -import net.minecraft.client.tutorial.TutorialSteps; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.*; - -/** - * Responsible for automatically testing Baritone's pathing algorithm by automatically creating a world with a specific - * seed, setting a specified goal, and only allowing a certain amount of ticks to pass before the pathing test is - * considered a failure. In order to test locally, docker may be used, or through an IDE: Create a run config which runs - * in a separate directory from the primary one (./run), and set the enrivonmental variable {@code BARITONE_AUTO_TEST} - * to {@code true}. - * - * @author leijurv, Brady - */ -public class BaritoneAutoTest implements AbstractGameEventListener, Helper { - - public static final BaritoneAutoTest INSTANCE = new BaritoneAutoTest(); - - public static final boolean ENABLE_AUTO_TEST = "true".equals(System.getenv("BARITONE_AUTO_TEST")); - private static final long TEST_SEED = -928872506371745L; - private static final BlockPos STARTING_POSITION = new BlockPos(0, 65, 0); - private static final Goal GOAL = new GoalBlock(69, 69, 420); - private static final int MAX_TICKS = 3300; - - /** - * Called right after the {@link GameSettings} object is created in the {@link Minecraft} instance. - */ - public void onPreInit() { - if (!BaritoneAutoTest.ENABLE_AUTO_TEST) { - return; - } - System.out.println("Optimizing Game Settings"); - - GameSettings s = mc.gameSettings; - s.limitFramerate = 20; - s.mipmapLevels = 0; - s.particleSetting = 2; - s.overrideWidth = 128; - s.overrideHeight = 128; - s.heldItemTooltips = false; - s.entityShadows = false; - s.chatScale = 0.0F; - s.ambientOcclusion = 0; - s.clouds = 0; - s.fancyGraphics = false; - s.tutorialStep = TutorialSteps.NONE; - s.hideGUI = true; - s.fovSetting = 30.0F; - } - - @Override - public void onTick(TickEvent event) { - IPlayerContext ctx = BaritoneAPI.getProvider().getPrimaryBaritone().getPlayerContext(); - // If we're on the main menu then create the test world and launch the integrated server - if (mc.currentScreen instanceof GuiMainMenu) { - System.out.println("Beginning Baritone automatic test routine"); - mc.displayGuiScreen(null); - WorldSettings worldsettings = new WorldSettings(TEST_SEED, GameType.SURVIVAL, true, false, WorldType.DEFAULT); - mc.launchIntegratedServer("BaritoneAutoTest", "BaritoneAutoTest", worldsettings); - } - - // If the integrated server is running, set the difficulty to peaceful - if (mc.getIntegratedServer() != null) { - mc.getIntegratedServer().setDifficultyForAllWorlds(EnumDifficulty.PEACEFUL); - - for (final WorldServer world : mc.getIntegratedServer().worlds) { - // If the world has initialized, set the spawn point to our defined starting position - if (world != null) { - world.setSpawnPoint(STARTING_POSITION); - world.getGameRules().setOrCreateGameRule("spawnRadius", "0"); - } - } - } - - if (event.getType() == TickEvent.Type.IN) { // If we're in-game - - // Force the integrated server to share the world to LAN so that - // the ingame pause menu gui doesn't actually pause our game - if (mc.isSingleplayer() && !mc.getIntegratedServer().getPublic()) { - mc.getIntegratedServer().shareToLAN(GameType.SURVIVAL, false); - } - - // For the first 200 ticks, wait for the world to generate - if (event.getCount() < 200) { - System.out.println("Waiting for world to generate... " + event.getCount()); - return; - } - - // Print out an update of our position every 5 seconds - if (event.getCount() % 100 == 0) { - System.out.println(ctx.playerFeet() + " " + event.getCount()); - } - - // Setup Baritone's pathing goal and (if needed) begin pathing - if (!BaritoneAPI.getProvider().getPrimaryBaritone().getCustomGoalProcess().isActive()) { - BaritoneAPI.getProvider().getPrimaryBaritone().getCustomGoalProcess().setGoalAndPath(GOAL); - } - - // If we have reached our goal, print a message and safely close the game - if (GOAL.isInGoal(ctx.playerFeet())) { - System.out.println("Successfully pathed to " + ctx.playerFeet() + " in " + event.getCount() + " ticks"); - mc.shutdown(); - } - - // If we have exceeded the expected number of ticks to complete the pathing - // task, then throw an IllegalStateException to cause the build to fail - if (event.getCount() > MAX_TICKS) { - throw new IllegalStateException("took too long"); - } - } - } - - private BaritoneAutoTest() {} -}