-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy path500ise_mirrored.js
More file actions
42 lines (38 loc) · 1.25 KB
/
Copy path500ise_mirrored.js
File metadata and controls
42 lines (38 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
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
var mirrorPoint = null;
var directions = [
[0, -1, 0],
[0, 1, 0],
[0, 0, -1],
[0, 0, 1],
[-1, 0, 0],
[1, 0, 0]
]; //See Minecraft Pi api in EventFactory
function useItem(x, y, z, itemId, blockId, side) {
if (itemId == 362) { //melon seeds
if (mirrorPoint == null) {
mirrorPoint = getPlaceAgainstCoords(x, y, z, side);
print("Mirroring around coordinates: " + x + ":" + y + ":" + z);
} else {
mirrorPoint = null;
print("Mirroring is off");
}
preventDefault();
} else if (mirrorPoint != null && itemId > 0 && itemId < 0xff) { //block placing with mirror point
var finalPoint = getPlaceAgainstCoords(x, y, z, side);
var xx = finalPoint[0];
var yy = finalPoint[1];
var zz = finalPoint[2];
var deltaX = xx - mirrorPoint[0];
var deltaZ = zz - mirrorPoint[2];
//4 mirror blocks: ++, -+, +-, --
preventDefault();
setTile(mirrorPoint[0] + deltaX, yy, mirrorPoint[2] + deltaZ, itemId);
setTile(mirrorPoint[0] - deltaX, yy, mirrorPoint[2] + deltaZ, itemId);
setTile(mirrorPoint[0] + deltaX, yy, mirrorPoint[2] - deltaZ, itemId);
setTile(mirrorPoint[0] - deltaX, yy, mirrorPoint[2] - deltaZ, itemId);
}
}
function getPlaceAgainstCoords(x, y, z, side) {
var dir = directions[side];
return [x + dir[0], y + dir[1], z + dir[2]];
}