- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
importPackage(Packages.com.sk89q.worldedit);
importPackage(Packages.com.sk89q.worldedit.blocks);
importPackage(Packages.com.sk89q.worldedit.tools);
importPackage(Packages.com.sk89q.worldedit.tools.brushes);
importPackage(Packages.com.sk89q.worldedit.patterns);
var bSize = argv.length > 1 ? parseInt(argv[1]) : 4;
var maxFaces = argv.length > 2 ? (argv[2]) : 2;
var strength = argv.length > 3 ? (argv[3]) : 1;
var xOff = ['1', '-1', '1', '1', '-1', '1', '-1', '-1'];
var yOff = ['1', '1', '-1', '1', '-1', '-1', '1', '-1'];
var zOff = ['1', '1', '1', '-1', '1', '-1', '-1', '-1'];
if (bSize == 0) {bSize = 4;}
var blocks = new Array();
var tool = context.getSession().getBrushTool(player.getItemInHand());
var matPat = new SingleBlockPattern(new BaseBlock(maxFaces));
tool.setSize(bSize);
tool.setFill(matPat);
var brush = new Brush({
strength : strength,
build : function(editSession,pos,mat,bSize) {
var session = context.remember();
for (iteration = 1; iteration <= strength; iteration++) {
var matID = mat.getBlock().getType();
maxFaces = ((matID >= 0) && (matID <= 6)) ? matID : 3;
var blockTotal = 0;
var blockCnt = 0;
var blockFaces = new Array(6);
radius = bSize + 0.5;
var invRadius = 1 / radius;
var ceilRadius = Math.ceil(radius);
var nextXn = 0;
forX: for (var x = 0; x <= ceilRadius; ++x) {
var xn = nextXn;
nextXn = (x + 1) * invRadius;
var nextYn = 0;
forY: for (var y = 0; y <= ceilRadius; ++y) {
var yn = nextYn;
nextYn = (y + 1) * invRadius;
var nextZn = 0;
forZ: for (var z = 0; z <= ceilRadius; ++z) {
var zn = nextZn;
nextZn = (z + 1) * invRadius;
var distanceSq = lengthSq(xn, yn, zn);
if (distanceSq > 1) {
if (z == 0) {
if (y == 0) {
break forX;
}
break forY;
}
break forZ;
}
for (var dirLoop = 0; dirLoop <= 7 ; dirLoop++) {
var pt = pos.add(x * xOff[dirLoop], y * yOff[dirLoop], z * zOff[dirLoop]);
var curBlock = editSession.getBlock(pt);
blockCnt = 0;
blockFaces = [];
blockFaces[1] = editSession.getBlockType(pt.add(1,0,0));
blockFaces[2] = editSession.getBlockType(pt.add(-1,0,0));
blockFaces[3] = editSession.getBlockType(pt.add(0,1,0));
blockFaces[4] = editSession.getBlockType(pt.add(0,-1,0));
blockFaces[5] = editSession.getBlockType(pt.add(0,0,1));
blockFaces[6] = editSession.getBlockType(pt.add(0,0,-1));
for (var lpC = 1; lpC <= 6; lpC++) {
if((blockFaces[lpC]) == 0) {blockCnt++;}
}
if (blockCnt >= maxFaces) {
blocks[blockTotal] = BlockID.AIR;
}
else {
blocks[blockTotal] = curBlock.getType();
}
blockTotal++;
}
}
}