There are still so many things that can be improved about the mod. Feel free to tackle any of the things below.
- It's possible to harvest 1x2 areas using the flying machines that ilmango has shown in Scicraft S02E04.
- It's possible to harvest 1x3 areas by skipping the front extension and using the engine directly to punch out the blocks.
- It also might be possible to poke out shards in 1x1 holes using a long "pole" of slime blocks, but this depends on how deep the shards are.
The scope of this task is:
- Adding a function that generates those,
- Adding a new type of markers blocks,
- Documentation for the above.
The current projection logic doesn't understand that a 1x1 area can't be harvested. The projection logic should be extended to detect those areas and not mark them as "already harvested" (so other projection directions can still try to harvest them).
Alternatively, if smaller flying machines are implemented, the current logic can stay.
The efficiency calculation does not consider the actual placement (or lack) of the flying machines - just the fact that the cluster can be projected to a side wall without colliding with a budding block. This also ties with the improved support for more types of flying machines.
This one is tied to the projection logic as well. In some cases, removing blocks actually increases efficiency.
Currently the mod expects an L-shaped layout when marking the flying machines; this is unneccessary. The only true requirement is a 1x3 area for the machine and a single blocker block anywhere on the same sticky block cluster.
I am aware that this problem is NP-complete but at this size it can hopefully be either bruteforced or at least solved with some dynamic programming. Algorithmic geniuses and their PRs are welcome.
Several approaches have been suggested so far, including an SAT solver.
The current implementation uses world.setBlockState
as a sort of working memory.
This should be completely eliminated, so that the logic of designing a geode farm
is completely decoupled from the logic of pasting the geode farm in the world.
This one will be tricky but hopefully worth it. It should also hopefully increase
the code quality and perhaps open doors for Forge support. (Not that I like Forge.)
Ideally, the mod should generate a schematic in the current world - that way, the player just needs to mark the geode (maybe with autodetection even?) and the schematic of a farm would be immediately plopped in place.
The current code struggles with weird sizes like 9x29. I write it while having a nasty flu, and I couldn't be bothered to do things properly. I am 100% sure it can be done better. The problem is most visible when doing farms that encompass two geodes at the same time (which is a bad idea due to extra collisions), so I don't consider this super big priority.
It still requires some manual work, and I'm 100% sure it can be fully automated to the point where the wiring requires zero extra manual work. This includes a few things:
We really should have a set of test data, especially for the extreme cases.
Fabric-Carpet's plop()
command is very useful for artificially generating geodes.
Having the test data in a standardized format would also make prototyping new
algorithms much easier.
Some user errors cause an exception to be thrown; those should be handled in a more graceful way.