TNT: When disabled leave some useful functionality enabled
authortenplus1 <tenplus1@users.noreply.github.com>
Mon, 27 Jun 2016 14:45:40 +0000 (16:45 +0200)
committerparamat <mat.gregory@virginmedia.com>
Thu, 7 Jul 2016 17:10:57 +0000 (18:10 +0100)
- Only remove the TNT craft recipe, tnt:tnt node and the ABM
- Leave tnt:tnt_burning available for explosions in 3rd party mods

mods/tnt/init.lua

index 9fd97f4926b7414d41c5bee3e7ede6f0b0f5f487..a481ae95758b867fbac64a36d1de9412ddb788ca 100644 (file)
@@ -1,10 +1,8 @@
 tnt = {}
--- Default to enabled in singleplayer and disabled in multiplayer
-local singleplayer = minetest.is_singleplayer()
-local setting = minetest.setting_getbool("enable_tnt")
-if (not singleplayer and setting ~= true) or
-               (singleplayer and setting == false) then
-       return
+-- Default to enabled when in singleplayer
+local enable_tnt = minetest.setting_getbool("enable_tnt")
+if enable_tnt == nil
+       enable_tnt = minetest.is_singleplayer()
 end
 
 -- loss probabilities array (one in X will be lost)
@@ -492,28 +490,30 @@ minetest.register_node("tnt:gunpowder_burning", {
        end,
 })
 
-minetest.register_abm({
-       nodenames = {"group:tnt", "tnt:gunpowder"},
-       neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"},
-       interval = 4,
-       chance = 1,
-       action = tnt.burn,
-})
-
 minetest.register_craft({
        output = "tnt:gunpowder",
        type = "shapeless",
        recipe = {"default:coal_lump", "default:gravel"}
 })
 
-minetest.register_craft({
-       output = "tnt:tnt",
-       recipe = {
-               {"",           "group:wood",    ""},
-               {"group:wood", "tnt:gunpowder", "group:wood"},
-               {"",           "group:wood",    ""}
-       }
-})
+if enable_tnt then
+       minetest.register_craft({
+               output = "tnt:tnt",
+               recipe = {
+                       {"",           "group:wood",    ""},
+                       {"group:wood", "tnt:gunpowder", "group:wood"},
+                       {"",           "group:wood",    ""}
+               }
+       })
+
+       minetest.register_abm({
+               nodenames = {"group:tnt", "tnt:gunpowder"},
+               neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"},
+               interval = 4,
+               chance = 1,
+               action = tnt.burn,
+       })
+end
 
 function tnt.register_tnt(def)
        local name = ""
@@ -530,30 +530,32 @@ function tnt.register_tnt(def)
        local tnt_burning = def.tiles.burning or def.name .. "_top_burning_animated.png"
        if not def.damage_radius then def.damage_radius = def.radius * 2 end
 
-       minetest.register_node(":" .. name, {
-               description = def.description,
-               tiles = {tnt_top, tnt_bottom, tnt_side},
-               is_ground_content = false,
-               groups = {dig_immediate = 2, mesecon = 2, tnt = 1},
-               sounds = default.node_sound_wood_defaults(),
-               on_punch = function(pos, node, puncher)
-                       if puncher:get_wielded_item():get_name() == "default:torch" then
-                               minetest.set_node(pos, {name = name .. "_burning"})
-                       end
-               end,
-               on_blast = function(pos, intensity)
-                       minetest.after(0.1, function()
-                               tnt.boom(pos, def)
-                       end)
-               end,
-               mesecons = {effector =
-                       {action_on =
-                               function(pos)
-                                       tnt.boom(pos, def)
+       if enable_tnt then
+               minetest.register_node(":" .. name, {
+                       description = def.description,
+                       tiles = {tnt_top, tnt_bottom, tnt_side},
+                       is_ground_content = false,
+                       groups = {dig_immediate = 2, mesecon = 2, tnt = 1},
+                       sounds = default.node_sound_wood_defaults(),
+                       on_punch = function(pos, node, puncher)
+                               if puncher:get_wielded_item():get_name() == "default:torch" then
+                                       minetest.set_node(pos, {name = name .. "_burning"})
                                end
-                       }
-               },
-       })
+                       end,
+                       on_blast = function(pos, intensity)
+                               minetest.after(0.1, function()
+                                       tnt.boom(pos, def)
+                               end)
+                       end,
+                       mesecons = {effector =
+                               {action_on =
+                                       function(pos)
+                                               tnt.boom(pos, def)
+                                       end
+                               }
+                       },
+               })
+       end
 
        minetest.register_node(":" .. name .. "_burning", {
                tiles = {
@@ -590,4 +592,3 @@ tnt.register_tnt({
        description = "TNT",
        radius = radius,
 })
-