-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchestxray.js
83 lines (72 loc) · 2.56 KB
/
chestxray.js
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
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
var module = rise.registerModule("ChestXray", "Detects and highlights chests within a specified range.");
module.registerSetting("number", "Range", 10, 8, 64);
module.registerSetting("color", "Chest Color", "#FF0000");
function isChestBlock(block) {
return block.getId() === 54 || block.getId() === 146;
}
function calculateDistance(playerPos, targetPos) {
var dx = playerPos.x - targetPos.x;
var dy = playerPos.y - targetPos.y;
var dz = playerPos.z - targetPos.z;
return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
function createCubeVertices(blockPos, size) {
var position = blockPos.getPosition();
var x = position.x;
var y = position.y;
var z = position.z;
return [
{ x: x, y: y, z: z },
{ x: x + size, y: y, z: z },
{ x: x + size, y: y, z: z + size },
{ x: x, y: y, z: z + size },
{ x: x, y: y + size, z: z },
{ x: x + size, y: y + size, z: z },
{ x: x + size, y: y + size, z: z + size },
{ x: x, y: y + size, z: z + size }
];
}
function createCubeLines(vertices) {
return [
[vertices[0], vertices[1]],
[vertices[1], vertices[2]],
[vertices[2], vertices[3]],
[vertices[3], vertices[0]],
[vertices[4], vertices[5]],
[vertices[5], vertices[6]],
[vertices[6], vertices[7]],
[vertices[7], vertices[4]],
[vertices[0], vertices[4]],
[vertices[1], vertices[5]],
[vertices[2], vertices[6]],
[vertices[3], vertices[7]]
].map(function(line) {
return [
rise.newVec3(line[0].x, line[0].y, line[0].z),
rise.newVec3(line[1].x, line[1].y, line[1].z)
];
});
}
function renderCube(blockPos, size, color) {
var vertices = createCubeVertices(blockPos, size);
var lines = createCubeLines(vertices);
lines.forEach(function(line) {
render.drawLine3D(line[0], line[1], color, 3);
});
}
module.handle("onRender3D", function () {
var range = module.getSetting("Range");
var chestColor = module.getSetting("Chest Color");
var playerPos = player.getPosition();
for (var x = playerPos.x - range; x <= playerPos.x + range; x++) {
for (var y = playerPos.y - range; y <= playerPos.y + range; y++) {
for (var z = playerPos.z - range; z <= playerPos.z + range; z++) {
var blockPos = world.newBlockPos(x, y, z);
var block = blockPos.getBlock();
if (isChestBlock(block)) {
renderCube(blockPos, 1, chestColor);
}
}
}
}
});