"Looping" behavior while building schematic
mvrozanti opened this issue ยท 28 comments
Some information
Operating system: Linux 5.8.13-arch1-1
Java version:
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
Minecraft version: 1.15.2
Baritone version: v1.5.3
Forge mods (if used): Forge is not installed; using Impact client
Exception, error or logs
How to reproduce
Can't really tell more than using this schematic file
Modified settings
allowInventory
assumeStep
buildInLayers
simplifyUnloadedYCoord
Final checklist
- I know how to properly use check boxes
- I have included the version of Minecraft I'm running, baritone's version and forge mods (if used).
- I have included logs, exceptions and / or steps to reproduce the issue.
- [] I have not used any OwO's or UwU's in this issue.
Your log file doesn't seem to include the error, is it possible that you could upload another with the error in it.
Oh my bad here's the latest.log. Hope this isn't a duplicate or a dumb issue ๐
I should add: the build started fine. A bit "loopy", in that it would glitch a bit when it found water but that was fixable by just moving around and resuming.
But every time I start it back up in the same position I previously started building (not resume) and it goes for build layer 6, the whole game crashes. When I try again, it also crashes.
It is already penalized by having ten times the cost by default
/**
* Multiply the cost of breaking a block that's correct in the builder's schematic by this coefficient
*/
public final Setting<Double> breakCorrectBlockPenaltyMultiplier = new Setting<>(10d);
Oh ok I didn't know about that setting. I'm still kinda confused why it loops so much though. It happens quite frequently.
are the blocks it breaks and places repeatedly orientation specific (e.g. chests or doors)?
It places the dirt to get somewhere, breaks it as a wrong block and needs to go there again?
It places the dirt to get somewhere
Yes
breaks it as a wrong block and needs to go there again?
I'm not able to tell. Dirt is definitely a "wrong block", but I'm not sure if it breaks it as such or if it needs to go there again. But it do
the dirt doesn't belong there so it is a wrong block. What I meant is: it breaks the dirt before it is where it wanted to go to and then starts over
don't think there is a good way to prevent that right now.
Maybe try allowBreak
, buildIgnoreExisting
or bridging with materials it can't break with the available tools
But I doubt that any of those will work well
Thanks I'm going to try that.
Can you try enabling breakFromAbove
? That's for standing on it not breaking from above in general, crap.
Didn't work :/
at least it didn't waste glass.
buildIgnoreBlocks
is my last hope. It should make baritone completely ignore the dirt
That actually seems to work great! It leaves behind the dirt blocks but that's nothing that mine
can't solve. Thanks a lot @ZacSharp
I think this issue can be closed now
that solution is just a workaround, it should be possible to build schematics in one step
That problem seems to have fixed itself but I still get a lot of "looping" while building. It will put down a necessary block for the schematic and then break it to go somewhere and when that location is reached it builds back a path to where it put the necessary block, breaks it, and repeats this process.
I tried toggling buildInLayers as I read in another issue, to no avail.
Shouldn't "don't break positionally correct blocks for the build" be a rule?
I've had this behavior too, happened while buildinlayers was set to true or false, only unique thing i can think of was that the schematic material was among the throwaway material. In addition to this behavior, it also had a certain spot that it just pathfinded to for no reason every now and then, a block in the middle of the schematic it would get to no matter the cost, jump at, and then leave, sometimes getting stuck in the loop of doing that 30-40 times before just going back to normal.
if I set buildIgnoreBlocks to stone , it will not clear the stone like a throwaway blocks? Or mapart mode can clear the block that effect the mapart?
buildIgnoreBlocks
is my last hope. It should make baritone completely ignore the dirt
@zausa Yes it will just ignore everything on buildIgnoreBlocks
and you will have to clear them later (might even work to just reset buildIgnoreBlocks
and build again in the same spot). And no, map art mode only makes it ignore blocks that are not visible on the map (i.e. covered by other blocks).