// giant pangolin
var x, y, z, i, dx, dy;
// flat ground
fill(0, 0, 0, 79, 0, 79, b('grass_block'));
fill(20, 1, 10, 60, 1, 70, b('coarse_dirt'));
var cx = 40;
// body: rows of circles along z
for (z = 20; z <= 56; z++) {
var r;
if (z < 28) r = 3 + (z - 20) * 0.4;
else if (z < 44) r = 6;
else r = 6 - (z - 44) * 0.35;
for (dx = -7; dx <= 7; dx++) {
for (dy = -7; dy <= 7; dy++) {
if (dx * dx + dy * dy > r * r) continue;
y = 8 + dy;
if (y < 1) continue;
var m;
if (dy > 0) m = (z % 2 === 0) ? 'brown_terracotta' : 'orange_terracotta';
else m = 'terracotta';
pb(cx + dx, y, z, m);
}
}
}
// tail
for (z = 57; z <= 72; z++) {
var tr = 5 - (z - 57) * 0.3;
for (dx = -5; dx <= 5; dx++) {
for (dy = -5; dy <= 5; dy++) {
if (dx * dx + dy * dy > tr * tr) continue;
y = 6 + dy;
if (y < 1) continue;
pb(cx + dx, y, z, (z % 2 === 0) ? 'brown_terracotta' : 'orange_terracotta');
}
}
}
// head + snout
for (z = 12; z <= 20; z++) {
var hr = 2 + (z - 12) * 0.25;
for (dx = -3; dx <= 3; dx++) {
for (dy = -3; dy <= 3; dy++) {
if (dx * dx + dy * dy > hr * hr) continue;
y = 5 + dy;
if (y < 1) continue;
pb(cx + dx, y, z, 'brown_terracotta');
}
}
}
pb(cx - 1, 6, 15, 'black_concrete');
pb(cx + 1, 6, 15, 'black_concrete');
// legs
for (i = 0; i < 4; i++) {
var lx = (i % 2 === 0) ? cx - 4 : cx + 4;
var lz = (i < 2) ? 26 : 46;
for (y = 1; y <= 6; y++) {
fill(lx - 1, y, lz - 1, lx + 1, y, lz + 1, b('brown_terracotta'));
}
pb(lx, 1, lz - 2, 'black_concrete');
pb(lx - 1, 1, lz - 2, 'black_concrete');
pb(lx + 1, 1, lz - 2, 'black_concrete');
}
// termite mound
for (y = 1; y <= 14; y++) {
var mr = (14 - y) * 0.5;
for (dx = -8; dx <= 8; dx++) {
for (dy = -8; dy <= 8; dy++) {
if (dx * dx + dy * dy > mr * mr) continue;
pb(26 + dx, y, 24 + dy, 'terracotta');
}
}
}
// acacia trees
for (i = 0; i < 4; i++) {
var ax = (i < 2) ? 12 : 68;
var az = (i % 2 === 0) ? 20 : 60;
for (y = 1; y <= 6; y++) pb(ax, y, az, 'acacia_log');
for (dx = -3; dx <= 3; dx++) {
for (dy = -3; dy <= 3; dy++) {
if (dx * dx + dy * dy > 9) continue;
pb(ax + dx, 7, az + dy, 'acacia_leaves');
}
}
}
// some grass
for (i = 0; i < 60; i++) {
var gx = 4 + (i * 7) % 72;
var gz = 4 + (i * 13) % 72;
pb(gx, 1, gz, 'short_grass');
}