use mutatingattachment

This commit is contained in:
Leijurv 2023-04-15 13:52:02 -07:00
parent da1a5c121f
commit 54e7473a6e
No known key found for this signature in database
GPG Key ID: 44A3EA646EADAC6A
2 changed files with 19 additions and 12 deletions

View File

@ -18,29 +18,36 @@
package baritone.builder; package baritone.builder;
import baritone.api.utils.BetterBlockPos; import baritone.api.utils.BetterBlockPos;
import baritone.builder.utils.com.github.btrekkie.connectivity.MutatingAugmentation;
import java.util.OptionalInt; import java.util.OptionalInt;
public class CountingSurface extends NavigableSurface { public class CountingSurface extends NavigableSurface {
public CountingSurface(int x, int y, int z) { public CountingSurface(int x, int y, int z) {
super(x, y, z, Attachment::new, $ -> new Attachment()); super(x, y, z, new MutatingAugmentation() {
@Override
public void combine(Object value1, Object value2, Object result) {
((Attachment) result).combine((Attachment) value1, (Attachment) value2);
}
@Override
public Object newAugmentation() {
return new Attachment();
}
}, $ -> new Attachment());
} }
private static class Attachment { private static class Attachment {
public final int surfaceSize; public int surfaceSize;
public Attachment(Object a, Object b) {
this((Attachment) a, (Attachment) b);
}
public Attachment(Attachment a, Attachment b) {
this.surfaceSize = a.surfaceSize + b.surfaceSize;
}
public Attachment() { public Attachment() {
this.surfaceSize = 1; this.surfaceSize = 1;
} }
public void combine(Attachment child1, Attachment child2) {
surfaceSize = child1.surfaceSize + child2.surfaceSize;
}
@Override @Override
public boolean equals(Object o) { // used as performance optimization in RedBlackNode to avoid augmenting unchanged attachments public boolean equals(Object o) { // used as performance optimization in RedBlackNode to avoid augmenting unchanged attachments
if (this == o) { if (this == o) {

View File

@ -18,8 +18,8 @@
package baritone.builder; package baritone.builder;
import baritone.api.utils.BetterBlockPos; import baritone.api.utils.BetterBlockPos;
import baritone.builder.utils.com.github.btrekkie.connectivity.Augmentation;
import baritone.builder.utils.com.github.btrekkie.connectivity.ConnGraph; import baritone.builder.utils.com.github.btrekkie.connectivity.ConnGraph;
import baritone.builder.utils.com.github.btrekkie.connectivity.MutatingAugmentation;
import java.util.Arrays; import java.util.Arrays;
import java.util.function.Function; import java.util.function.Function;
@ -37,7 +37,7 @@ public class NavigableSurface {
private final Column col1 = new Column(); private final Column col1 = new Column();
private final Column col2 = new Column(); private final Column col2 = new Column();
public NavigableSurface(int x, int y, int z, Augmentation augmentation, Function<BetterBlockPos, Object> genVertexAugmentation) { public NavigableSurface(int x, int y, int z, MutatingAugmentation augmentation, Function<BetterBlockPos, Object> genVertexAugmentation) {
this.bounds = new CuboidBounds(x, y, z); this.bounds = new CuboidBounds(x, y, z);
this.blocks = new BlockStateCachedData[bounds.volume()]; this.blocks = new BlockStateCachedData[bounds.volume()];
Arrays.fill(blocks, FakeStates.AIR); Arrays.fill(blocks, FakeStates.AIR);