You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AsyncErr: Lua: Runtime error from mod '' in callback node_on_dig(): Runtime error from mod '' in callback getAuth(): stack overflow
stack traceback:
[C]: in function 'read'
/opt/minetest/bin/../builtin/game/auth.lua:14: in function </opt/minetest/bin/../builtin/game/auth.lua:12>
[C]: in function 'get_player_privs'
/opt/minetest/bin/../builtin/game/misc.lua:28: in function 'check_player_privs'
/opt/minetest/bin/../mods/areas/api.lua:87: in function 'canInteract'
/opt/minetest/bin/../mods/areas/interact.lua:5: in function 'is_protected'
/opt/minetest/bin/../builtin/game/item.lua:473: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function </opt/minetest/bin/../builtin/game/item.lua:460>
stack traceback:
[C]: in function 'get_player_privs'
/opt/minetest/bin/../builtin/game/misc.lua:28: in function 'check_player_privs'
/opt/minetest/bin/../mods/areas/api.lua:87: in function 'canInteract'
/opt/minetest/bin/../mods/areas/interact.lua:5: in function 'is_protected'
/opt/minetest/bin/../builtin/game/item.lua:473: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
...
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function 'node_dig'
...st/bin/../games/minetest_game/mods/default/functions.lua:301: in function 'dig_up'
...netest/bin/../games/minetest_game/mods/default/nodes.lua:1416: in function 'after_dig_node'
/opt/minetest/bin/../builtin/game/item.lua:547: in function </opt/minetest/bin/../builtin/game/item.lua:460>
steps to reproduce:
create a very tall column of papyrus (1024 wasn't enough, 4096 was, worldedit was helpful, but make sure the mapblocks are loaded)
dig the bottom node
this is relatively easy to trigger as an unprivileged player, particularly if ethereal is also installed (papyrus becomes a solid node, and you can nerd-pole on them).
in my local repos, i see it used in cool_trees, ethereal, and naturalbiomes, so the functionality can't be changed without potentially breaking things.
i can't think of a "clean" fix. perhaps, add an additional 4th parameter to default.dig_up, indicating how many nodes it's supposed to dig up. i'll call this n for now for lack of a better name. have this default to something sane like 16 or 128. then, if the method is called and there's "air" for n nodes below the current node, don't continue to dig up - assume we've already dug up n nodes.
The text was updated successfully, but these errors were encountered:
Add a parameter to default.dig_up indicating the maximum height. Above this height, nodes are no longer checked. For papyrus, a value of 10 should be reasonable (naturally they grow to 4, and by hand, it seems insane to put more than that)
Use minetest.get_node() or VoxelManip (I don't know which one is faster) to iterate through nodes above this node. Once another node is encountered, break the loop and record the height.
Dig all the nodes according to the recorded height, from top to bottom. It would be better if we could somehow tell on_dig to skip default.dig_up. (Maybe a mod-scope variable? If that is true the function returns)
steps to reproduce:
this is relatively easy to trigger as an unprivileged player, particularly if ethereal is also installed (papyrus becomes a solid node, and you can nerd-pole on them).
in my local repos, i see it used in cool_trees, ethereal, and naturalbiomes, so the functionality can't be changed without potentially breaking things.
i can't think of a "clean" fix. perhaps, add an additional 4th parameter to
default.dig_up
, indicating how many nodes it's supposed to dig up. i'll call thisn
for now for lack of a better name. have this default to something sane like 16 or 128. then, if the method is called and there's "air" forn
nodes below the current node, don't continue to dig up - assume we've already dug upn
nodes.The text was updated successfully, but these errors were encountered: