2 tnt.explosion = new dragonblocks.PixelManipulator([
3 ["", "air", "air", "air", ""],
4 ["air", "air", "air", "air", "air"],
5 ["air", "air", "§air", "air", "air"],
6 ["air", "air", "air", "air", "air"],
7 ["", "air", "air", "air", ""],
9 tnt.explosion.addFunction((node, x, y) => {
10 if(node.onblast && node.onblast(x, y) == false)
12 return dblib.random(0, 100) < 90;
14 tnt.ignite = function(x, y, time){
15 dragonblocks.setTimer("tntTimer", time, _ => {tnt.explode(x, y)}, dragonblocks.getNode(x, y).meta);
17 tnt.explode = function(x, y){
18 dragonblocks.setNode(x, y, "air");
19 dragonblocks.playSound("tnt_explode.ogg");
20 tnt.explosion.apply(x, y);
22 dragonblocks.registerNode({
28 texture: "tnt_tnt.png",
30 dragonblocks.playSound("tnt_ignite.ogg");
31 dragonblocks.setNode(x, y, "tnt:active_tnt");
34 dragonblocks.playSound("tnt_ignite.ogg");
35 tnt.ignite(x, y, 0.1);
38 if(dragonblocks.player.getWieldedItem().item == "torch:torch"){
39 dragonblocks.playSound("tnt_ignite.ogg");
40 dragonblocks.setNode(x, y, "tnt:active_tnt");
45 dragonblocks.registerNode({
46 name: "tnt:active_tnt",
51 texture: "tnt_active_tnt.png",
63 dragonblocks.registerNode({
64 name: "tnt:gunpowder",
70 texture: "tnt_gunpowder.png",
72 if(dragonblocks.player.getWieldedItem().item == "torch:torch_floor")
73 dragonblocks.setNode(x, y, "tnt:active_gunpowder");
77 dragonblocks.registerNode({
78 name: "tnt:active_gunpowder",
83 desc: "Gunpowder (active)",
84 texture: "tnt_active_gunpowder.png",
85 drops: "tnt:gunpowder",
87 let meta = dragonblocks.getNode(x, y).meta;
88 meta.gunpowderTime = 1;
89 meta.gunpowderInterval = setInterval(_ => {
90 meta.gunpowderTime -= 0.1;
91 if(meta.gunpowderTime <= 0){
92 dragonblocks.setNode(x, y, "air");
93 for(let [ix, iy] of [[x - 1, y], [x + 1, y], [x, y - 1], [x, y + 1]]){
94 if(dragonblocks.getNode(ix, iy).name == "tnt:gunpowder")
95 dragonblocks.setNode(ix, iy, "tnt:active_gunpowder");
96 else if(dragonblocks.getNode(ix, iy).name == "tnt:tnt")
97 tnt.ignite(ix, iy, tnt.time);
99 clearInterval(meta.gunpowderInterval);
103 onremove: (x, y) => {
104 clearInterval(dragonblocks.getNode(x, y).meta.gunpowderInterval);