]> git.lizzy.rs Git - Crafter.git/commitdiff
Increase tnt performance
authoroilboi <47129783+oilboi@users.noreply.github.com>
Thu, 18 Jun 2020 15:46:02 +0000 (11:46 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Thu, 18 Jun 2020 15:46:02 +0000 (11:46 -0400)
README.md
mods/itemhandling/init.lua
mods/tnt/init.lua

index 1412ce8aaa5b926d4c2f27e7cc90aa6b805ad39f..f4c7695b84bc042a0252c6549785be18d964c757 100644 (file)
--- a/README.md
+++ b/README.md
@@ -18,6 +18,8 @@ enable_client_modding = true
 csm_restriction_flags = 0
 enable_mod_channels = true
 secure.http_mods = skins
+max_objects_per_block = 4096
+max_packets_per_iteration = 10096
 ```
 
 
index 881b031bb3b340c7b5bc46846cde56cdbb3d7803..3c2a060228d23f2b4b407db1335e7cbc82b8dc48 100644 (file)
@@ -367,7 +367,7 @@ local item_step = function(self, dtime, moveresult)
 
        is_stuck = false
        snode = minetest.get_node_or_nil(pos)
-       if snode ~= "air" then
+       if snode and snode ~= "air" then
                snode = minetest.registered_nodes[snode.name] or {}
                is_stuck = (snode.walkable == nil or snode.walkable == true)
                        and (snode.collision_box == nil or snode.collision_box.type == "regular")
index 3c204c813580ec236fefd8e575ba23d446af9d83..c62c6ec7ea93753c905f123e69c57ac27667acb5 100644 (file)
@@ -80,7 +80,7 @@ function tnt(pos,range,explosion_type)
        data = vm:get_data()
        vm:get_light_data()
        
-       if in_water == false then
+       if data and in_water == false then
                explosion_depletion = range/2
                --raycast explosion
                for x=-range, range do
@@ -95,25 +95,24 @@ function tnt(pos,range,explosion_type)
                                        if explosion_force  >= explosion_depletion then
                                                n_pos = area:index(pointed_thing.under.x,pointed_thing.under.y,pointed_thing.under.z)
 
-                                               node2 = content_id(data[n_pos])
-                                               
-                                               if node2 == "nether:obsidian" or node2 == "nether:bedrock" then
-                                                       break
-                                               elseif node2 == "tnt:tnt" then
-                                                       data[n_pos] = air
-                                                       minetest.add_entity(vector.new(pointed_thing.under.x,pointed_thing.under.y,pointed_thing.under.z), "tnt:tnt",minetest.serialize({do_ignition_particles=true,timer = math.random()}))
-                                               else
-                                                       data[n_pos] = air
+                                               if n_pos and data[n_pos] then
+                                                       node2 = content_id(data[n_pos])
                                                        
-                                                       minetest.after(0, function(pointed_thing)
-                                                               minetest.check_for_falling(vector.new(pointed_thing.under.x,pointed_thing.under.y+1,pointed_thing.under.z))
-                                                       end,pointed_thing)
-
-                                                       if math.random()>0.9 then
-                                                               if node2 ~= "nether:obsidian" and node2 ~= "nether:bedrock" then
+                                                       if node2 == "nether:obsidian" or node2 == "nether:bedrock" then
+                                                               break
+                                                       elseif node2 == "tnt:tnt" then
+                                                               data[n_pos] = air
+                                                               minetest.add_entity({x=pointed_thing.under.x,y=pointed_thing.under.y,z=pointed_thing.under.z}, "tnt:tnt",minetest.serialize({do_ignition_particles=true,timer = math.random()}))
+                                                       else
+                                                               data[n_pos] = air
+                                                               
+                                                               minetest.after(0, function(pointed_thing)
+                                                                       minetest.check_for_falling({x=pointed_thing.under.x,y=pointed_thing.under.y+1,z=pointed_thing.under.z})
+                                                               end,pointed_thing)
 
+                                                               if math.random()>0.9 then
                                                                        item = minetest.get_node_drops(node2, "main:diamondpick")[1]
-                                                                       ppos = vector.new(pointed_thing.under.x,pointed_thing.under.y,pointed_thing.under.z)
+                                                                       ppos = {x=pointed_thing.under.x,y=pointed_thing.under.y,z=pointed_thing.under.z}
                                                                        obj = minetest.add_item(ppos, item)
                                                                        if obj then
                                                                                power = (range - vector.distance(pos,ppos))*2
@@ -124,6 +123,8 @@ function tnt(pos,range,explosion_type)
                                                                end
                                                        end
                                                end
+                                       else
+                                               break
                                        end
                                end
                        end