Changed how customizable leaves radius works

This commit is contained in:
Adubbz 2016-01-20 13:24:28 +11:00
parent cf089c78d8
commit fbbdf44a4d

View file

@ -34,10 +34,10 @@ public class GeneratorBasicTree extends GeneratorTreeBase
public static class Builder extends GeneratorTreeBase.InnerBuilder<Builder, GeneratorBasicTree> implements IGeneratorBuilder<GeneratorBasicTree> public static class Builder extends GeneratorTreeBase.InnerBuilder<Builder, GeneratorBasicTree> implements IGeneratorBuilder<GeneratorBasicTree>
{ {
protected int leafLayers; protected int leafLayers;
protected int leafRadius; protected int minLeavesRadius;
public Builder leafLayers(int a) {this.leafLayers = a; return this.self();} public Builder leafLayers(int a) {this.leafLayers = a; return this.self();}
public Builder leafRadius(int a) {this.leafRadius = a; return this.self();} public Builder minLeavesRadius(int a) {this.minLeavesRadius = a; return this.self();}
public Builder() public Builder()
{ {
@ -51,27 +51,27 @@ public class GeneratorBasicTree extends GeneratorTreeBase
this.minHeight = 4; this.minHeight = 4;
this.maxHeight = 7; this.maxHeight = 7;
this.leafLayers = 4; this.leafLayers = 4;
this.leafRadius = 2; this.minLeavesRadius = 1;
} }
@Override @Override
public GeneratorBasicTree create() public GeneratorBasicTree create()
{ {
return new GeneratorBasicTree(this.amountPerChunk, this.placeOn, this.replace, this.log, this.leaves, this.vine, this.minHeight, this.maxHeight, false, this.leafLayers, this.leafRadius); return new GeneratorBasicTree(this.amountPerChunk, this.placeOn, this.replace, this.log, this.leaves, this.vine, this.minHeight, this.maxHeight, false, this.leafLayers, this.minLeavesRadius);
} }
} }
private boolean updateNeighbours; private boolean updateNeighbours;
private int leafLayers; private int leafLayers;
private int leafRadius; private int minLeavesRadius;
private final IBlockPosQuery placeVinesOn; //This shouldn't need to be configurable, however it can be if necessary private final IBlockPosQuery placeVinesOn; //This shouldn't need to be configurable, however it can be if necessary
public GeneratorBasicTree(float amountPerChunk, IBlockPosQuery placeOn, IBlockPosQuery replace, IBlockState log, IBlockState leaves, IBlockState vine, int minHeight, int maxHeight, boolean updateNeighbours, int leafLayers, int leafRadius) public GeneratorBasicTree(float amountPerChunk, IBlockPosQuery placeOn, IBlockPosQuery replace, IBlockState log, IBlockState leaves, IBlockState vine, int minHeight, int maxHeight, boolean updateNeighbours, int leafLayers, int minLeavesRadius)
{ {
super(amountPerChunk, placeOn, replace, log, leaves, vine, minHeight, maxHeight); super(amountPerChunk, placeOn, replace, log, leaves, vine, minHeight, maxHeight);
this.updateNeighbours = updateNeighbours; this.updateNeighbours = updateNeighbours;
this.leafLayers = leafLayers; this.leafLayers = leafLayers;
this.leafRadius = leafRadius; this.minLeavesRadius = minLeavesRadius;
this.placeVinesOn = BlockQueries.air; this.placeVinesOn = BlockQueries.air;
} }
@ -145,7 +145,7 @@ public class GeneratorBasicTree extends GeneratorTreeBase
int currentLayer = y - (pos.getY() + height); int currentLayer = y - (pos.getY() + height);
//Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce //Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce
//the radius closer to the top of the tree. (2, 2, 1, 1) //the radius closer to the top of the tree. (2, 2, 1, 1)
int leavesRadius = 1 - currentLayer / this.leafRadius; int leavesRadius = this.minLeavesRadius - currentLayer / 2;
for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++) for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++)
{ {
@ -209,7 +209,7 @@ public class GeneratorBasicTree extends GeneratorTreeBase
int currentLayer = y - (pos.getY() + height); int currentLayer = y - (pos.getY() + height);
//Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce //Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce
//the radius closer to the top of the tree. (3, 3, 2, 2) //the radius closer to the top of the tree. (3, 3, 2, 2)
int leavesRadius = 2 - currentLayer / this.leafRadius; int leavesRadius = (this.minLeavesRadius + 1) - currentLayer / 2;
for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++) for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++)
{ {