Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

overhaul of the build system #3715

Open
10 tasks
rycbar0 opened this issue Nov 5, 2022 · 6 comments
Open
10 tasks

overhaul of the build system #3715

rycbar0 opened this issue Nov 5, 2022 · 6 comments
Labels
enhancement New feature or request

Comments

@rycbar0
Copy link
Contributor

rycbar0 commented Nov 5, 2022

Baritone often struggles when building stuff. It isnt a core competence of baritone to build but the current implementation could be improved.

  • support for strucute block files Add support for the Structure Block file format (.nbt files) #3317
  • add ability to rotate schematics without the use of a schematic mod Ability to rotate schematics / copied selections #3711
  • improve pathfinding so baritone can build player position dependent blocks without to pause so often (chests, stairs, standing signs, furnaces)
  • add standart value to the ignoreProperties liste for most common use case (grow state of crops, berry bushes, splings, etc) ✨ Add buildIgnoreProperties setting #3697
  • enable baritone to build blocks that require multiple clicks to cycle there state (powered levers, delayed repeaters, open doors, note blocks, etc)
  • enable baritone to build blocks that require repeated placements (snow layers, candels, turtle eggs)
  • enable baritone to use flint&steal / fire charge to lit blocks (campfires, candles, fire, netherportals)
  • torches have two blocks (minecraft:torch and minecraft:wall_torch)
  • handeling water loged blocks
  • enable right click tool usage (path block, farmland, stripped logs)
@rycbar0 rycbar0 added the enhancement New feature or request label Nov 5, 2022
@offbeat-stuff
Copy link

offbeat-stuff commented Nov 5, 2022

the ability to select an area and then build that again with a offset would also be nice

@offbeat-stuff
Copy link

like for repeating layers of a farm

@wagyourtail
Copy link
Collaborator

the third one is technically wip under the builder2 branch

@ZacSharp
Copy link
Collaborator

ZacSharp commented Nov 5, 2022

Progress there is a bit lacking though. Is there any news on builder2 besides the latest commit?

@ZacSharp
Copy link
Collaborator

add standart value to the ignoreProperties liste for most common use case (grow state of crops, berry bushes, splings, etc) #3697

Basically we could move all the normalizations from BlockOptionalMeta to buildIgnoreProperties. (Need to make sure we don't break other things using BlockOptionalMeta though)

@ZacSharp
Copy link
Collaborator

ZacSharp commented Feb 27, 2024

Some low level improvements. Some of them become irrelevant if we actually replace the current logic with a proper planner + executor pair.

  • A way to properly temporarily ignore/place wrong blocks. Currently ignoring wrong blocks easily leads to "Unable to do it" because there are known incorrect blocks but none of them can be acted upon. This is the number one problem I face with a lot of improvements.

    • Blacklisting positions to place/break from (didn't try yet)
    • Not randomly failing due to missing materials
    • Not flooding everything
    • Properly removing liquids
    • Properly handling temporary scaffolding
    • Multi-interaction placements (didn't try yet)
    • Enforcing a certain building order

    This could be based on persistent state (e.g. setOverride(x,y,z,DIRT) and later setOverride(x,y,z,null)) but having some schematic.desiredState style method with a good caching strategy is probably better.

  • (Full) scans should run from the player position outwards.

  • Rely more on block updates and less on scanning.

  • Un-hardcode the two ways of changing blocks (placing / breaking), essentially a requirement for half of the original list

  • Proper support for multi part schematics. E.g. If I build a multi-layer iron farm litematic with one subregion per layer there is no need to scan all the air between the layers.

  • Proper way of having holes in static schematics

  • Schematics shouldn't be a weird combination of context sensitive and not expected to change. Planning ahead requires the schematic to not change.

    • approxPlaceable should be removed. It is a guesstimate and doesn't work at all for directional/positional blocks.
    • If a schematic accepts multiple blocks in a position, it should be able to return all of them.
    • If schematics get context then it should be more than just a single block at at time (whole build are? absolute position?)
    • Schematics shouldn't depend on changes made by building. For example replacing blocks has to cache where the old block was because at some point it will be air instead. However anticipating builder actions like that is fragile because the builder simply doesn't have to do what the schematic says. It might be wrapped in other schematics, there is plenty of settings to change what is placed (buildSubstitutes, buildIgnoreExisting and the likes) and scaffolding is unpredictable anyway.

And features more in line with the original list

  • Support for some types of entities (item frames, armor stands, boats, etc.)
  • Support for some types of tile entities (filling chests, furnaces, etc.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants