diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableBiForest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableBiForest.java index a023d148ff..42b2bec411 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableBiForest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableBiForest.java @@ -18,15 +18,10 @@ public void calculateReduced() { @Override public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit) { - TraversableForest.super.traverse(visitor, viewport, distanceLimit); - } - - @Override - public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit, float buildDistance) { // no sorting is necessary because we assume the camera will never be closer to the secondary tree than the main tree - this.mainTree.traverse(visitor, viewport, distanceLimit, buildDistance); + this.mainTree.traverse(visitor, viewport, distanceLimit, this.buildDistance); if (this.secondaryTree != null) { - this.secondaryTree.traverse(visitor, viewport, distanceLimit, buildDistance); + this.secondaryTree.traverse(visitor, viewport, distanceLimit, this.buildDistance); } } } diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableMultiForest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableMultiForest.java index 2c9f310b38..eb758d8e36 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableMultiForest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/AbstractTraversableMultiForest.java @@ -19,7 +19,7 @@ public void calculateReduced() { } @Override - public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit, float buildDistance) { + public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit) { var transform = viewport.getTransform(); var cameraSectionX = transform.intX >> 4; var cameraSectionY = transform.intY >> 4; @@ -50,5 +50,4 @@ public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewpor } } } - } diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseForest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseForest.java index 3ffae16243..2501fbd68e 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseForest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseForest.java @@ -11,10 +11,5 @@ protected BaseForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float bu this.buildDistance = buildDistance; } - @Override - public float getBuildDistance() { - return this.buildDistance; - } - protected abstract T makeTree(int offsetX, int offsetY, int offsetZ); } diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java index 52f9de4e2f..43485b8bbc 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java @@ -6,13 +6,18 @@ public abstract class BaseMultiForest extends BaseForest { protected T lastTree; - public BaseMultiForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float buildDistance) { + public BaseMultiForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ,float buildDistance) { super(baseOffsetX, baseOffsetY, baseOffsetZ, buildDistance); - this.forestDim = (int) Math.ceil((buildDistance / 8.0 + 1) / 64.0); + this.forestDim = forestDimFromBuildDistance(buildDistance); this.trees = this.makeTrees(this.forestDim * this.forestDim * this.forestDim); } + public static int forestDimFromBuildDistance(float buildDistance) { + // / 16 (block to chunk) * 2 (radius to diameter) + 1 (center chunk) / 64 (chunks per tree) + return (int) Math.ceil((buildDistance / 8.0 + 1) / 64.0); + } + protected int getTreeIndex(int localX, int localY, int localZ) { var treeX = localX >> 6; var treeY = localY >> 6; diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/Forest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/Forest.java index 19d8d174c9..ed425201d5 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/Forest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/Forest.java @@ -3,7 +3,5 @@ public interface Forest { void add(int x, int y, int z); - float getBuildDistance(); - int getPresence(int x, int y, int z); } diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableForest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableForest.java index 548fa88038..d60c8f1529 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableForest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/TraversableForest.java @@ -7,11 +7,7 @@ public interface TraversableForest extends Forest { void calculateReduced(); - default void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit) { - this.traverse(visitor, viewport, distanceLimit, this.getBuildDistance()); - } - - void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit, float buildDistance); + void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit); static TraversableForest createTraversableForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float buildDistance, Level level) { if (BaseBiForest.checkApplicable(buildDistance, level)) {