mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-11-02 10:57:11 +00:00
Merge pull request #276 from sk89q/better-non-cuboid-walls
//walls on non-cuboid regions no longer introduces gaps in walls beyond 45 degrees.
This commit is contained in:
commit
157c0fa60b
@ -1654,7 +1654,20 @@ public class EditSession {
|
||||
* @throws MaxChangedBlocksException
|
||||
*/
|
||||
public int makeWalls(final Region region, Pattern pattern) throws MaxChangedBlocksException {
|
||||
return new RegionShape(region).generate(this, pattern, true, true);
|
||||
final int minY = region.getMinimumPoint().getBlockY();
|
||||
final int maxY = region.getMaximumPoint().getBlockY();
|
||||
final ArbitraryShape shape = new RegionShape(region) {
|
||||
@Override
|
||||
protected BaseBlock getMaterial(int x, int y, int z, BaseBlock defaultMaterial) {
|
||||
if (y > maxY || y < minY) {
|
||||
// Put holes into the floor and ceiling by telling ArbitraryShape that the shape goes on outside the region
|
||||
return defaultMaterial;
|
||||
}
|
||||
|
||||
return super.getMaterial(x, y, z, defaultMaterial);
|
||||
}
|
||||
};
|
||||
return shape.generate(this, pattern, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -148,20 +148,6 @@ public abstract class ArbitraryShape {
|
||||
* @throws MaxChangedBlocksException
|
||||
*/
|
||||
public int generate(EditSession editSession, Pattern pattern, boolean hollow) throws MaxChangedBlocksException {
|
||||
return generate(editSession, pattern, hollow, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the shape.
|
||||
*
|
||||
* @param editSession The EditSession to use.
|
||||
* @param pattern The pattern to generate default materials from.
|
||||
* @param hollow Specifies whether to generate a hollow shape.
|
||||
* @param flat If hollow mode is enabled, disregard blocks above/below
|
||||
* @return number of affected blocks.
|
||||
* @throws MaxChangedBlocksException
|
||||
*/
|
||||
public int generate(EditSession editSession, Pattern pattern, boolean hollow, boolean flat) throws MaxChangedBlocksException {
|
||||
int affected = 0;
|
||||
|
||||
for (BlockVector position : getExtent()) {
|
||||
@ -201,11 +187,6 @@ public abstract class ArbitraryShape {
|
||||
draw = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (flat) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (!isInsideCached(x, y + 1, z, pattern)) {
|
||||
draw = true;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user