mirror of
https://github.com/boy0001/FastAsyncWorldedit.git
synced 2025-02-01 13:11:45 +01:00
Stencil brush depth
This commit is contained in:
parent
9cbe38359c
commit
177e2252cc
@ -12,10 +12,12 @@ import java.io.InputStream;
|
|||||||
|
|
||||||
public class StencilBrush extends HeightBrush {
|
public class StencilBrush extends HeightBrush {
|
||||||
private final boolean onlyWhite;
|
private final boolean onlyWhite;
|
||||||
|
private final int depth;
|
||||||
|
|
||||||
public StencilBrush(InputStream stream, int rotation, double yscale, boolean onlyWhite, Clipboard clipboard) {
|
public StencilBrush(InputStream stream, int depth, int rotation, double yscale, boolean onlyWhite, Clipboard clipboard) {
|
||||||
super(stream, rotation, yscale, clipboard);
|
super(stream, rotation, yscale, clipboard);
|
||||||
this.onlyWhite = onlyWhite;
|
this.onlyWhite = onlyWhite;
|
||||||
|
this.depth = depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -44,7 +46,9 @@ public class StencilBrush extends HeightBrush {
|
|||||||
if (val >= 255 || PseudoRandom.random.random(maxY) < val) {
|
if (val >= 255 || PseudoRandom.random.random(maxY) < val) {
|
||||||
int zz = position.getBlockZ() + z;
|
int zz = position.getBlockZ() + z;
|
||||||
int y = editSession.getNearestSurfaceTerrainBlock(xx, zz, position.getBlockY(), 0, maxY);
|
int y = editSession.getNearestSurfaceTerrainBlock(xx, zz, position.getBlockY(), 0, maxY);
|
||||||
editSession.setBlock(xx, y, zz, pattern);
|
for (int i = 0; i < depth; i++) {
|
||||||
|
editSession.setBlock(xx, y - i, zz, pattern);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,10 +34,10 @@ import com.boydti.fawe.object.brush.HeightBrush;
|
|||||||
import com.boydti.fawe.object.brush.LineBrush;
|
import com.boydti.fawe.object.brush.LineBrush;
|
||||||
import com.boydti.fawe.object.brush.RaiseBrush;
|
import com.boydti.fawe.object.brush.RaiseBrush;
|
||||||
import com.boydti.fawe.object.brush.RecurseBrush;
|
import com.boydti.fawe.object.brush.RecurseBrush;
|
||||||
|
import com.boydti.fawe.object.brush.ShatterBrush;
|
||||||
import com.boydti.fawe.object.brush.SplineBrush;
|
import com.boydti.fawe.object.brush.SplineBrush;
|
||||||
import com.boydti.fawe.object.brush.StencilBrush;
|
import com.boydti.fawe.object.brush.StencilBrush;
|
||||||
import com.boydti.fawe.object.brush.TargetMode;
|
import com.boydti.fawe.object.brush.TargetMode;
|
||||||
import com.boydti.fawe.object.brush.ShatterBrush;
|
|
||||||
import com.boydti.fawe.object.brush.heightmap.ScalableHeightMap;
|
import com.boydti.fawe.object.brush.heightmap.ScalableHeightMap;
|
||||||
import com.boydti.fawe.object.brush.scroll.ScrollClipboard;
|
import com.boydti.fawe.object.brush.scroll.ScrollClipboard;
|
||||||
import com.boydti.fawe.object.brush.scroll.ScrollMask;
|
import com.boydti.fawe.object.brush.scroll.ScrollMask;
|
||||||
@ -533,7 +533,7 @@ public class BrushCommands {
|
|||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "stencil", "color"},
|
aliases = { "stencil", "color"},
|
||||||
usage = "<pattern> [radius] [file|#clipboard|null] [rotation] [yscale]",
|
usage = "<pattern> [radius] [depth] [file|#clipboard|null] [rotation] [yscale]",
|
||||||
desc = "Use a height map to paint a surface",
|
desc = "Use a height map to paint a surface",
|
||||||
help =
|
help =
|
||||||
"Chooses the stencil brush.\n" +
|
"Chooses the stencil brush.\n" +
|
||||||
@ -542,16 +542,16 @@ public class BrushCommands {
|
|||||||
max = -1
|
max = -1
|
||||||
)
|
)
|
||||||
@CommandPermissions("worldedit.brush.stencil")
|
@CommandPermissions("worldedit.brush.stencil")
|
||||||
public void stencilBrush(Player player, LocalSession session, Pattern fill, @Optional("5") double radius, @Optional("") final String filename, @Optional("0") final int rotation, @Optional("1") final double yscale, @Switch('w') boolean onlyWhite) throws WorldEditException {
|
public void stencilBrush(Player player, LocalSession session, Pattern fill, @Optional("5") double radius, @Optional("1") double depth, @Optional("") final String filename, @Optional("0") final int rotation, @Optional("1") final double yscale, @Switch('w') boolean onlyWhite) throws WorldEditException {
|
||||||
worldEdit.checkMaxBrushRadius(radius);
|
worldEdit.checkMaxBrushRadius(radius);
|
||||||
BrushTool tool = session.getBrushTool(player);
|
BrushTool tool = session.getBrushTool(player);
|
||||||
InputStream stream = getHeightmapStream(filename);
|
InputStream stream = getHeightmapStream(filename);
|
||||||
tool.setFill(fill);
|
tool.setFill(fill);
|
||||||
tool.setSize(radius);
|
tool.setSize(radius);
|
||||||
try {
|
try {
|
||||||
tool.setBrush(new StencilBrush(stream, rotation, yscale, onlyWhite, filename.equalsIgnoreCase("#clipboard") ? session.getClipboard().getClipboard() : null), "worldedit.brush.height", player);
|
tool.setBrush(new StencilBrush(stream, (int) depth, rotation, yscale, onlyWhite, filename.equalsIgnoreCase("#clipboard") ? session.getClipboard().getClipboard() : null), "worldedit.brush.height", player);
|
||||||
} catch (EmptyClipboardException ignore) {
|
} catch (EmptyClipboardException ignore) {
|
||||||
tool.setBrush(new StencilBrush(stream, rotation, yscale, onlyWhite, null), "worldedit.brush.height", player);
|
tool.setBrush(new StencilBrush(stream, (int) depth, rotation, yscale, onlyWhite, null), "worldedit.brush.height", player);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.print(BBC.getPrefix() + BBC.BRUSH_STENCIL.f(radius));
|
player.print(BBC.getPrefix() + BBC.BRUSH_STENCIL.f(radius));
|
||||||
|
Loading…
Reference in New Issue
Block a user