Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-05 11:00:05 +01:00
//walls on non-cuboid regions no longer introduces gaps in walls beyond 45 degrees (aka slanted roofs :)).
This is a better way to solve #273.
Dieser Commit ist enthalten in:
Ursprung
60f6580553
Commit
164601644a
@ -1654,7 +1654,20 @@ public class EditSession {
|
|||||||
* @throws MaxChangedBlocksException
|
* @throws MaxChangedBlocksException
|
||||||
*/
|
*/
|
||||||
public int makeWalls(final Region region, Pattern pattern) 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
|
* @throws MaxChangedBlocksException
|
||||||
*/
|
*/
|
||||||
public int generate(EditSession editSession, Pattern pattern, boolean hollow) 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;
|
int affected = 0;
|
||||||
|
|
||||||
for (BlockVector position : getExtent()) {
|
for (BlockVector position : getExtent()) {
|
||||||
@ -201,11 +187,6 @@ public abstract class ArbitraryShape {
|
|||||||
draw = true;
|
draw = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flat) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isInsideCached(x, y + 1, z, pattern)) {
|
if (!isInsideCached(x, y + 1, z, pattern)) {
|
||||||
draw = true;
|
draw = true;
|
||||||
break;
|
break;
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren