Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot sneak through open door #15795

Open
rdeforest opened this issue Feb 16, 2025 · 1 comment
Open

Cannot sneak through open door #15795

rdeforest opened this issue Feb 16, 2025 · 1 comment
Labels
@ Client / Controls / Input Unconfirmed bug Bug report that has not been confirmed to exist/be reproducible

Comments

@rdeforest
Copy link

Luanti version

Luanti 5.11.0

Operating system and version

OS: MacOS Sequoia 15.3

CPU model

Apple M1 MAX

GPU model

Apple M1 MAX

Active renderer

2.1 / opengl / OSX

Summary

A player cannot sneak through an open door

Steps to reproduce

  • Setup Luanti 5.10.0, no game, new world, no mods
  • Start in creative mode
  • Grab a door from the creative mode inventory
  • Place the door
  • Open the door
  • Try to sneak through it
  • Be blocked partway into the space (possibly as far in as one can go when it's closed?)

Direction of traversal doesn't matter. I didn't try any permutations of surrounding geometry (slopes, ladders, etc).

I suspect issue #15668 will obsolete this issue by removing either doors, sneaking or both from Luanti.

@rdeforest rdeforest added the Unconfirmed bug Bug report that has not been confirmed to exist/be reproducible label Feb 16, 2025
@SmallJoker
Copy link
Member

This is not a regression. The same also occurs in Minetest 5.9.1 and very likely older versions too.

Reason for this is the not-too-overengineered sneak node evaluation code:

// And the node(s) above have to be nonwalkable
bool ok = true;
if (!physics_override.sneak_glitch) {
u16 height =
ceilf((m_collisionbox.MaxEdge.Y - m_collisionbox.MinEdge.Y) / BS);
for (u16 y = 1; y <= height; y++) {
node = map->getNode(p + v3s16(0, y, 0), &is_valid_position);
if (!is_valid_position || nodemgr->get(node).walkable) {
ok = false;
break;
}
}
} else {
// legacy behavior: check just one node
node = map->getNode(p + v3s16(0, 1, 0), &is_valid_position);
ok = is_valid_position && !nodemgr->get(node).walkable;
}

The minetest_game door is walkable (≃ solid), but is not a full-size node, thus it's an unhandled case here. This might be better be solved by using collision detection results...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@ Client / Controls / Input Unconfirmed bug Bug report that has not been confirmed to exist/be reproducible
Projects
None yet
Development

No branches or pull requests

3 participants