From a0a3ea8309a722d75cac522dd3693790ea51c1d6 Mon Sep 17 00:00:00 2001 From: Juraj Vajda Date: Sun, 7 Oct 2018 15:50:11 -0400 Subject: [PATCH] prevent burning TNT from exploding --- init.lua | 61 ++++++++++++++++++++++++++++++------ sounds/antigrief_fart.1.ogg | Bin 0 -> 6567 bytes 2 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 sounds/antigrief_fart.1.ogg diff --git a/init.lua b/init.lua index 6b5dba2..95a6650 100644 --- a/init.lua +++ b/init.lua @@ -1,6 +1,6 @@ -- ANTI GRIEF by rnd -- Copyright 2016 rnd --- modified by SaKeL for Survival X Server +-- modified by SaKeL for Survival X Server ---------------------------------------------------------------------------- -- This program is free software: you can redistribute it and/or modify @@ -29,13 +29,13 @@ function prevent_place_above(name) local old_on_place = minetest.registered_craftitems[name] -- on_place local old_after_place_node = minetest.registered_nodes[name] --after_place_node --after_place_node = func(pos, placer, itemstack, pointed_thing) - + if old_on_place and old_on_place.on_place then old_on_place = old_on_place.on_place minetest.registered_craftitems[name].on_place = function(itemstack, placer, pointed_thing) - + local pos = pointed_thing.above local placer_name = placer:get_player_name() local item_name = string.split(itemstack:get_name(), ":")[2] @@ -61,14 +61,14 @@ function prevent_place_above(name) if old_after_place_node then old_after_place_node = old_after_place_node.after_place_node - + local table = minetest.registered_nodes[name] local table2 = {} - + for i,v in pairs(table) do table2[i] = v end - + table2.after_place_node = function(pos, placer, itemstack, pointed_thing) --after_place_node = func(pos, placer, itemstack, pointed_thing) @@ -97,11 +97,54 @@ function prevent_place_above(name) minetest.register_node(":"..name, table2) return - end - + end + return end - + +-- prevent TNT explosion +minetest.after(0, function () + local old_on_timer = minetest.registered_nodes["tnt:tnt_burning"] + + if old_on_timer and old_on_timer.on_timer then + old_on_timer = old_on_timer.on_timer + + minetest.registered_nodes["tnt:tnt_burning"].on_timer = function(pos, elapsed) + + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + + if not owner then + owner = "" + end + + if pos.y > -150 and owner ~= "ADMIN" and owner ~= "SaKeL" then + minetest.sound_play("antigrief_fart", {pos = pos, gain = 1.5, max_hear_distance = 2*64}) + minetest.remove_node(pos) + + -- add effect + minetest.add_particlespawner({ + amount = 64, + time = 0.5, + minpos = vector.subtract(pos, 1 / 2), + maxpos = vector.add(pos, 1 / 2), + minvel = {x = -10, y = -10, z = -10}, + maxvel = {x = 10, y = 10, z = 10}, + minacc = vector.new(), + maxacc = vector.new(), + minexptime = 1, + maxexptime = 2.5, + minsize = 1 * 3, + maxsize = 1 * 5, + texture = "tnt_smoke.png", + }) + else + return old_on_timer(pos, elapsed) + end + + end + end +end) minetest.after(0, function () prevent_place_above("bucket:bucket_water") diff --git a/sounds/antigrief_fart.1.ogg b/sounds/antigrief_fart.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..457d8a0201874f0467d93653d3359025c4d976c9 GIT binary patch literal 6567 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 sl$sc$4wMf(q64}o5VT