From 96e7f37799b0fca0663b3ff9ae4cac07748f85e4 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 23 Oct 2018 20:41:35 -0700 Subject: [PATCH 01/22] add link to adovin's video --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eb427ab29..ccf2802ff 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ A Minecraft pathfinder bot. This project is an updated version of [MineBot](https://github.com/leijurv/MineBot/), the original version of the bot for Minecraft 1.8, rebuilt for 1.12.2. Baritone focuses on reliability and particularly performance (it's over [29x faster](https://github.com/cabaletta/baritone/pull/180#issuecomment-423822928) than MineBot at calculating paths). -Baritone is the pathfinding system used in [Impact](https://impactdevelopment.github.io/) since 4.4. +Baritone is the pathfinding system used in [Impact](https://impactdevelopment.github.io/) since 4.4. There's a [showcase video](https://www.youtube.com/watch?v=yI8hgW_m6dQ) made by @Adovin#3153 on Baritone's integration into Impact. Here are some links to help to get started: From 76170816375b906d7bd6347272e8f07714dd1c2b Mon Sep 17 00:00:00 2001 From: Leijurv Date: Wed, 24 Oct 2018 23:22:19 -0700 Subject: [PATCH 02/22] no longer needed --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index ccf2802ff..588a90c92 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ [![License](https://img.shields.io/github/license/cabaletta/baritone.svg)](LICENSE) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/a73d037823b64a5faf597a18d71e3400)](https://www.codacy.com/app/leijurv/baritone?utm_source=github.com&utm_medium=referral&utm_content=cabaletta/baritone&utm_campaign=Badge_Grade) - - A Minecraft pathfinder bot. This project is an updated version of [MineBot](https://github.com/leijurv/MineBot/), the original version of the bot for Minecraft 1.8, rebuilt for 1.12.2. Baritone focuses on reliability and particularly performance (it's over [29x faster](https://github.com/cabaletta/baritone/pull/180#issuecomment-423822928) than MineBot at calculating paths). From a0b1cb2993b27aae3a2af716fecdc5c22bfdf182 Mon Sep 17 00:00:00 2001 From: leijurv Date: Thu, 25 Oct 2018 20:08:52 -0700 Subject: [PATCH 03/22] preliminary refactoring --- .../java/baritone/behavior/MineBehavior.java | 28 +++++++++---------- .../utils/ExampleBaritoneControl.java | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/baritone/behavior/MineBehavior.java b/src/main/java/baritone/behavior/MineBehavior.java index 311203e8c..3bb5e8dad 100644 --- a/src/main/java/baritone/behavior/MineBehavior.java +++ b/src/main/java/baritone/behavior/MineBehavior.java @@ -50,8 +50,8 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe public static final MineBehavior INSTANCE = new MineBehavior(); private List mining; - private List locationsCache; - private int quantity; + private List knownOreLocations; + private int desiredQuantity; private MineBehavior() {} @@ -64,11 +64,11 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe if (mining == null) { return; } - if (quantity > 0) { + if (desiredQuantity > 0) { Item item = mining.get(0).getItemDropped(mining.get(0).getDefaultState(), new Random(), 0); int curr = player().inventory.mainInventory.stream().filter(stack -> item.equals(stack.getItem())).mapToInt(ItemStack::getCount).sum(); System.out.println("Currently have " + curr + " " + item); - if (curr >= quantity) { + if (curr >= desiredQuantity) { logDirect("Have " + curr + " " + item.getItemStackDisplayName(new ItemStack(item, 1))); cancel(); return; @@ -88,12 +88,12 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe if (mining == null) { return; } - List locs = locationsCache; + List locs = knownOreLocations; if (!locs.isEmpty()) { locs = prune(new ArrayList<>(locs), mining, 64); PathingBehavior.INSTANCE.setGoal(coalesce(locs)); PathingBehavior.INSTANCE.path(); - locationsCache = locs; + knownOreLocations = locs; } } @@ -101,16 +101,16 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe if (mining == null) { return; } - List locs = scanFor(mining, 64); + List locs = xrayFor(mining, 64); if (locs.isEmpty()) { logDebug("No locations for " + mining + " known, cancelling"); mine(0, (String[]) null); return; } - locationsCache = locs; + knownOreLocations = locs; } - public Goal coalesce(BlockPos loc, List locs) { + private static Goal coalesce(BlockPos loc, List locs) { if (!Baritone.settings().forceInternalMining.get()) { return new GoalTwoBlocks(loc); } @@ -136,7 +136,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe return new GoalComposite(locs.stream().map(loc -> coalesce(loc, locs)).toArray(Goal[]::new)); } - public List scanFor(List mining, int max) { + public List xrayFor(List mining, int max) { List locs = new ArrayList<>(); List uninteresting = new ArrayList<>(); //long b = System.currentTimeMillis(); @@ -177,8 +177,8 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe @Override public void mine(int quantity, String... blocks) { this.mining = blocks == null || blocks.length == 0 ? null : Arrays.stream(blocks).map(ChunkPacker::stringToBlock).collect(Collectors.toList()); - this.quantity = quantity; - this.locationsCache = new ArrayList<>(); + this.desiredQuantity = quantity; + this.knownOreLocations = new ArrayList<>(); rescan(); updateGoal(); } @@ -186,8 +186,8 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe @Override public void mine(int quantity, Block... blocks) { this.mining = blocks == null || blocks.length == 0 ? null : Arrays.asList(blocks); - this.quantity = quantity; - this.locationsCache = new ArrayList<>(); + this.desiredQuantity = quantity; + this.knownOreLocations = new ArrayList<>(); rescan(); updateGoal(); } diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index 4a73011fe..77132e825 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -382,7 +382,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } } else { - List locs = MineBehavior.INSTANCE.scanFor(Collections.singletonList(block), 64); + List locs = MineBehavior.INSTANCE.xrayFor(Collections.singletonList(block), 64); if (locs.isEmpty()) { logDirect("No locations for " + mining + " known, cancelling"); return true; From 55091154c4970f8500cffda0da48f320e37b3c68 Mon Sep 17 00:00:00 2001 From: leijurv Date: Thu, 25 Oct 2018 21:21:42 -0700 Subject: [PATCH 04/22] start on legitMine --- src/api/java/baritone/api/Settings.java | 14 ++- .../java/baritone/behavior/MineBehavior.java | 94 +++++++++++++++---- .../baritone/behavior/PathingBehavior.java | 5 + 3 files changed, 93 insertions(+), 20 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 04c396fd9..0d8529dd9 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -24,8 +24,8 @@ import net.minecraft.util.text.ITextComponent; import java.awt.*; import java.lang.reflect.Field; -import java.util.*; import java.util.List; +import java.util.*; import java.util.function.Consumer; /** @@ -396,6 +396,18 @@ public class Settings { */ public Setting axisHeight = new Setting<>(120); + /** + * Allow MineBehavior to use X-Ray to see where the ores are. Turn this option off to force it to mine "legit" + * where it will only mine an ore once it can actually see it, so it won't do or know anything that a normal player + * couldn't. If you don't want it to look like you're X-Raying, turn this off + */ + public Setting legitMine = new Setting<>(false); + + /** + * What Y level to go to for legit strip mining + */ + public Setting legitMineYLevel = new Setting<>(11); + /** * When mining block of a certain type, try to mine two at once instead of one. * If the block above is also a goal block, set GoalBlock instead of GoalTwoBlocks diff --git a/src/main/java/baritone/behavior/MineBehavior.java b/src/main/java/baritone/behavior/MineBehavior.java index 3bb5e8dad..81a18ef7a 100644 --- a/src/main/java/baritone/behavior/MineBehavior.java +++ b/src/main/java/baritone/behavior/MineBehavior.java @@ -20,14 +20,13 @@ package baritone.behavior; import baritone.Baritone; import baritone.api.behavior.IMineBehavior; import baritone.api.event.events.TickEvent; -import baritone.api.pathing.goals.Goal; -import baritone.api.pathing.goals.GoalBlock; -import baritone.api.pathing.goals.GoalComposite; -import baritone.api.pathing.goals.GoalTwoBlocks; +import baritone.api.pathing.goals.*; +import baritone.api.utils.RotationUtils; import baritone.cache.CachedChunk; import baritone.cache.ChunkPacker; import baritone.cache.WorldProvider; import baritone.cache.WorldScanner; +import baritone.pathing.movement.MovementHelper; import baritone.utils.BlockStateInterface; import baritone.utils.Helper; import net.minecraft.block.Block; @@ -51,6 +50,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe private List mining; private List knownOreLocations; + private BlockPos branchPoint; private int desiredQuantity; private MineBehavior() {} @@ -80,6 +80,9 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe Baritone.INSTANCE.getExecutor().execute(this::rescan); } } + if (Baritone.settings().legitMine.get()) { + addNearby(); + } updateGoal(); PathingBehavior.INSTANCE.revalidateGoal(); } @@ -90,17 +93,42 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe } List locs = knownOreLocations; if (!locs.isEmpty()) { - locs = prune(new ArrayList<>(locs), mining, 64); - PathingBehavior.INSTANCE.setGoal(coalesce(locs)); - PathingBehavior.INSTANCE.path(); + List locs2 = prune(new ArrayList<>(locs), mining, 64); + // can't reassign locs, gotta make a new var locs2, because we use it in a lambda right here, and variables you use in a lambda must be effectively final + PathingBehavior.INSTANCE.setGoalAndPath(new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2)).toArray(Goal[]::new))); knownOreLocations = locs; + return; } + // we don't know any ore locations at the moment + if (!Baritone.settings().legitMine.get()) { + return; + } + // only in non-Xray mode (aka legit mode) do we do this + if (branchPoint == null) { + int y = Baritone.settings().legitMineYLevel.get(); + if (!PathingBehavior.INSTANCE.isPathing() && playerFeet().y == y) { + // cool, path is over and we are at desired y + branchPoint = playerFeet(); + } else { + PathingBehavior.INSTANCE.setGoalAndPath(new GoalYLevel(y)); + return; + } + } + + if (playerFeet().equals(branchPoint)) { + // TODO mine 1x1 shafts to either side + branchPoint = branchPoint.north(10); + } + PathingBehavior.INSTANCE.setGoalAndPath(new GoalBlock(branchPoint)); } private void rescan() { if (mining == null) { return; } + if (Baritone.settings().legitMine.get()) { + return; + } List locs = xrayFor(mining, 64); if (locs.isEmpty()) { logDebug("No locations for " + mining + " known, cancelling"); @@ -132,10 +160,6 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe } } - public GoalComposite coalesce(List locs) { - return new GoalComposite(locs.stream().map(loc -> coalesce(loc, locs)).toArray(Goal[]::new)); - } - public List xrayFor(List mining, int max) { List locs = new ArrayList<>(); List uninteresting = new ArrayList<>(); @@ -159,26 +183,57 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe return prune(locs, mining, max); } - public List prune(List locs, List mining, int max) { - BlockPos playerFeet = MineBehavior.INSTANCE.playerFeet(); - locs.sort(Comparator.comparingDouble(playerFeet::distanceSq)); + public void addNearby() { + BlockPos playerFeet = playerFeet(); + int searchDist = 4;//why four? idk + for (int x = playerFeet.getX() - searchDist; x <= playerFeet.getX() + searchDist; x++) { + for (int y = playerFeet.getY() - searchDist; y <= playerFeet.getY() + searchDist; y++) { + for (int z = playerFeet.getZ() - searchDist; z <= playerFeet.getZ() + searchDist; z++) { + BlockPos pos = new BlockPos(x, y, z); + if (mining.contains(BlockStateInterface.getBlock(pos))) { + if (RotationUtils.reachable(player(), pos).isPresent()) {//crucial to only add blocks we can see because otherwise this is an x-ray and it'll get caught + knownOreLocations.add(pos); + } + } + } + } + } + knownOreLocations = prune(knownOreLocations, mining, 64); + } + + public static List prune(List locs2, List mining, int max) { + List locs = locs2 + .stream() + + // remove any that are within loaded chunks that aren't actually what we want + .filter(pos -> MineBehavior.INSTANCE.world().getChunk(pos) instanceof EmptyChunk || mining.contains(BlockStateInterface.get(pos).getBlock())) + + // remove any that are implausible to mine (encased in bedrock, or touching lava) + .filter(MineBehavior::plausibleToBreak) + + .sorted(Comparator.comparingDouble(Helper.HELPER.playerFeet()::distanceSq)) + .collect(Collectors.toList()); - // remove any that are within loaded chunks that aren't actually what we want - locs.removeAll(locs.stream() - .filter(pos -> !(MineBehavior.INSTANCE.world().getChunk(pos) instanceof EmptyChunk)) - .filter(pos -> !mining.contains(BlockStateInterface.get(pos).getBlock())) - .collect(Collectors.toList())); if (locs.size() > max) { return locs.subList(0, max); } return locs; } + public static boolean plausibleToBreak(BlockPos pos) { + if (MovementHelper.avoidBreaking(pos.getX(), pos.getY(), pos.getZ(), BlockStateInterface.get(pos))) { + return false; + } + // bedrock above and below makes it implausible, otherwise we're good + return !(BlockStateInterface.getBlock(pos.up()) == Blocks.BEDROCK && BlockStateInterface.getBlock(pos.down()) == Blocks.BEDROCK); + } + @Override public void mine(int quantity, String... blocks) { this.mining = blocks == null || blocks.length == 0 ? null : Arrays.stream(blocks).map(ChunkPacker::stringToBlock).collect(Collectors.toList()); this.desiredQuantity = quantity; this.knownOreLocations = new ArrayList<>(); + this.branchPoint = null; rescan(); updateGoal(); } @@ -188,6 +243,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe this.mining = blocks == null || blocks.length == 0 ? null : Arrays.asList(blocks); this.desiredQuantity = quantity; this.knownOreLocations = new ArrayList<>(); + this.branchPoint = null; rescan(); updateGoal(); } diff --git a/src/main/java/baritone/behavior/PathingBehavior.java b/src/main/java/baritone/behavior/PathingBehavior.java index 869aac1f9..f18993335 100644 --- a/src/main/java/baritone/behavior/PathingBehavior.java +++ b/src/main/java/baritone/behavior/PathingBehavior.java @@ -201,6 +201,11 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, this.goal = goal; } + public boolean setGoalAndPath(Goal goal) { + setGoal(goal); + return path(); + } + @Override public Goal getGoal() { return goal; From 4e1491a0ccad53791b85778608b9667990975cb2 Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 26 Oct 2018 13:30:16 -0500 Subject: [PATCH 05/22] Rename xrayFor to searchWorld --- src/main/java/baritone/behavior/MineBehavior.java | 4 ++-- src/main/java/baritone/utils/ExampleBaritoneControl.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/baritone/behavior/MineBehavior.java b/src/main/java/baritone/behavior/MineBehavior.java index 81a18ef7a..bdc44320c 100644 --- a/src/main/java/baritone/behavior/MineBehavior.java +++ b/src/main/java/baritone/behavior/MineBehavior.java @@ -129,7 +129,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe if (Baritone.settings().legitMine.get()) { return; } - List locs = xrayFor(mining, 64); + List locs = searchWorld(mining, 64); if (locs.isEmpty()) { logDebug("No locations for " + mining + " known, cancelling"); mine(0, (String[]) null); @@ -160,7 +160,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe } } - public List xrayFor(List mining, int max) { + public List searchWorld(List mining, int max) { List locs = new ArrayList<>(); List uninteresting = new ArrayList<>(); //long b = System.currentTimeMillis(); diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index 77132e825..f1f70c77a 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -382,7 +382,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } } else { - List locs = MineBehavior.INSTANCE.xrayFor(Collections.singletonList(block), 64); + List locs = MineBehavior.INSTANCE.searchWorld(Collections.singletonList(block), 64); if (locs.isEmpty()) { logDirect("No locations for " + mining + " known, cancelling"); return true; From 6df05f4b7f767133085d6a4363edafc7d003ea74 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Fri, 26 Oct 2018 20:04:12 -0700 Subject: [PATCH 06/22] add link to my vid --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 588a90c92..caf491136 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A Minecraft pathfinder bot. This project is an updated version of [MineBot](https://github.com/leijurv/MineBot/), the original version of the bot for Minecraft 1.8, rebuilt for 1.12.2. Baritone focuses on reliability and particularly performance (it's over [29x faster](https://github.com/cabaletta/baritone/pull/180#issuecomment-423822928) than MineBot at calculating paths). -Baritone is the pathfinding system used in [Impact](https://impactdevelopment.github.io/) since 4.4. There's a [showcase video](https://www.youtube.com/watch?v=yI8hgW_m6dQ) made by @Adovin#3153 on Baritone's integration into Impact. +Baritone is the pathfinding system used in [Impact](https://impactdevelopment.github.io/) since 4.4. There's a [showcase video](https://www.youtube.com/watch?v=yI8hgW_m6dQ) made by @Adovin#3153 on Baritone's integration into Impact. [Here's](https://www.youtube.com/watch?v=StquF69-_wI) a video I made showing off what it can do. Here are some links to help to get started: From ef8fd7047593e38db65d893a37fa4c056ced62b4 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 27 Oct 2018 09:25:53 -0700 Subject: [PATCH 07/22] add some more badges for no reason lol --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index caf491136..2cabfd77b 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ [![Release](https://img.shields.io/github/release/cabaletta/baritone.svg)](https://github.com/cabaletta/baritone/releases) [![License](https://img.shields.io/github/license/cabaletta/baritone.svg)](LICENSE) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/a73d037823b64a5faf597a18d71e3400)](https://www.codacy.com/app/leijurv/baritone?utm_source=github.com&utm_medium=referral&utm_content=cabaletta/baritone&utm_campaign=Badge_Grade) +[![HitCount](http://hits.dwyl.com/cabaletta/baritone.svg)](http://hits.dwyl.com/cabaletta/baritone) +[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/cabaletta/baritone/issues) A Minecraft pathfinder bot. This project is an updated version of [MineBot](https://github.com/leijurv/MineBot/), the original version of the bot for Minecraft 1.8, rebuilt for 1.12.2. Baritone focuses on reliability and particularly performance (it's over [29x faster](https://github.com/cabaletta/baritone/pull/180#issuecomment-423822928) than MineBot at calculating paths). From 19e0e6d962de7fb07c11ed6bb404ab57062b9ffb Mon Sep 17 00:00:00 2001 From: Brady Date: Sat, 27 Oct 2018 14:37:49 -0500 Subject: [PATCH 08/22] Feed codacy --- .../main/java/baritone/gradle/task/BaritoneGradleTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java index 22dac86ec..7c724c9b5 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java @@ -57,7 +57,7 @@ class BaritoneGradleTask extends DefaultTask { String artifactName, artifactVersion; Path artifactPath, artifactUnoptimizedPath, artifactApiPath, artifactStandalonePath, proguardOut; - void verifyArtifacts() throws Exception { + void verifyArtifacts() throws IllegalStateException { this.artifactName = getProject().getName(); this.artifactVersion = getProject().getVersion().toString(); @@ -69,7 +69,7 @@ class BaritoneGradleTask extends DefaultTask { this.proguardOut = this.getTemporaryFile(PROGUARD_EXPORT_PATH); if (!Files.exists(this.artifactPath)) { - throw new Exception("Artifact not found! Run build first!"); + throw new IllegalStateException("Artifact not found! Run build first!"); } } From 8cee173f92c93986bc6b80dd458832f89b00bd4d Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 27 Oct 2018 14:16:34 -0700 Subject: [PATCH 09/22] appease codacy some more --- .../gradle/task/BaritoneGradleTask.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java index 7c724c9b5..0450509f8 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java @@ -34,9 +34,9 @@ import java.util.List; */ class BaritoneGradleTask extends DefaultTask { - static final JsonParser PARSER = new JsonParser(); + protected static final JsonParser PARSER = new JsonParser(); - static final String + protected static final String PROGUARD_ZIP = "proguard.zip", PROGUARD_JAR = "proguard.jar", PROGUARD_CONFIG_TEMPLATE = "scripts/proguard.pro", @@ -54,10 +54,10 @@ class BaritoneGradleTask extends DefaultTask { ARTIFACT_API = "%s-api-%s.jar", ARTIFACT_STANDALONE = "%s-standalone-%s.jar"; - String artifactName, artifactVersion; - Path artifactPath, artifactUnoptimizedPath, artifactApiPath, artifactStandalonePath, proguardOut; + protected String artifactName, artifactVersion; + protected Path artifactPath, artifactUnoptimizedPath, artifactApiPath, artifactStandalonePath, proguardOut; - void verifyArtifacts() throws IllegalStateException { + protected void verifyArtifacts() throws IllegalStateException { this.artifactName = getProject().getName(); this.artifactVersion = getProject().getVersion().toString(); @@ -73,30 +73,30 @@ class BaritoneGradleTask extends DefaultTask { } } - void write(InputStream stream, Path file) throws Exception { + protected void write(InputStream stream, Path file) throws Exception { if (Files.exists(file)) { Files.delete(file); } Files.copy(stream, file); } - String formatVersion(String string) { + protected String formatVersion(String string) { return String.format(string, this.artifactName, this.artifactVersion); } - Path getRelativeFile(String file) { + protected Path getRelativeFile(String file) { return Paths.get(new File(file).getAbsolutePath()); } - Path getTemporaryFile(String file) { + protected Path getTemporaryFile(String file) { return Paths.get(new File(getTemporaryDir(), file).getAbsolutePath()); } - Path getBuildFile(String file) { + protected Path getBuildFile(String file) { return getRelativeFile("build/libs/" + file); } - JsonElement readJson(List lines) { + protected JsonElement readJson(List lines) { return PARSER.parse(String.join("\n", lines)); } } From 1dee8ef3550e0c51f4e6f18a780826986b81fd9b Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 27 Oct 2018 14:41:25 -0700 Subject: [PATCH 10/22] completely submitting to codacy --- .../baritone/gradle/task/CreateDistTask.java | 2 +- .../baritone/gradle/task/ProguardTask.java | 2 +- .../baritone/api/utils/RotationUtils.java | 6 ++--- .../java/baritone/behavior/MineBehavior.java | 12 +++------ .../baritone/behavior/PathingBehavior.java | 21 ++++++--------- .../pathing/calc/AStarPathFinder.java | 10 +++---- .../movement/movements/MovementAscend.java | 26 ++++++++----------- .../movement/movements/MovementDescend.java | 9 +++---- .../movement/movements/MovementDiagonal.java | 12 +++------ .../movement/movements/MovementPillar.java | 12 +++------ .../movement/movements/MovementTraverse.java | 15 ++++------- .../baritone/pathing/path/PathExecutor.java | 12 +++------ .../utils/ExampleBaritoneControl.java | 22 ++++++---------- 13 files changed, 60 insertions(+), 101 deletions(-) diff --git a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java index 48b834215..49e2e1422 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java @@ -76,7 +76,7 @@ public class CreateDistTask extends BaritoneGradleTask { return DatatypeConverter.printHexBinary(SHA1_DIGEST.digest(Files.readAllBytes(path))).toLowerCase(); } catch (Exception e) { // haha no thanks - throw new RuntimeException(e); + throw new IllegalStateException(e); } } } diff --git a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java index ce0e38006..350f74469 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java @@ -241,7 +241,7 @@ public class ProguardTask extends BaritoneGradleTask { // Halt the current thread until the process is complete, if the exit code isn't 0, throw an exception int exitCode = p.waitFor(); if (exitCode != 0) { - throw new Exception("Proguard exited with code " + exitCode); + throw new IllegalStateException("Proguard exited with code " + exitCode); } } diff --git a/src/api/java/baritone/api/utils/RotationUtils.java b/src/api/java/baritone/api/utils/RotationUtils.java index c7ff30578..a8449dc73 100644 --- a/src/api/java/baritone/api/utils/RotationUtils.java +++ b/src/api/java/baritone/api/utils/RotationUtils.java @@ -220,10 +220,8 @@ public final class RotationUtils { if (result.getBlockPos().equals(pos)) { return Optional.of(rotation); } - if (entity.world.getBlockState(pos).getBlock() instanceof BlockFire) { - if (result.getBlockPos().equals(pos.down())) { - return Optional.of(rotation); - } + if (entity.world.getBlockState(pos).getBlock() instanceof BlockFire && result.getBlockPos().equals(pos.down())) { + return Optional.of(rotation); } } return Optional.empty(); diff --git a/src/main/java/baritone/behavior/MineBehavior.java b/src/main/java/baritone/behavior/MineBehavior.java index bdc44320c..889cb4ff3 100644 --- a/src/main/java/baritone/behavior/MineBehavior.java +++ b/src/main/java/baritone/behavior/MineBehavior.java @@ -75,10 +75,8 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe } } int mineGoalUpdateInterval = Baritone.settings().mineGoalUpdateInterval.get(); - if (mineGoalUpdateInterval != 0) { - if (event.getCount() % mineGoalUpdateInterval == 0) { - Baritone.INSTANCE.getExecutor().execute(this::rescan); - } + if (mineGoalUpdateInterval != 0 && event.getCount() % mineGoalUpdateInterval == 0) { + Baritone.INSTANCE.getExecutor().execute(this::rescan); } if (Baritone.settings().legitMine.get()) { addNearby(); @@ -190,10 +188,8 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe for (int y = playerFeet.getY() - searchDist; y <= playerFeet.getY() + searchDist; y++) { for (int z = playerFeet.getZ() - searchDist; z <= playerFeet.getZ() + searchDist; z++) { BlockPos pos = new BlockPos(x, y, z); - if (mining.contains(BlockStateInterface.getBlock(pos))) { - if (RotationUtils.reachable(player(), pos).isPresent()) {//crucial to only add blocks we can see because otherwise this is an x-ray and it'll get caught - knownOreLocations.add(pos); - } + if (mining.contains(BlockStateInterface.getBlock(pos)) && RotationUtils.reachable(player(), pos).isPresent()) {//crucial to only add blocks we can see because otherwise this is an x-ray and it'll get caught + knownOreLocations.add(pos); } } } diff --git a/src/main/java/baritone/behavior/PathingBehavior.java b/src/main/java/baritone/behavior/PathingBehavior.java index f18993335..d626ac4ff 100644 --- a/src/main/java/baritone/behavior/PathingBehavior.java +++ b/src/main/java/baritone/behavior/PathingBehavior.java @@ -134,19 +134,14 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, return; } // at this point, we know current is in progress - if (safe) { - // a movement just ended - if (next != null) { - if (next.snipsnapifpossible()) { - // jump directly onto the next path - logDebug("Splicing into planned next path early..."); - queuePathEvent(PathEvent.SPLICING_ONTO_NEXT_EARLY); - current = next; - next = null; - current.onTick(); - return; - } - } + if (safe && next != null && next.snipsnapifpossible()) { + // a movement just ended; jump directly onto the next path + logDebug("Splicing into planned next path early..."); + queuePathEvent(PathEvent.SPLICING_ONTO_NEXT_EARLY); + current = next; + next = null; + current.onTick(); + return; } synchronized (pathCalcLock) { if (isPathCalcInProgress) { diff --git a/src/main/java/baritone/pathing/calc/AStarPathFinder.java b/src/main/java/baritone/pathing/calc/AStarPathFinder.java index 020acc349..dfecae2ea 100644 --- a/src/main/java/baritone/pathing/calc/AStarPathFinder.java +++ b/src/main/java/baritone/pathing/calc/AStarPathFinder.java @@ -99,14 +99,12 @@ public final class AStarPathFinder extends AbstractNodeCostSearch implements Hel for (Moves moves : Moves.values()) { int newX = currentNode.x + moves.xOffset; int newZ = currentNode.z + moves.zOffset; - if (newX >> 4 != currentNode.x >> 4 || newZ >> 4 != currentNode.z >> 4) { + if ((newX >> 4 != currentNode.x >> 4 || newZ >> 4 != currentNode.z >> 4) && !BlockStateInterface.isLoaded(newX, newZ)) { // only need to check if the destination is a loaded chunk if it's in a different chunk than the start of the movement - if (!BlockStateInterface.isLoaded(newX, newZ)) { - if (!moves.dynamicXZ) { // only increment the counter if the movement would have gone out of bounds guaranteed - numEmptyChunk++; - } - continue; + if (!moves.dynamicXZ) { // only increment the counter if the movement would have gone out of bounds guaranteed + numEmptyChunk++; } + continue; } if (!moves.dynamicXZ && !worldBorder.entirelyContains(newX, newZ)) { continue; diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 52b0c78e1..e0d410471 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -97,21 +97,19 @@ public class MovementAscend extends Movement { } } IBlockState srcUp2 = null; - if (BlockStateInterface.get(x, y + 3, z).getBlock() instanceof BlockFalling) {//it would fall on us and possibly suffocate us + if (BlockStateInterface.get(x, y + 3, z).getBlock() instanceof BlockFalling && (MovementHelper.canWalkThrough(x, y + 1, z) || !((srcUp2 = BlockStateInterface.get(x, y + 2, z)).getBlock() instanceof BlockFalling))) {//it would fall on us and possibly suffocate us // HOWEVER, we assume that we're standing in the start position // that means that src and src.up(1) are both air // maybe they aren't now, but they will be by the time this starts - if (MovementHelper.canWalkThrough(x, y + 1, z) || !((srcUp2 = BlockStateInterface.get(x, y + 2, z)).getBlock() instanceof BlockFalling)) { - // if the lower one is can't walk through and the upper one is falling, that means that by standing on src - // (the presupposition of this Movement) - // we have necessarily already cleared the entire BlockFalling stack - // on top of our head + // if the lower one is can't walk through and the upper one is falling, that means that by standing on src + // (the presupposition of this Movement) + // we have necessarily already cleared the entire BlockFalling stack + // on top of our head - // as in, if we have a block, then two BlockFallings on top of it - // and that block is x, y+1, z, and we'd have to clear it to even start this movement - // we don't need to worry about those BlockFallings because we've already cleared them - return COST_INF; - } + // as in, if we have a block, then two BlockFallings on top of it + // and that block is x, y+1, z, and we'd have to clear it to even start this movement + // we don't need to worry about those BlockFallings because we've already cleared them + return COST_INF; // you may think we only need to check srcUp2, not srcUp // however, in the scenario where glitchy world gen where unsupported sand / gravel generates // it's possible srcUp is AIR from the start, and srcUp2 is falling @@ -206,10 +204,8 @@ public class MovementAscend extends Movement { return state.setStatus(MovementStatus.UNREACHABLE); } MovementHelper.moveTowards(state, dest); - if (MovementHelper.isBottomSlab(jumpingOnto)) { - if (!MovementHelper.isBottomSlab(src.down())) { - return state; // don't jump while walking from a non double slab into a bottom slab - } + if (MovementHelper.isBottomSlab(jumpingOnto) && !MovementHelper.isBottomSlab(src.down())) { + return state; // don't jump while walking from a non double slab into a bottom slab } if (Baritone.settings().assumeStep.get()) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index d2e3d3061..5fb78d743 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -183,11 +183,10 @@ public class MovementDescend extends Movement { } BlockPos playerFeet = playerFeet(); - if (playerFeet.equals(dest)) { - if (BlockStateInterface.isLiquid(dest) || player().posY - playerFeet.getY() < 0.094) { // lilypads - // Wait until we're actually on the ground before saying we're done because sometimes we continue to fall if the next action starts immediately - return state.setStatus(MovementStatus.SUCCESS); - }/* else { + if (playerFeet.equals(dest) && (BlockStateInterface.isLiquid(dest) || player().posY - playerFeet.getY() < 0.094)) { // lilypads + // Wait until we're actually on the ground before saying we're done because sometimes we continue to fall if the next action starts immediately + return state.setStatus(MovementStatus.SUCCESS); + /* else { // System.out.println(player().posY + " " + playerFeet.getY() + " " + (player().posY - playerFeet.getY())); }*/ } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index 8ff681c63..19f72fca2 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -101,22 +101,18 @@ public class MovementDiagonal extends Movement { return COST_INF; } IBlockState pb3 = BlockStateInterface.get(destX, y + 1, z); - if (optionA == 0) { + if (optionA == 0 && ((MovementHelper.avoidWalkingInto(pb2.getBlock()) && pb2.getBlock() != Blocks.WATER) || (MovementHelper.avoidWalkingInto(pb3.getBlock()) && pb3.getBlock() != Blocks.WATER))) { // at this point we're done calculating optionA, so we can check if it's actually possible to edge around in that direction - if ((MovementHelper.avoidWalkingInto(pb2.getBlock()) && pb2.getBlock() != Blocks.WATER) || (MovementHelper.avoidWalkingInto(pb3.getBlock()) && pb3.getBlock() != Blocks.WATER)) { - return COST_INF; - } + return COST_INF; } optionB += MovementHelper.getMiningDurationTicks(context, destX, y + 1, z, pb3, true); if (optionA != 0 && optionB != 0) { // and finally, if the cost is nonzero for both ways to approach this diagonal, it's not possible return COST_INF; } - if (optionB == 0) { + if (optionB == 0 && ((MovementHelper.avoidWalkingInto(pb0.getBlock()) && pb0.getBlock() != Blocks.WATER) || (MovementHelper.avoidWalkingInto(pb1.getBlock()) && pb1.getBlock() != Blocks.WATER))) { // and now that option B is fully calculated, see if we can edge around that way - if ((MovementHelper.avoidWalkingInto(pb0.getBlock()) && pb0.getBlock() != Blocks.WATER) || (MovementHelper.avoidWalkingInto(pb1.getBlock()) && pb1.getBlock() != Blocks.WATER)) { - return COST_INF; - } + return COST_INF; } boolean water = false; if (BlockStateInterface.isWater(BlockStateInterface.getBlock(x, y, z)) || BlockStateInterface.isWater(destInto.getBlock())) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java index 62241a2bf..c11df54a4 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -54,16 +54,12 @@ public class MovementPillar extends Movement { if (fromDownDown.getBlock() instanceof BlockLadder || fromDownDown.getBlock() instanceof BlockVine) { return COST_INF; } - if (fromDownDown.getBlock() instanceof BlockSlab) { - if (!((BlockSlab) fromDownDown.getBlock()).isDouble() && fromDownDown.getValue(BlockSlab.HALF) == BlockSlab.EnumBlockHalf.BOTTOM) { - return COST_INF; // can't pillar up from a bottom slab onto a non ladder - } + if (fromDownDown.getBlock() instanceof BlockSlab && !((BlockSlab) fromDownDown.getBlock()).isDouble() && fromDownDown.getValue(BlockSlab.HALF) == BlockSlab.EnumBlockHalf.BOTTOM) { + return COST_INF; // can't pillar up from a bottom slab onto a non ladder } } - if (fromDown instanceof BlockVine) { - if (!hasAgainst(x, y, z)) { - return COST_INF; - } + if (fromDown instanceof BlockVine && !hasAgainst(x, y, z)) { + return COST_INF; } IBlockState toBreak = BlockStateInterface.get(x, y + 2, z); Block toBreakBlock = toBreak.getBlock(); diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index a71be4150..7f9c3902e 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -189,11 +189,9 @@ public class MovementTraverse extends Movement { } else if (pb1.getBlock() instanceof BlockDoor && !MovementHelper.isDoorPassable(dest, src)) { isDoorActuallyBlockingUs = true; } - if (isDoorActuallyBlockingUs) { - if (!(Blocks.IRON_DOOR.equals(pb0.getBlock()) || Blocks.IRON_DOOR.equals(pb1.getBlock()))) { - return state.setTarget(new MovementState.MovementTarget(RotationUtils.calcRotationFromVec3d(playerHead(), VecUtils.calculateBlockCenter(positionsToBreak[0])), true)) - .setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); - } + if (isDoorActuallyBlockingUs && !(Blocks.IRON_DOOR.equals(pb0.getBlock()) || Blocks.IRON_DOOR.equals(pb1.getBlock()))) { + return state.setTarget(new MovementState.MovementTarget(RotationUtils.calcRotationFromVec3d(playerHead(), VecUtils.calculateBlockCenter(positionsToBreak[0])), true)) + .setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); } } @@ -267,11 +265,8 @@ public class MovementTraverse extends Movement { state.setTarget(new MovementState.MovementTarget(RotationUtils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations()), true)); EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit; - if (Objects.equals(RayTraceUtils.getSelectedBlock().orElse(null), against1) && (Minecraft.getMinecraft().player.isSneaking() || Baritone.settings().assumeSafeWalk.get())) { - if (RayTraceUtils.getSelectedBlock().get().offset(side).equals(positionToPlace)) { - return state.setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); - } - // wrong side? + if (Objects.equals(RayTraceUtils.getSelectedBlock().orElse(null), against1) && (Minecraft.getMinecraft().player.isSneaking() || Baritone.settings().assumeSafeWalk.get()) && RayTraceUtils.getSelectedBlock().get().offset(side).equals(positionToPlace)) { + return state.setInput(InputOverrideHandler.Input.CLICK_RIGHT, true); } //System.out.println("Trying to look at " + against1 + ", actually looking at" + RayTraceUtils.getSelectedBlock()); return state.setInput(InputOverrideHandler.Input.CLICK_LEFT, true); diff --git a/src/main/java/baritone/pathing/path/PathExecutor.java b/src/main/java/baritone/pathing/path/PathExecutor.java index 045cdab9c..ac48a8dbb 100644 --- a/src/main/java/baritone/pathing/path/PathExecutor.java +++ b/src/main/java/baritone/pathing/path/PathExecutor.java @@ -427,15 +427,11 @@ public class PathExecutor implements IPathExecutor, Helper { } private static boolean canSprintInto(IMovement current, IMovement next) { - if (next instanceof MovementDescend) { - if (next.getDirection().equals(current.getDirection())) { - return true; - } + if (next instanceof MovementDescend && next.getDirection().equals(current.getDirection())) { + return true; } - if (next instanceof MovementTraverse) { - if (next.getDirection().down().equals(current.getDirection()) && MovementHelper.canWalkOn(next.getDest().down())) { - return true; - } + if (next instanceof MovementTraverse && next.getDirection().down().equals(current.getDirection()) && MovementHelper.canWalkOn(next.getDest().down())) { + return true; } if (next instanceof MovementDiagonal && Baritone.settings().allowOvershootDiagonalDescend.get()) { return true; diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index f1f70c77a..18fe9fb7b 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -60,10 +60,8 @@ public class ExampleBaritoneControl extends Behavior implements Helper { @Override public void onSendChatMessage(ChatEvent event) { - if (!Baritone.settings().chatControl.get()) { - if (!Baritone.settings().removePrefix.get()) { - return; - } + if (!Baritone.settings().chatControl.get() && !Baritone.settings().removePrefix.get()) { + return; } String msg = event.getMessage(); if (Baritone.settings().prefix.get()) { @@ -77,8 +75,8 @@ public class ExampleBaritoneControl extends Behavior implements Helper { } } - public boolean runCommand(String msg) { - msg = msg.toLowerCase(Locale.US).trim(); + public boolean runCommand(String msg0) { + String msg = msg0.toLowerCase(Locale.US).trim(); // don't reassign the argument LOL List> toggleable = Baritone.settings().getAllValuesByType(Boolean.class); for (Settings.Setting setting : toggleable) { if (msg.equalsIgnoreCase(setting.getName())) { @@ -252,10 +250,8 @@ public class ExampleBaritoneControl extends Behavior implements Helper { } else { for (EntityPlayer pl : world().playerEntities) { String theirName = pl.getName().trim().toLowerCase(); - if (!theirName.equals(player().getName().trim().toLowerCase())) { // don't follow ourselves lol - if (theirName.contains(name) || name.contains(theirName)) { - toFollow = Optional.of(pl); - } + if (!theirName.equals(player().getName().trim().toLowerCase()) && (theirName.contains(name) || name.contains(theirName))) { // don't follow ourselves lol + toFollow = Optional.of(pl); } } } @@ -400,10 +396,8 @@ public class ExampleBaritoneControl extends Behavior implements Helper { } Goal goal = new GoalBlock(waypoint.getLocation()); PathingBehavior.INSTANCE.setGoal(goal); - if (!PathingBehavior.INSTANCE.path()) { - if (!goal.isInGoal(playerFeet())) { - logDirect("Currently executing a path. Please cancel it first."); - } + if (!PathingBehavior.INSTANCE.path() && !goal.isInGoal(playerFeet())) { + logDirect("Currently executing a path. Please cancel it first."); } return true; } From c4b0e0a81052a4acbffffd089f39781f87bac1ed Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 27 Oct 2018 16:18:03 -0700 Subject: [PATCH 11/22] codady submission complete --- src/main/java/baritone/cache/CachedChunk.java | 70 ++++++++++--------- .../pathing/movement/CalculationContext.java | 5 +- .../pathing/movement/MovementHelper.java | 7 +- .../baritone/pathing/path/PathExecutor.java | 10 +-- 4 files changed, 42 insertions(+), 50 deletions(-) diff --git a/src/main/java/baritone/cache/CachedChunk.java b/src/main/java/baritone/cache/CachedChunk.java index 8d2188b52..6daf2c67e 100644 --- a/src/main/java/baritone/cache/CachedChunk.java +++ b/src/main/java/baritone/cache/CachedChunk.java @@ -33,41 +33,45 @@ import java.util.*; */ public final class CachedChunk implements IBlockTypeAccess, Helper { - public static final Set BLOCKS_TO_KEEP_TRACK_OF = Collections.unmodifiableSet(new HashSet() {{ - add(Blocks.DIAMOND_ORE); - add(Blocks.DIAMOND_BLOCK); - //add(Blocks.COAL_ORE); - add(Blocks.COAL_BLOCK); - //add(Blocks.IRON_ORE); - add(Blocks.IRON_BLOCK); - //add(Blocks.GOLD_ORE); - add(Blocks.GOLD_BLOCK); - add(Blocks.EMERALD_ORE); - add(Blocks.EMERALD_BLOCK); + public static final Set BLOCKS_TO_KEEP_TRACK_OF; - add(Blocks.ENDER_CHEST); - add(Blocks.FURNACE); - add(Blocks.CHEST); - add(Blocks.TRAPPED_CHEST); - add(Blocks.END_PORTAL); - add(Blocks.END_PORTAL_FRAME); - add(Blocks.MOB_SPAWNER); + static { + HashSet temp = new HashSet<>(); + temp.add(Blocks.DIAMOND_ORE); + temp.add(Blocks.DIAMOND_BLOCK); + //temp.add(Blocks.COAL_ORE); + temp.add(Blocks.COAL_BLOCK); + //temp.add(Blocks.IRON_ORE); + temp.add(Blocks.IRON_BLOCK); + //temp.add(Blocks.GOLD_ORE); + temp.add(Blocks.GOLD_BLOCK); + temp.add(Blocks.EMERALD_ORE); + temp.add(Blocks.EMERALD_BLOCK); + + temp.add(Blocks.ENDER_CHEST); + temp.add(Blocks.FURNACE); + temp.add(Blocks.CHEST); + temp.add(Blocks.TRAPPED_CHEST); + temp.add(Blocks.END_PORTAL); + temp.add(Blocks.END_PORTAL_FRAME); + temp.add(Blocks.MOB_SPAWNER); // TODO add all shulker colors - add(Blocks.PORTAL); - add(Blocks.HOPPER); - add(Blocks.BEACON); - add(Blocks.BREWING_STAND); - add(Blocks.SKULL); - add(Blocks.ENCHANTING_TABLE); - add(Blocks.ANVIL); - add(Blocks.LIT_FURNACE); - add(Blocks.BED); - add(Blocks.DRAGON_EGG); - add(Blocks.JUKEBOX); - add(Blocks.END_GATEWAY); - add(Blocks.WEB); - add(Blocks.NETHER_WART); - }}); + temp.add(Blocks.PORTAL); + temp.add(Blocks.HOPPER); + temp.add(Blocks.BEACON); + temp.add(Blocks.BREWING_STAND); + temp.add(Blocks.SKULL); + temp.add(Blocks.ENCHANTING_TABLE); + temp.add(Blocks.ANVIL); + temp.add(Blocks.LIT_FURNACE); + temp.add(Blocks.BED); + temp.add(Blocks.DRAGON_EGG); + temp.add(Blocks.JUKEBOX); + temp.add(Blocks.END_GATEWAY); + temp.add(Blocks.WEB); + temp.add(Blocks.NETHER_WART); + BLOCKS_TO_KEEP_TRACK_OF = Collections.unmodifiableSet(temp); + } /** * The size of the chunk data in bits. Equal to 16 KiB. diff --git a/src/main/java/baritone/pathing/movement/CalculationContext.java b/src/main/java/baritone/pathing/movement/CalculationContext.java index 9f08d578c..00c063af3 100644 --- a/src/main/java/baritone/pathing/movement/CalculationContext.java +++ b/src/main/java/baritone/pathing/movement/CalculationContext.java @@ -87,10 +87,7 @@ public class CalculationContext implements Helper { if (!allowBreak()) { return false; } - if (isPossiblyProtected(x, y, z)) { - return false; - } - return true; + return !isPossiblyProtected(x, y, z); } public boolean isPossiblyProtected(int x, int y, int z) { diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 9f785052b..d887a7140 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -226,7 +226,7 @@ public interface MovementHelper extends ActionCosts, Helper { return true; } - return facing == playerFacing == open; + return (facing == playerFacing) == open; } static boolean avoidWalkingInto(Block block) { @@ -295,10 +295,7 @@ public interface MovementHelper extends ActionCosts, Helper { } return true; } - if (block instanceof BlockStairs) { - return true; - } - return false; + return block instanceof BlockStairs; } static boolean canWalkOn(BetterBlockPos pos, IBlockState state) { diff --git a/src/main/java/baritone/pathing/path/PathExecutor.java b/src/main/java/baritone/pathing/path/PathExecutor.java index ac48a8dbb..e5f9c864e 100644 --- a/src/main/java/baritone/pathing/path/PathExecutor.java +++ b/src/main/java/baritone/pathing/path/PathExecutor.java @@ -326,10 +326,7 @@ public class PathExecutor implements IPathExecutor, Helper { // when we're midair in the middle of a fall, we're very far from both the beginning and the end, but we aren't actually off path if (path.movements().get(pathPosition) instanceof MovementFall) { BlockPos fallDest = path.positions().get(pathPosition + 1); // .get(pathPosition) is the block we fell off of - if (VecUtils.entityFlatDistanceToCenter(player(), fallDest) < leniency) { // ignore Y by using flat distance - return false; - } - return true; + return VecUtils.entityFlatDistanceToCenter(player(), fallDest) >= leniency; // ignore Y by using flat distance } else { return true; } @@ -433,10 +430,7 @@ public class PathExecutor implements IPathExecutor, Helper { if (next instanceof MovementTraverse && next.getDirection().down().equals(current.getDirection()) && MovementHelper.canWalkOn(next.getDest().down())) { return true; } - if (next instanceof MovementDiagonal && Baritone.settings().allowOvershootDiagonalDescend.get()) { - return true; - } - return false; + return next instanceof MovementDiagonal && Baritone.settings().allowOvershootDiagonalDescend.get(); } private void onChangeInPathPosition() { From 1b1233d26a7a9a4ac073cafc1586bc38db396cb2 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 27 Oct 2018 18:45:17 -0700 Subject: [PATCH 12/22] only one singleton --- .../launch/mixins/MixinMinecraft.java | 5 +- src/main/java/baritone/Baritone.java | 68 +++++++++++++++--- src/main/java/baritone/BaritoneProvider.java | 13 ++-- src/main/java/baritone/behavior/Behavior.java | 8 +++ .../baritone/behavior/FollowBehavior.java | 14 ++-- .../behavior/LocationTrackingBehavior.java | 10 +-- .../java/baritone/behavior/LookBehavior.java | 7 +- .../baritone/behavior/MemoryBehavior.java | 7 +- .../java/baritone/behavior/MineBehavior.java | 22 +++--- .../baritone/behavior/PathingBehavior.java | 6 +- .../baritone/pathing/movement/Movement.java | 3 +- .../java/baritone/utils/BaritoneAutoTest.java | 6 +- .../utils/ExampleBaritoneControl.java | 72 +++++++++---------- 13 files changed, 146 insertions(+), 95 deletions(-) diff --git a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java index 19129a5ae..30d4109b6 100644 --- a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java +++ b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java @@ -22,9 +22,7 @@ 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.behavior.PathingBehavior; import baritone.utils.BaritoneAutoTest; -import baritone.utils.ExampleBaritoneControl; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.GuiScreen; @@ -60,7 +58,6 @@ public class MixinMinecraft { ) private void postInit(CallbackInfo ci) { Baritone.INSTANCE.init(); - ExampleBaritoneControl.INSTANCE.initAndRegister(); } @Inject( @@ -145,7 +142,7 @@ public class MixinMinecraft { ) ) private boolean isAllowUserInput(GuiScreen screen) { - return (PathingBehavior.INSTANCE.getCurrent() != null && PathingBehavior.INSTANCE.isEnabled() && player != null) || screen.allowUserInput; + return (Baritone.INSTANCE.getPathingBehavior().getCurrent() != null && Baritone.INSTANCE.getPathingBehavior().isEnabled() && player != null) || screen.allowUserInput; } @Inject( diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 9b887032c..25636ecb9 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -18,11 +18,18 @@ package baritone; import baritone.api.BaritoneAPI; +import baritone.api.IBaritoneProvider; import baritone.api.Settings; +import baritone.api.behavior.*; +import baritone.api.cache.IWorldProvider; +import baritone.api.cache.IWorldScanner; import baritone.api.event.listener.IGameEventListener; import baritone.behavior.*; +import baritone.cache.WorldProvider; +import baritone.cache.WorldScanner; import baritone.event.GameEventHandler; import baritone.utils.BaritoneAutoTest; +import baritone.utils.ExampleBaritoneControl; import baritone.utils.InputOverrideHandler; import net.minecraft.client.Minecraft; @@ -40,7 +47,7 @@ import java.util.concurrent.TimeUnit; * @author Brady * @since 7/31/2018 10:50 PM */ -public enum Baritone { +public enum Baritone implements IBaritoneProvider { /** * Singleton instance of this class @@ -55,10 +62,17 @@ public enum Baritone { private GameEventHandler gameEventHandler; private InputOverrideHandler inputOverrideHandler; private Settings settings; - private List behaviors; private File dir; private ThreadPoolExecutor threadPool; + private List behaviors; + private PathingBehavior pathingBehavior; + private LookBehavior lookBehavior; + private MemoryBehavior memoryBehavior; + private LocationTrackingBehavior locationTrackingBehavior; + private FollowBehavior followBehavior; + private MineBehavior mineBehavior; + /** * Whether or not Baritone is active */ @@ -81,12 +95,14 @@ public enum Baritone { this.behaviors = new ArrayList<>(); { - registerBehavior(PathingBehavior.INSTANCE); - registerBehavior(LookBehavior.INSTANCE); - registerBehavior(MemoryBehavior.INSTANCE); - registerBehavior(LocationTrackingBehavior.INSTANCE); - registerBehavior(FollowBehavior.INSTANCE); - registerBehavior(MineBehavior.INSTANCE); + // 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); + locationTrackingBehavior = new LocationTrackingBehavior(this); + followBehavior = new FollowBehavior(this); + mineBehavior = new MineBehavior(this); + new ExampleBaritoneControl(this); } if (BaritoneAutoTest.ENABLE_AUTO_TEST) { registerEventListener(BaritoneAutoTest.INSTANCE); @@ -127,6 +143,42 @@ public enum Baritone { this.registerEventListener(behavior); } + @Override + public IFollowBehavior getFollowBehavior() { + return followBehavior; + } + + @Override + public ILookBehavior getLookBehavior() { + return lookBehavior; + } + + @Override + public IMemoryBehavior getMemoryBehavior() { + return memoryBehavior; + } + + @Override + public IMineBehavior getMineBehavior() { + return mineBehavior; + } + + @Override + public IPathingBehavior getPathingBehavior() { + return pathingBehavior; + } + + @Override + public IWorldProvider getWorldProvider() { + return WorldProvider.INSTANCE; + } + + @Override + public IWorldScanner getWorldScanner() { + return WorldScanner.INSTANCE; + } + + @Override public void registerEventListener(IGameEventListener listener) { this.gameEventHandler.registerEventListener(listener); } diff --git a/src/main/java/baritone/BaritoneProvider.java b/src/main/java/baritone/BaritoneProvider.java index d9dfe6244..2e9b3b304 100644 --- a/src/main/java/baritone/BaritoneProvider.java +++ b/src/main/java/baritone/BaritoneProvider.java @@ -22,11 +22,12 @@ import baritone.api.behavior.*; import baritone.api.cache.IWorldProvider; import baritone.api.cache.IWorldScanner; import baritone.api.event.listener.IGameEventListener; -import baritone.behavior.*; import baritone.cache.WorldProvider; import baritone.cache.WorldScanner; /** + * todo fix this cancer + * * @author Brady * @since 9/29/2018 */ @@ -34,27 +35,27 @@ public final class BaritoneProvider implements IBaritoneProvider { @Override public IFollowBehavior getFollowBehavior() { - return FollowBehavior.INSTANCE; + return Baritone.INSTANCE.getFollowBehavior(); } @Override public ILookBehavior getLookBehavior() { - return LookBehavior.INSTANCE; + return Baritone.INSTANCE.getLookBehavior(); } @Override public IMemoryBehavior getMemoryBehavior() { - return MemoryBehavior.INSTANCE; + return Baritone.INSTANCE.getMemoryBehavior(); } @Override public IMineBehavior getMineBehavior() { - return MineBehavior.INSTANCE; + return Baritone.INSTANCE.getMineBehavior(); } @Override public IPathingBehavior getPathingBehavior() { - return PathingBehavior.INSTANCE; + return Baritone.INSTANCE.getPathingBehavior(); } @Override diff --git a/src/main/java/baritone/behavior/Behavior.java b/src/main/java/baritone/behavior/Behavior.java index b856e4234..0f8d8cb7a 100644 --- a/src/main/java/baritone/behavior/Behavior.java +++ b/src/main/java/baritone/behavior/Behavior.java @@ -17,6 +17,7 @@ package baritone.behavior; +import baritone.Baritone; import baritone.api.behavior.IBehavior; /** @@ -27,6 +28,13 @@ import baritone.api.behavior.IBehavior; */ public class Behavior implements IBehavior { + public final Baritone baritone; + + protected Behavior(Baritone baritone) { + this.baritone = baritone; + baritone.registerBehavior(this); + } + /** * Whether or not this behavior is enabled */ diff --git a/src/main/java/baritone/behavior/FollowBehavior.java b/src/main/java/baritone/behavior/FollowBehavior.java index 83ca51355..00fbe1c50 100644 --- a/src/main/java/baritone/behavior/FollowBehavior.java +++ b/src/main/java/baritone/behavior/FollowBehavior.java @@ -33,11 +33,11 @@ import net.minecraft.util.math.BlockPos; */ public final class FollowBehavior extends Behavior implements IFollowBehavior, Helper { - public static final FollowBehavior INSTANCE = new FollowBehavior(); - private Entity following; - private FollowBehavior() {} + public FollowBehavior(Baritone baritone) { + super(baritone); + } @Override public void onTick(TickEvent event) { @@ -56,9 +56,9 @@ public final class FollowBehavior extends Behavior implements IFollowBehavior, H GoalXZ g = GoalXZ.fromDirection(following.getPositionVector(), Baritone.settings().followOffsetDirection.get(), Baritone.settings().followOffsetDistance.get()); pos = new BlockPos(g.getX(), following.posY, g.getZ()); } - PathingBehavior.INSTANCE.setGoal(new GoalNear(pos, Baritone.settings().followRadius.get())); - PathingBehavior.INSTANCE.revalidateGoal(); - PathingBehavior.INSTANCE.path(); + baritone.getPathingBehavior().setGoal(new GoalNear(pos, Baritone.settings().followRadius.get())); + ((PathingBehavior) baritone.getPathingBehavior()).revalidateGoal(); + baritone.getPathingBehavior().path(); } @Override @@ -73,7 +73,7 @@ public final class FollowBehavior extends Behavior implements IFollowBehavior, H @Override public void cancel() { - PathingBehavior.INSTANCE.cancel(); + baritone.getPathingBehavior().cancel(); follow(null); } } diff --git a/src/main/java/baritone/behavior/LocationTrackingBehavior.java b/src/main/java/baritone/behavior/LocationTrackingBehavior.java index dee74e796..28c1ee70f 100644 --- a/src/main/java/baritone/behavior/LocationTrackingBehavior.java +++ b/src/main/java/baritone/behavior/LocationTrackingBehavior.java @@ -17,6 +17,7 @@ package baritone.behavior; +import baritone.Baritone; import baritone.api.event.events.BlockInteractEvent; import baritone.cache.Waypoint; import baritone.cache.WorldProvider; @@ -28,16 +29,15 @@ import net.minecraft.block.BlockBed; * A collection of event methods that are used to interact with Baritone's * waypoint system. This class probably needs a better name. * - * @see Waypoint - * * @author Brady + * @see Waypoint * @since 8/22/2018 */ public final class LocationTrackingBehavior extends Behavior implements Helper { - public static final LocationTrackingBehavior INSTANCE = new LocationTrackingBehavior(); - - private LocationTrackingBehavior() {} + public LocationTrackingBehavior(Baritone baritone) { + super(baritone); + } @Override public void onBlockInteract(BlockInteractEvent event) { diff --git a/src/main/java/baritone/behavior/LookBehavior.java b/src/main/java/baritone/behavior/LookBehavior.java index a42a1e507..ac3a4698a 100644 --- a/src/main/java/baritone/behavior/LookBehavior.java +++ b/src/main/java/baritone/behavior/LookBehavior.java @@ -26,9 +26,6 @@ import baritone.api.utils.Rotation; import baritone.utils.Helper; public final class LookBehavior extends Behavior implements ILookBehavior, Helper { - - public static final LookBehavior INSTANCE = new LookBehavior(); - /** * Target's values are as follows: *

@@ -49,7 +46,9 @@ public final class LookBehavior extends Behavior implements ILookBehavior, Helpe */ private float lastYaw; - private LookBehavior() {} + public LookBehavior(Baritone baritone) { + super(baritone); + } @Override public void updateTarget(Rotation target, boolean force) { diff --git a/src/main/java/baritone/behavior/MemoryBehavior.java b/src/main/java/baritone/behavior/MemoryBehavior.java index a684556e2..08f933f41 100644 --- a/src/main/java/baritone/behavior/MemoryBehavior.java +++ b/src/main/java/baritone/behavior/MemoryBehavior.java @@ -17,6 +17,7 @@ package baritone.behavior; +import baritone.Baritone; import baritone.api.behavior.IMemoryBehavior; import baritone.api.behavior.memory.IRememberedInventory; import baritone.api.cache.IWorldData; @@ -43,11 +44,11 @@ import java.util.*; */ public final class MemoryBehavior extends Behavior implements IMemoryBehavior, Helper { - public static MemoryBehavior INSTANCE = new MemoryBehavior(); - private final Map worldDataContainers = new HashMap<>(); - private MemoryBehavior() {} + public MemoryBehavior(Baritone baritone) { + super(baritone); + } @Override public synchronized void onPlayerUpdate(PlayerUpdateEvent event) { diff --git a/src/main/java/baritone/behavior/MineBehavior.java b/src/main/java/baritone/behavior/MineBehavior.java index 889cb4ff3..c6683f07c 100644 --- a/src/main/java/baritone/behavior/MineBehavior.java +++ b/src/main/java/baritone/behavior/MineBehavior.java @@ -46,14 +46,14 @@ import java.util.stream.Collectors; */ public final class MineBehavior extends Behavior implements IMineBehavior, Helper { - public static final MineBehavior INSTANCE = new MineBehavior(); - private List mining; private List knownOreLocations; private BlockPos branchPoint; private int desiredQuantity; - private MineBehavior() {} + public MineBehavior(Baritone baritone) { + super(baritone); + } @Override public void onTick(TickEvent event) { @@ -82,7 +82,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe addNearby(); } updateGoal(); - PathingBehavior.INSTANCE.revalidateGoal(); + ((PathingBehavior) baritone.getPathingBehavior()).revalidateGoal(); } private void updateGoal() { @@ -93,7 +93,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe if (!locs.isEmpty()) { List locs2 = prune(new ArrayList<>(locs), mining, 64); // can't reassign locs, gotta make a new var locs2, because we use it in a lambda right here, and variables you use in a lambda must be effectively final - PathingBehavior.INSTANCE.setGoalAndPath(new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2)).toArray(Goal[]::new))); + ((PathingBehavior) baritone.getPathingBehavior()).setGoalAndPath(new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2)).toArray(Goal[]::new))); knownOreLocations = locs; return; } @@ -104,11 +104,11 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe // only in non-Xray mode (aka legit mode) do we do this if (branchPoint == null) { int y = Baritone.settings().legitMineYLevel.get(); - if (!PathingBehavior.INSTANCE.isPathing() && playerFeet().y == y) { + if (!baritone.getPathingBehavior().isPathing() && playerFeet().y == y) { // cool, path is over and we are at desired y branchPoint = playerFeet(); } else { - PathingBehavior.INSTANCE.setGoalAndPath(new GoalYLevel(y)); + ((PathingBehavior) baritone.getPathingBehavior()).setGoalAndPath(new GoalYLevel(y)); return; } } @@ -117,7 +117,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe // TODO mine 1x1 shafts to either side branchPoint = branchPoint.north(10); } - PathingBehavior.INSTANCE.setGoalAndPath(new GoalBlock(branchPoint)); + ((PathingBehavior) baritone.getPathingBehavior()).setGoalAndPath(new GoalBlock(branchPoint)); } private void rescan() { @@ -197,12 +197,12 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe knownOreLocations = prune(knownOreLocations, mining, 64); } - public static List prune(List locs2, List mining, int max) { + public List prune(List locs2, List mining, int max) { List locs = locs2 .stream() // remove any that are within loaded chunks that aren't actually what we want - .filter(pos -> MineBehavior.INSTANCE.world().getChunk(pos) instanceof EmptyChunk || mining.contains(BlockStateInterface.get(pos).getBlock())) + .filter(pos -> world().getChunk(pos) instanceof EmptyChunk || mining.contains(BlockStateInterface.get(pos).getBlock())) // remove any that are implausible to mine (encased in bedrock, or touching lava) .filter(MineBehavior::plausibleToBreak) @@ -247,6 +247,6 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe @Override public void cancel() { mine(0, (String[]) null); - PathingBehavior.INSTANCE.cancel(); + baritone.getPathingBehavior().cancel(); } } diff --git a/src/main/java/baritone/behavior/PathingBehavior.java b/src/main/java/baritone/behavior/PathingBehavior.java index d626ac4ff..a58451461 100644 --- a/src/main/java/baritone/behavior/PathingBehavior.java +++ b/src/main/java/baritone/behavior/PathingBehavior.java @@ -46,8 +46,6 @@ import java.util.stream.Collectors; public final class PathingBehavior extends Behavior implements IPathingBehavior, Helper { - public static final PathingBehavior INSTANCE = new PathingBehavior(); - private PathExecutor current; private PathExecutor next; @@ -62,7 +60,9 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, private final LinkedBlockingQueue toDispatch = new LinkedBlockingQueue<>(); - private PathingBehavior() {} + public PathingBehavior(Baritone baritone) { + super(baritone); + } private void queuePathEvent(PathEvent event) { toDispatch.add(event); diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index 450551d44..16ceeefee 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -24,7 +24,6 @@ import baritone.api.utils.BetterBlockPos; import baritone.api.utils.Rotation; import baritone.api.utils.RotationUtils; import baritone.api.utils.VecUtils; -import baritone.behavior.LookBehavior; import baritone.utils.BlockBreakHelper; import baritone.utils.BlockStateInterface; import baritone.utils.Helper; @@ -126,7 +125,7 @@ public abstract class Movement implements IMovement, Helper, MovementHelper { // If the movement target has to force the new rotations, or we aren't using silent move, then force the rotations latestState.getTarget().getRotation().ifPresent(rotation -> - LookBehavior.INSTANCE.updateTarget( + Baritone.INSTANCE.getLookBehavior().updateTarget( rotation, latestState.getTarget().hasToForceRotations())); diff --git a/src/main/java/baritone/utils/BaritoneAutoTest.java b/src/main/java/baritone/utils/BaritoneAutoTest.java index 1c11c937c..70e1a70e5 100644 --- a/src/main/java/baritone/utils/BaritoneAutoTest.java +++ b/src/main/java/baritone/utils/BaritoneAutoTest.java @@ -17,11 +17,11 @@ package baritone.utils; +import baritone.Baritone; 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.behavior.PathingBehavior; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.settings.GameSettings; @@ -105,8 +105,8 @@ public class BaritoneAutoTest implements AbstractGameEventListener, Helper { } // Setup Baritone's pathing goal and (if needed) begin pathing - PathingBehavior.INSTANCE.setGoal(GOAL); - PathingBehavior.INSTANCE.path(); + Baritone.INSTANCE.getPathingBehavior().setGoal(GOAL); + Baritone.INSTANCE.getPathingBehavior().path(); // If we have reached our goal, print a message and safely close the game if (GOAL.isInGoal(playerFeet())) { diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index 18fe9fb7b..e9ebab2d7 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -26,7 +26,6 @@ import baritone.api.pathing.movement.ActionCosts; import baritone.api.utils.RayTraceUtils; import baritone.api.utils.SettingsUtil; import baritone.behavior.Behavior; -import baritone.behavior.FollowBehavior; import baritone.behavior.MineBehavior; import baritone.behavior.PathingBehavior; import baritone.cache.ChunkPacker; @@ -48,14 +47,8 @@ import java.util.stream.Stream; public class ExampleBaritoneControl extends Behavior implements Helper { - public static ExampleBaritoneControl INSTANCE = new ExampleBaritoneControl(); - - private ExampleBaritoneControl() { - - } - - public void initAndRegister() { - Baritone.INSTANCE.registerBehavior(this); + public ExampleBaritoneControl(Baritone baritone) { + super(baritone); } @Override @@ -77,6 +70,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { public boolean runCommand(String msg0) { String msg = msg0.toLowerCase(Locale.US).trim(); // don't reassign the argument LOL + PathingBehavior pathingBehavior = (PathingBehavior) baritone.getPathingBehavior(); List> toggleable = Baritone.settings().getAllValuesByType(Boolean.class); for (Settings.Setting setting : toggleable) { if (msg.equalsIgnoreCase(setting.getName())) { @@ -158,16 +152,16 @@ public class ExampleBaritoneControl extends Behavior implements Helper { logDirect("unable to parse integer " + ex); return true; } - PathingBehavior.INSTANCE.setGoal(goal); + pathingBehavior.setGoal(goal); logDirect("Goal: " + goal); return true; } if (msg.equals("path")) { - if (!PathingBehavior.INSTANCE.path()) { - if (PathingBehavior.INSTANCE.getGoal() == null) { + if (!pathingBehavior.path()) { + if (pathingBehavior.getGoal() == null) { logDirect("No goal."); } else { - if (PathingBehavior.INSTANCE.getGoal().isInGoal(playerFeet())) { + if (pathingBehavior.getGoal().isInGoal(playerFeet())) { logDirect("Already in goal"); } else { logDirect("Currently executing a path. Please cancel it first."); @@ -194,23 +188,23 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } if (msg.equals("axis")) { - PathingBehavior.INSTANCE.setGoal(new GoalAxis()); - PathingBehavior.INSTANCE.path(); + pathingBehavior.setGoal(new GoalAxis()); + pathingBehavior.path(); return true; } if (msg.equals("cancel") || msg.equals("stop")) { - MineBehavior.INSTANCE.cancel(); - FollowBehavior.INSTANCE.cancel(); - PathingBehavior.INSTANCE.cancel(); + baritone.getMineBehavior().cancel(); + baritone.getFollowBehavior().cancel(); + pathingBehavior.cancel(); logDirect("ok canceled"); return true; } if (msg.equals("forcecancel")) { - MineBehavior.INSTANCE.cancel(); - FollowBehavior.INSTANCE.cancel(); - PathingBehavior.INSTANCE.cancel(); + baritone.getMineBehavior().cancel(); + baritone.getFollowBehavior().cancel(); + pathingBehavior.cancel(); AbstractNodeCostSearch.forceCancel(); - PathingBehavior.INSTANCE.forceCancel(); + pathingBehavior.forceCancel(); logDirect("ok force canceled"); return true; } @@ -220,7 +214,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } if (msg.equals("invert")) { - Goal goal = PathingBehavior.INSTANCE.getGoal(); + Goal goal = pathingBehavior.getGoal(); BlockPos runAwayFrom; if (goal instanceof GoalXZ) { runAwayFrom = new BlockPos(((GoalXZ) goal).getX(), 0, ((GoalXZ) goal).getZ()); @@ -231,13 +225,13 @@ public class ExampleBaritoneControl extends Behavior implements Helper { logDirect("Inverting goal of player feet"); runAwayFrom = playerFeet(); } - PathingBehavior.INSTANCE.setGoal(new GoalRunAway(1, runAwayFrom) { + pathingBehavior.setGoal(new GoalRunAway(1, runAwayFrom) { @Override public boolean isInGoal(BlockPos pos) { return false; } }); - if (!PathingBehavior.INSTANCE.path()) { + if (!pathingBehavior.path()) { logDirect("Currently executing a path. Please cancel it first."); } return true; @@ -259,7 +253,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { logDirect("Not found"); return true; } - FollowBehavior.INSTANCE.follow(toFollow.get()); + baritone.getFollowBehavior().follow(toFollow.get()); logDirect("Following " + toFollow.get()); return true; } @@ -291,7 +285,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { int quantity = Integer.parseInt(blockTypes[1]); Block block = ChunkPacker.stringToBlock(blockTypes[0]); Objects.requireNonNull(block); - MineBehavior.INSTANCE.mine(quantity, block); + baritone.getMineBehavior().mine(quantity, block); logDirect("Will mine " + quantity + " " + blockTypes[0]); return true; } catch (NumberFormatException | ArrayIndexOutOfBoundsException | NullPointerException ex) {} @@ -302,14 +296,14 @@ public class ExampleBaritoneControl extends Behavior implements Helper { } } - MineBehavior.INSTANCE.mine(0, blockTypes); + baritone.getMineBehavior().mine(0, blockTypes); logDirect("Started mining blocks of type " + Arrays.toString(blockTypes)); return true; } if (msg.startsWith("thisway")) { try { Goal goal = GoalXZ.fromDirection(playerFeetAsVec(), player().rotationYaw, Double.parseDouble(msg.substring(7).trim())); - PathingBehavior.INSTANCE.setGoal(goal); + pathingBehavior.setGoal(goal); logDirect("Goal: " + goal); } catch (NumberFormatException ex) { logDirect("Error unable to parse '" + msg.substring(7).trim() + "' to a double."); @@ -378,13 +372,13 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } } else { - List locs = MineBehavior.INSTANCE.searchWorld(Collections.singletonList(block), 64); + List locs = ((MineBehavior) baritone.getMineBehavior()).searchWorld(Collections.singletonList(block), 64); if (locs.isEmpty()) { logDirect("No locations for " + mining + " known, cancelling"); return true; } - PathingBehavior.INSTANCE.setGoal(new GoalComposite(locs.stream().map(GoalGetToBlock::new).toArray(Goal[]::new))); - PathingBehavior.INSTANCE.path(); + pathingBehavior.setGoal(new GoalComposite(locs.stream().map(GoalGetToBlock::new).toArray(Goal[]::new))); + pathingBehavior.path(); return true; } } else { @@ -395,8 +389,8 @@ public class ExampleBaritoneControl extends Behavior implements Helper { } } Goal goal = new GoalBlock(waypoint.getLocation()); - PathingBehavior.INSTANCE.setGoal(goal); - if (!PathingBehavior.INSTANCE.path() && !goal.isInGoal(playerFeet())) { + pathingBehavior.setGoal(goal); + if (!pathingBehavior.path() && !goal.isInGoal(playerFeet())) { logDirect("Currently executing a path. Please cancel it first."); } return true; @@ -408,10 +402,10 @@ public class ExampleBaritoneControl extends Behavior implements Helper { // for some reason the default spawnpoint is underground sometimes Goal goal = new GoalXZ(spawnPoint.getX(), spawnPoint.getZ()); logDirect("spawn not saved, defaulting to world spawn. set goal to " + goal); - PathingBehavior.INSTANCE.setGoal(goal); + pathingBehavior.setGoal(goal); } else { Goal goal = new GoalBlock(waypoint.getLocation()); - PathingBehavior.INSTANCE.setGoal(goal); + pathingBehavior.setGoal(goal); logDirect("Set goal to most recent bed " + goal); } return true; @@ -427,8 +421,8 @@ public class ExampleBaritoneControl extends Behavior implements Helper { logDirect("home not saved"); } else { Goal goal = new GoalBlock(waypoint.getLocation()); - PathingBehavior.INSTANCE.setGoal(goal); - PathingBehavior.INSTANCE.path(); + pathingBehavior.setGoal(goal); + pathingBehavior.path(); logDirect("Going to saved home " + goal); } return true; @@ -451,7 +445,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } if (msg.equals("pause")) { - boolean enabled = PathingBehavior.INSTANCE.toggle(); + boolean enabled = pathingBehavior.toggle(); logDirect("Pathing Behavior has " + (enabled ? "resumed" : "paused") + "."); return true; } From 3d4a856bb2bc70de87c7bdbc1c0e55f76c454bac Mon Sep 17 00:00:00 2001 From: Brady Date: Sat, 27 Oct 2018 23:21:30 -0500 Subject: [PATCH 13/22] Remove unnecessary casts --- src/main/java/baritone/Baritone.java | 14 +++++++------- src/main/java/baritone/behavior/MineBehavior.java | 8 ++++---- .../baritone/utils/ExampleBaritoneControl.java | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 25636ecb9..e8d0b0ea9 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -144,37 +144,37 @@ public enum Baritone implements IBaritoneProvider { } @Override - public IFollowBehavior getFollowBehavior() { + public FollowBehavior getFollowBehavior() { return followBehavior; } @Override - public ILookBehavior getLookBehavior() { + public LookBehavior getLookBehavior() { return lookBehavior; } @Override - public IMemoryBehavior getMemoryBehavior() { + public MemoryBehavior getMemoryBehavior() { return memoryBehavior; } @Override - public IMineBehavior getMineBehavior() { + public MineBehavior getMineBehavior() { return mineBehavior; } @Override - public IPathingBehavior getPathingBehavior() { + public PathingBehavior getPathingBehavior() { return pathingBehavior; } @Override - public IWorldProvider getWorldProvider() { + public WorldProvider getWorldProvider() { return WorldProvider.INSTANCE; } @Override - public IWorldScanner getWorldScanner() { + public WorldScanner getWorldScanner() { return WorldScanner.INSTANCE; } diff --git a/src/main/java/baritone/behavior/MineBehavior.java b/src/main/java/baritone/behavior/MineBehavior.java index c6683f07c..d76f0dc1f 100644 --- a/src/main/java/baritone/behavior/MineBehavior.java +++ b/src/main/java/baritone/behavior/MineBehavior.java @@ -82,7 +82,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe addNearby(); } updateGoal(); - ((PathingBehavior) baritone.getPathingBehavior()).revalidateGoal(); + baritone.getPathingBehavior().revalidateGoal(); } private void updateGoal() { @@ -93,7 +93,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe if (!locs.isEmpty()) { List locs2 = prune(new ArrayList<>(locs), mining, 64); // can't reassign locs, gotta make a new var locs2, because we use it in a lambda right here, and variables you use in a lambda must be effectively final - ((PathingBehavior) baritone.getPathingBehavior()).setGoalAndPath(new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2)).toArray(Goal[]::new))); + baritone.getPathingBehavior().setGoalAndPath(new GoalComposite(locs2.stream().map(loc -> coalesce(loc, locs2)).toArray(Goal[]::new))); knownOreLocations = locs; return; } @@ -108,7 +108,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe // cool, path is over and we are at desired y branchPoint = playerFeet(); } else { - ((PathingBehavior) baritone.getPathingBehavior()).setGoalAndPath(new GoalYLevel(y)); + baritone.getPathingBehavior().setGoalAndPath(new GoalYLevel(y)); return; } } @@ -117,7 +117,7 @@ public final class MineBehavior extends Behavior implements IMineBehavior, Helpe // TODO mine 1x1 shafts to either side branchPoint = branchPoint.north(10); } - ((PathingBehavior) baritone.getPathingBehavior()).setGoalAndPath(new GoalBlock(branchPoint)); + baritone.getPathingBehavior().setGoalAndPath(new GoalBlock(branchPoint)); } private void rescan() { diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index e9ebab2d7..659b454ad 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -70,7 +70,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { public boolean runCommand(String msg0) { String msg = msg0.toLowerCase(Locale.US).trim(); // don't reassign the argument LOL - PathingBehavior pathingBehavior = (PathingBehavior) baritone.getPathingBehavior(); + PathingBehavior pathingBehavior = baritone.getPathingBehavior(); List> toggleable = Baritone.settings().getAllValuesByType(Boolean.class); for (Settings.Setting setting : toggleable) { if (msg.equalsIgnoreCase(setting.getName())) { @@ -372,7 +372,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { return true; } } else { - List locs = ((MineBehavior) baritone.getMineBehavior()).searchWorld(Collections.singletonList(block), 64); + List locs = baritone.getMineBehavior().searchWorld(Collections.singletonList(block), 64); if (locs.isEmpty()) { logDirect("No locations for " + mining + " known, cancelling"); return true; From be5df2677b1fe62c2ab0bc3334939743eeee3dfb Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 28 Oct 2018 13:55:03 -0700 Subject: [PATCH 14/22] finally add shulkers lol --- src/main/java/baritone/cache/CachedChunk.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/baritone/cache/CachedChunk.java b/src/main/java/baritone/cache/CachedChunk.java index 6daf2c67e..c554b9264 100644 --- a/src/main/java/baritone/cache/CachedChunk.java +++ b/src/main/java/baritone/cache/CachedChunk.java @@ -55,7 +55,24 @@ public final class CachedChunk implements IBlockTypeAccess, Helper { temp.add(Blocks.END_PORTAL); temp.add(Blocks.END_PORTAL_FRAME); temp.add(Blocks.MOB_SPAWNER); - // TODO add all shulker colors + temp.add(Blocks.BARRIER); + temp.add(Blocks.OBSERVER); + temp.add(Blocks.WHITE_SHULKER_BOX); + temp.add(Blocks.ORANGE_SHULKER_BOX); + temp.add(Blocks.MAGENTA_SHULKER_BOX); + temp.add(Blocks.LIGHT_BLUE_SHULKER_BOX); + temp.add(Blocks.YELLOW_SHULKER_BOX); + temp.add(Blocks.LIME_SHULKER_BOX); + temp.add(Blocks.PINK_SHULKER_BOX); + temp.add(Blocks.GRAY_SHULKER_BOX); + temp.add(Blocks.SILVER_SHULKER_BOX); + temp.add(Blocks.CYAN_SHULKER_BOX); + temp.add(Blocks.PURPLE_SHULKER_BOX); + temp.add(Blocks.BLUE_SHULKER_BOX); + temp.add(Blocks.BROWN_SHULKER_BOX); + temp.add(Blocks.GREEN_SHULKER_BOX); + temp.add(Blocks.RED_SHULKER_BOX); + temp.add(Blocks.BLACK_SHULKER_BOX); temp.add(Blocks.PORTAL); temp.add(Blocks.HOPPER); temp.add(Blocks.BEACON); From f0226f1ea7cb65afdb0c3609d220cb46a656ba9b Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 28 Oct 2018 15:23:34 -0700 Subject: [PATCH 15/22] brady doesn't know how to do imports --- src/main/java/baritone/Baritone.java | 3 --- src/main/java/baritone/utils/ExampleBaritoneControl.java | 1 - 2 files changed, 4 deletions(-) diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index e8d0b0ea9..aae0d63cd 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -20,9 +20,6 @@ package baritone; import baritone.api.BaritoneAPI; import baritone.api.IBaritoneProvider; import baritone.api.Settings; -import baritone.api.behavior.*; -import baritone.api.cache.IWorldProvider; -import baritone.api.cache.IWorldScanner; import baritone.api.event.listener.IGameEventListener; import baritone.behavior.*; import baritone.cache.WorldProvider; diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index 659b454ad..978709e0a 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -26,7 +26,6 @@ import baritone.api.pathing.movement.ActionCosts; import baritone.api.utils.RayTraceUtils; import baritone.api.utils.SettingsUtil; import baritone.behavior.Behavior; -import baritone.behavior.MineBehavior; import baritone.behavior.PathingBehavior; import baritone.cache.ChunkPacker; import baritone.cache.Waypoint; From adbb03e5cb685050c69b0df6ebd83ecbfd617522 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 28 Oct 2018 15:24:23 -0700 Subject: [PATCH 16/22] unused lol --- src/main/java/baritone/Baritone.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index aae0d63cd..18b6798c0 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -66,7 +66,6 @@ public enum Baritone implements IBaritoneProvider { private PathingBehavior pathingBehavior; private LookBehavior lookBehavior; private MemoryBehavior memoryBehavior; - private LocationTrackingBehavior locationTrackingBehavior; private FollowBehavior followBehavior; private MineBehavior mineBehavior; @@ -96,7 +95,7 @@ public enum Baritone implements IBaritoneProvider { pathingBehavior = new PathingBehavior(this); lookBehavior = new LookBehavior(this); memoryBehavior = new MemoryBehavior(this); - locationTrackingBehavior = new LocationTrackingBehavior(this); + new LocationTrackingBehavior(this); followBehavior = new FollowBehavior(this); mineBehavior = new MineBehavior(this); new ExampleBaritoneControl(this); From 77db4cd19f6e3ff6412393d13596e3aa882d9957 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 28 Oct 2018 15:24:52 -0700 Subject: [PATCH 17/22] codacy --- src/main/java/baritone/behavior/Behavior.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/baritone/behavior/Behavior.java b/src/main/java/baritone/behavior/Behavior.java index 0f8d8cb7a..82bde67d5 100644 --- a/src/main/java/baritone/behavior/Behavior.java +++ b/src/main/java/baritone/behavior/Behavior.java @@ -29,17 +29,17 @@ import baritone.api.behavior.IBehavior; public class Behavior implements IBehavior { public final Baritone baritone; + + /** + * Whether or not this behavior is enabled + */ + private boolean enabled = true; protected Behavior(Baritone baritone) { this.baritone = baritone; baritone.registerBehavior(this); } - /** - * Whether or not this behavior is enabled - */ - private boolean enabled = true; - /** * Toggles the enabled state of this {@link Behavior}. * From 24d24728dc3c12f41318e55391c33d176fae0cb2 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 28 Oct 2018 16:05:08 -0700 Subject: [PATCH 18/22] intellij be like --- src/main/java/baritone/behavior/Behavior.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/behavior/Behavior.java b/src/main/java/baritone/behavior/Behavior.java index 82bde67d5..713e98f0c 100644 --- a/src/main/java/baritone/behavior/Behavior.java +++ b/src/main/java/baritone/behavior/Behavior.java @@ -29,7 +29,7 @@ import baritone.api.behavior.IBehavior; public class Behavior implements IBehavior { public final Baritone baritone; - + /** * Whether or not this behavior is enabled */ From ed1941abdb7f153b6ca8a3ac5ea946532d72f0e5 Mon Sep 17 00:00:00 2001 From: Brady Date: Sun, 28 Oct 2018 18:37:21 -0500 Subject: [PATCH 19/22] Fix desynchronized allowFlying state --- .../launch/mixins/MixinEntityPlayerSP.java | 15 +++++++++++++++ .../java/baritone/behavior/PathingBehavior.java | 1 - .../java/baritone/pathing/movement/Movement.java | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/launch/java/baritone/launch/mixins/MixinEntityPlayerSP.java b/src/launch/java/baritone/launch/mixins/MixinEntityPlayerSP.java index 39bc8af12..dd121ead9 100644 --- a/src/launch/java/baritone/launch/mixins/MixinEntityPlayerSP.java +++ b/src/launch/java/baritone/launch/mixins/MixinEntityPlayerSP.java @@ -21,10 +21,13 @@ import baritone.Baritone; import baritone.api.event.events.ChatEvent; import baritone.api.event.events.PlayerUpdateEvent; import baritone.api.event.events.type.EventState; +import baritone.behavior.PathingBehavior; import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.entity.player.PlayerCapabilities; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; /** @@ -72,4 +75,16 @@ public class MixinEntityPlayerSP { private void onPostUpdate(CallbackInfo ci) { Baritone.INSTANCE.getGameEventHandler().onPlayerUpdate(new PlayerUpdateEvent((EntityPlayerSP) (Object) this, EventState.POST)); } + + @Redirect( + method = "onLivingUpdate", + at = @At( + value = "FIELD", + target = "net/minecraft/entity/player/PlayerCapabilities.allowFlying:Z" + ) + ) + private boolean isAllowFlying(PlayerCapabilities capabilities) { + PathingBehavior pathingBehavior = Baritone.INSTANCE.getPathingBehavior(); + return (!pathingBehavior.isEnabled() || !pathingBehavior.isPathing()) && capabilities.allowFlying; + } } diff --git a/src/main/java/baritone/behavior/PathingBehavior.java b/src/main/java/baritone/behavior/PathingBehavior.java index a58451461..65fa6cd5f 100644 --- a/src/main/java/baritone/behavior/PathingBehavior.java +++ b/src/main/java/baritone/behavior/PathingBehavior.java @@ -83,7 +83,6 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, cancel(); return; } - mc.playerController.setPlayerCapabilities(mc.player); tickPath(); dispatchEvents(); } diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index 16ceeefee..a2edb2c9d 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -114,7 +114,7 @@ public abstract class Movement implements IMovement, Helper, MovementHelper { */ @Override public MovementStatus update() { - player().capabilities.allowFlying = false; + player().capabilities.isFlying = false; MovementState latestState = updateState(currentState); if (BlockStateInterface.isLiquid(playerFeet())) { latestState.setInput(Input.JUMP, true); From f6043f4ac6fa8856eef485dd88fe8374ad4abb65 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 28 Oct 2018 16:44:47 -0700 Subject: [PATCH 20/22] changed wording --- src/main/java/baritone/utils/ExampleBaritoneControl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java index 978709e0a..02c48885f 100644 --- a/src/main/java/baritone/utils/ExampleBaritoneControl.java +++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java @@ -349,7 +349,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper { name = parts[0]; } WorldProvider.INSTANCE.getCurrentWorld().getWaypoints().addWaypoint(new Waypoint(name, Waypoint.Tag.USER, pos)); - logDirect("Saved user defined position " + pos + " under name '" + name + "'. Say 'goto user' to set goal, say 'list user' to list."); + logDirect("Saved user defined position " + pos + " under name '" + name + "'. Say 'goto " + name + "' to set goal, say 'list user' to list custom waypoints."); return true; } if (msg.startsWith("goto")) { From 19ecb1bbb3640f0cfc5a4c9e5622ab9b2206cb82 Mon Sep 17 00:00:00 2001 From: Brady Date: Mon, 29 Oct 2018 16:43:03 -0500 Subject: [PATCH 21/22] Merge LocationTrackingBehavior into MemoryBehavior Fixes #242 --- src/main/java/baritone/Baritone.java | 1 - .../behavior/LocationTrackingBehavior.java | 53 ------------------- .../baritone/behavior/MemoryBehavior.java | 16 ++++++ 3 files changed, 16 insertions(+), 54 deletions(-) delete mode 100644 src/main/java/baritone/behavior/LocationTrackingBehavior.java diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 18b6798c0..a0d5ba84a 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -95,7 +95,6 @@ public enum Baritone implements IBaritoneProvider { pathingBehavior = new PathingBehavior(this); lookBehavior = new LookBehavior(this); memoryBehavior = new MemoryBehavior(this); - new LocationTrackingBehavior(this); followBehavior = new FollowBehavior(this); mineBehavior = new MineBehavior(this); new ExampleBaritoneControl(this); diff --git a/src/main/java/baritone/behavior/LocationTrackingBehavior.java b/src/main/java/baritone/behavior/LocationTrackingBehavior.java deleted file mode 100644 index 28c1ee70f..000000000 --- a/src/main/java/baritone/behavior/LocationTrackingBehavior.java +++ /dev/null @@ -1,53 +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.behavior; - -import baritone.Baritone; -import baritone.api.event.events.BlockInteractEvent; -import baritone.cache.Waypoint; -import baritone.cache.WorldProvider; -import baritone.utils.BlockStateInterface; -import baritone.utils.Helper; -import net.minecraft.block.BlockBed; - -/** - * A collection of event methods that are used to interact with Baritone's - * waypoint system. This class probably needs a better name. - * - * @author Brady - * @see Waypoint - * @since 8/22/2018 - */ -public final class LocationTrackingBehavior extends Behavior implements Helper { - - public LocationTrackingBehavior(Baritone baritone) { - super(baritone); - } - - @Override - public void onBlockInteract(BlockInteractEvent event) { - if (event.getType() == BlockInteractEvent.Type.USE && BlockStateInterface.getBlock(event.getPos()) instanceof BlockBed) { - WorldProvider.INSTANCE.getCurrentWorld().getWaypoints().addWaypoint(new Waypoint("bed", Waypoint.Tag.BED, event.getPos())); - } - } - - @Override - public void onPlayerDeath() { - WorldProvider.INSTANCE.getCurrentWorld().getWaypoints().addWaypoint(new Waypoint("death", Waypoint.Tag.DEATH, playerFeet())); - } -} diff --git a/src/main/java/baritone/behavior/MemoryBehavior.java b/src/main/java/baritone/behavior/MemoryBehavior.java index 08f933f41..510cecffa 100644 --- a/src/main/java/baritone/behavior/MemoryBehavior.java +++ b/src/main/java/baritone/behavior/MemoryBehavior.java @@ -21,11 +21,15 @@ import baritone.Baritone; import baritone.api.behavior.IMemoryBehavior; import baritone.api.behavior.memory.IRememberedInventory; import baritone.api.cache.IWorldData; +import baritone.api.event.events.BlockInteractEvent; import baritone.api.event.events.PacketEvent; import baritone.api.event.events.PlayerUpdateEvent; import baritone.api.event.events.type.EventState; +import baritone.cache.Waypoint; import baritone.cache.WorldProvider; +import baritone.utils.BlockStateInterface; import baritone.utils.Helper; +import net.minecraft.block.BlockBed; import net.minecraft.item.ItemStack; import net.minecraft.network.Packet; import net.minecraft.network.play.client.CPacketCloseWindow; @@ -115,6 +119,18 @@ public final class MemoryBehavior extends Behavior implements IMemoryBehavior, H } } + @Override + public void onBlockInteract(BlockInteractEvent event) { + if (event.getType() == BlockInteractEvent.Type.USE && BlockStateInterface.getBlock(event.getPos()) instanceof BlockBed) { + WorldProvider.INSTANCE.getCurrentWorld().getWaypoints().addWaypoint(new Waypoint("bed", Waypoint.Tag.BED, event.getPos())); + } + } + + @Override + public void onPlayerDeath() { + WorldProvider.INSTANCE.getCurrentWorld().getWaypoints().addWaypoint(new Waypoint("death", Waypoint.Tag.DEATH, playerFeet())); + } + private Optional getInventoryFromWindow(int windowId) { return this.getCurrentContainer().rememberedInventories.values().stream().filter(i -> i.windowId == windowId).findFirst(); } From b9b33b5351cabdb0a372018fda4c596791c89728 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Mon, 29 Oct 2018 18:58:52 -0700 Subject: [PATCH 22/22] move calculation context construction to main thread --- src/main/java/baritone/behavior/PathingBehavior.java | 8 +++++--- src/main/java/baritone/pathing/calc/AStarPathFinder.java | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/baritone/behavior/PathingBehavior.java b/src/main/java/baritone/behavior/PathingBehavior.java index 65fa6cd5f..d8bf9a1d3 100644 --- a/src/main/java/baritone/behavior/PathingBehavior.java +++ b/src/main/java/baritone/behavior/PathingBehavior.java @@ -32,6 +32,7 @@ import baritone.api.utils.interfaces.IGoalRenderPos; import baritone.pathing.calc.AStarPathFinder; import baritone.pathing.calc.AbstractNodeCostSearch; import baritone.pathing.calc.CutoffPath; +import baritone.pathing.movement.CalculationContext; import baritone.pathing.movement.MovementHelper; import baritone.pathing.path.PathExecutor; import baritone.utils.BlockBreakHelper; @@ -325,12 +326,13 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, } isPathCalcInProgress = true; } + CalculationContext context = new CalculationContext(); // not safe to create on the other thread, it looks up a lot of stuff in minecraft Baritone.INSTANCE.getExecutor().execute(() -> { if (talkAboutIt) { logDebug("Starting to search for path from " + start + " to " + goal); } - Optional path = findPath(start, previous); + Optional path = findPath(start, previous, context); if (Baritone.settings().cutoffAtLoadBoundary.get()) { path = path.map(p -> { IPath result = p.cutoffAtLoadedChunks(); @@ -398,7 +400,7 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, * @param start * @return */ - private Optional findPath(BlockPos start, Optional previous) { + private Optional findPath(BlockPos start, Optional previous, CalculationContext context) { Goal goal = this.goal; if (goal == null) { logDebug("no goal"); @@ -428,7 +430,7 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior, favoredPositions = previous.map(IPath::positions).map(Collection::stream).map(x -> x.map(BetterBlockPos::longHash)).map(x -> x.collect(Collectors.toList())).map(HashSet::new); // <-- okay this is EPIC } try { - IPathFinder pf = new AStarPathFinder(start.getX(), start.getY(), start.getZ(), goal, favoredPositions); + IPathFinder pf = new AStarPathFinder(start.getX(), start.getY(), start.getZ(), goal, favoredPositions, context); return pf.calculate(timeout); } catch (Exception e) { logDebug("Pathing exception: " + e); diff --git a/src/main/java/baritone/pathing/calc/AStarPathFinder.java b/src/main/java/baritone/pathing/calc/AStarPathFinder.java index dfecae2ea..f9a15e364 100644 --- a/src/main/java/baritone/pathing/calc/AStarPathFinder.java +++ b/src/main/java/baritone/pathing/calc/AStarPathFinder.java @@ -41,10 +41,12 @@ import java.util.Optional; public final class AStarPathFinder extends AbstractNodeCostSearch implements Helper { private final Optional> favoredPositions; + private final CalculationContext calcContext; - public AStarPathFinder(int startX, int startY, int startZ, Goal goal, Optional> favoredPositions) { + public AStarPathFinder(int startX, int startY, int startZ, Goal goal, Optional> favoredPositions, CalculationContext context) { super(startX, startY, startZ, goal); this.favoredPositions = favoredPositions; + this.calcContext = context; } @Override @@ -61,7 +63,6 @@ public final class AStarPathFinder extends AbstractNodeCostSearch implements Hel bestHeuristicSoFar[i] = startNode.estimatedCostToGoal; bestSoFar[i] = startNode; } - CalculationContext calcContext = new CalculationContext(); MutableMoveResult res = new MutableMoveResult(); HashSet favored = favoredPositions.orElse(null); BetterWorldBorder worldBorder = new BetterWorldBorder(world().getWorldBorder());