From ce55cc56c1631b77aa4ce3f3027b28d684005427 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 25 Sep 2018 11:19:25 -0700 Subject: [PATCH] BaritoneAutoTest --- .travis.yml | 8 +-- Dockerfile | 2 +- scripts/build.sh | 1 + src/main/java/baritone/Baritone.java | 4 ++ .../java/baritone/utils/BaritoneAutoTest.java | 70 +++++++++++++++++++ 5 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 src/main/java/baritone/utils/BaritoneAutoTest.java diff --git a/.travis.yml b/.travis.yml index dece8bf4..2712244d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,12 +8,12 @@ services: install: - sudo apt-get update - sudo apt-get install jshon -- ./gradlew test +- docker build -t cabaletta/baritone . script: -- docker build -t cabaletta/baritone . -- docker run cabaletta/baritone /bin/sh -c "/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" -- sh scripts/build.sh +- docker run cabaletta/baritone /bin/sh -c "/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; sh scripts/build.sh" +- docker cp $(docker ps -a -q):/code/dist dist +- ls dist deploy: provider: releases diff --git a/Dockerfile b/Dockerfile index 9d5d1d7f..db565b76 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,4 +21,4 @@ RUN dpkg -i /code/scripts/xvfb_1.16.4-1_amd64.deb WORKDIR /code -RUN ./gradlew assemble \ No newline at end of file +RUN ./gradlew build \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index c5131692..bd37391d 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,6 +1,7 @@ set -e # this makes the whole script fail immediately if any one of these commands fails ./gradlew build export VERSION=$(cat build.gradle | grep "version '" | cut -d "'" -f 2-2) + wget https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip unzip proguard6.0.3.zip 2>&1 > /dev/null cd build/libs diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 14c35319..8d30d1df 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -23,6 +23,7 @@ import baritone.api.event.listener.IGameEventListener; import baritone.behavior.*; import baritone.cache.WorldProvider; import baritone.event.GameEventHandler; +import baritone.utils.BaritoneAutoTest; import baritone.utils.InputOverrideHandler; import net.minecraft.client.Minecraft; @@ -108,6 +109,9 @@ public enum Baritone { PathingBehavior.INSTANCE ); } + if (BaritoneAutoTest.ENABLE_AUTO_TEST && "true".equals(System.getenv("BARITONE_AUTO_TEST"))) { + registerEventListener(new BaritoneAutoTest()); + } this.dir = new File(Minecraft.getMinecraft().gameDir, "baritone"); if (!Files.exists(dir.toPath())) { try { diff --git a/src/main/java/baritone/utils/BaritoneAutoTest.java b/src/main/java/baritone/utils/BaritoneAutoTest.java new file mode 100644 index 00000000..379786d1 --- /dev/null +++ b/src/main/java/baritone/utils/BaritoneAutoTest.java @@ -0,0 +1,70 @@ +/* + * 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.event.events.TickEvent; +import baritone.api.event.listener.AbstractGameEventListener; +import baritone.api.pathing.goals.Goal; +import baritone.api.pathing.goals.GoalXZ; +import baritone.behavior.PathingBehavior; +import net.minecraft.client.gui.GuiMainMenu; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.GameType; +import net.minecraft.world.WorldSettings; +import net.minecraft.world.WorldType; + +public class BaritoneAutoTest implements AbstractGameEventListener, Helper { + public static final boolean ENABLE_AUTO_TEST = true; + private static final long TEST_SEED = -928872506371745L; + private static final BlockPos STARTING_POSITION = new BlockPos(0, 65, 0); + private static final Goal GOAL = new GoalXZ(100, 0); + private static final int MAX_TICKS = 800; + + @Override + public void onTick(TickEvent event) { + if (mc.currentScreen != null && mc.currentScreen instanceof GuiMainMenu) { + System.out.println("Beginning Baritone automatic test routine"); + mc.displayGuiScreen(null); + WorldSettings worldsettings = new WorldSettings(TEST_SEED, GameType.getByName("survival"), true, false, WorldType.DEFAULT); + worldsettings.setGeneratorOptions(""); + mc.launchIntegratedServer("BaritoneAutoTest", "BaritoneAutoTest", worldsettings); + } + if (mc.getIntegratedServer() != null && mc.getIntegratedServer().worlds[0] != null) { + mc.getIntegratedServer().worlds[0].setSpawnPoint(STARTING_POSITION); + } + if (event.getType() == TickEvent.Type.IN) { + if (mc.isSingleplayer() && !mc.getIntegratedServer().getPublic()) { + mc.getIntegratedServer().shareToLAN(GameType.getByName("survival"), false); + } + if (event.getCount() < 100) { + System.out.println("Waiting for world to generate... " + event.getCount()); + return; + } + System.out.println(playerFeet() + " " + event.getCount()); + PathingBehavior.INSTANCE.setGoal(GOAL); + PathingBehavior.INSTANCE.path(); + if (GOAL.isInGoal(playerFeet())) { + System.out.println("Successfully pathed to " + playerFeet() + " in " + event.getCount() + " ticks"); + mc.shutdown(); + } + if (event.getCount() > MAX_TICKS) { + throw new IllegalStateException("took too long"); + } + } + } +}