Add disable_jump check for the player's feet
authorMoNTE48 <MoNTE48@mail.ua>
Wed, 11 Dec 2019 19:03:12 +0000 (20:03 +0100)
committersfan5 <sfan5@live.de>
Fri, 29 May 2020 20:53:58 +0000 (22:53 +0200)
doc/lua_api.txt
games/devtest/mods/testnodes/properties.lua
src/client/localplayer.cpp

index bb9df53734696ba3a8aeeab1b036f02a1520b995..8c81b7020ba377b0ed60fe624bcfacb0a67e30e9 100644 (file)
@@ -1666,6 +1666,7 @@ to games.
     * `2`: the node always gets the digging time 0.5 seconds (rail, sign)
     * `3`: the node always gets the digging time 0 seconds (torch)
 * `disable_jump`: Player (and possibly other things) cannot jump from node
+  or if their feet are in the node. Note: not supported for `new_move = false`
 * `fall_damage_add_percent`: damage speed = `speed * (1 + value/100)`
 * `falling_node`: if there is no walkable block under the node it will fall
 * `float`: the node will not fall through liquids
index e169d4b08b92471dd9639de40e53bf99bea99e1a..01846a5f0da84678ced7aeebccc4176000fe38cb 100644 (file)
@@ -56,11 +56,18 @@ minetest.register_node("testnodes:attached_wallmounted", {
 minetest.register_node("testnodes:nojump", {
        description = S("Non-jumping Node"),
        groups = {disable_jump=1, dig_immediate=3},
-
-
        tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"},
 })
 
+-- Jump disabled plant
+minetest.register_node("testnodes:nojump_walkable", {
+       description = S("Non-jumping Plant Node"),
+       drawtype = "plantlike",
+       groups = {disable_jump=1, dig_immediate=3},
+       walkable = false,
+       tiles = {"testnodes_nojump_top.png"},
+})
+
 -- Climbable up and down with jump and sneak keys
 minetest.register_node("testnodes:climbable", {
        description = S("Climbable Node"),
index c20c3619f48bf52a66e790cd79eaced9cd713443..011898bcf2ee908be4d68a8431ca561f1d413018 100644 (file)
@@ -436,9 +436,11 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
                Check properties of the node on which the player is standing
        */
        const ContentFeatures &f = nodemgr->get(map->getNode(m_standing_node));
+       const ContentFeatures &f1 = nodemgr->get(map->getNode(m_standing_node + v3s16(0, 1, 0)));
 
        // Determine if jumping is possible
-       m_disable_jump = itemgroup_get(f.groups, "disable_jump");
+       m_disable_jump = itemgroup_get(f.groups, "disable_jump") ||
+               itemgroup_get(f1.groups, "disable_jump");
        m_can_jump = ((touching_ground && !is_climbing) || sneak_can_jump) && !m_disable_jump;
 
        // Jump key pressed while jumping off from a bouncy block