Don't push player out of item stack nodes

This commit is contained in:
Aaron Suen 2021-11-27 08:41:29 -05:00
parent ede533034c
commit a5985dd43e
2 changed files with 18 additions and 7 deletions

View File

@ -9,10 +9,10 @@ ISSUES-GAME: Gameplay-affecting issues
# # # # # # # # # # # #
#### # #### # ###### ###### # # ####
- Unconfirmed: bug involving a player dropping all inventory into
a narrow vertical shaft (on VE-NC server) and having items cycle
indefinitely without settling to a steady state.
https://discord.com/channels/507234450615042048/507234451085066248/901132356977578044
- Hints for new anvil system
- Test/fix hints for affected crafts
- Hook in recipe after() for discovery for general anvil uses
- Add hints to try each anvil type
- Shelf recipe (and any other 3x3 recipe) reform
- Add a "shelf frame" node made from wooden frames
@ -31,6 +31,11 @@ ISSUES-GAME: Gameplay-affecting issues
- Lode prills should be able to drain from glowing ore into
glass cases and crates
- Unconfirmed: bug involving a player dropping all inventory into
a narrow vertical shaft (on VE-NC server) and having items cycle
indefinitely without settling to a steady state.
https://discord.com/channels/507234450615042048/507234451085066248/901132356977578044
- Fix crappy sponge death mechanic
- Remove special treatment of glass case and glass nodes
- May need to find a new use-case for glass case?

View File

@ -17,16 +17,22 @@ local function normalbox(box)
if not box then return true end
if type(box) ~= "table" then return end
if box.fixed then return normalbox(box.fixed) end
if #box == 1 then return box[1] end
if #box == 1 then return normalbox(box[1]) end
return box[1] == -0.5 and box[2] == -0.5 and box[3] == -0.5
and box[4] == 0.5 and box[5] == 0.5 and box[6] == 0.5
end
local function ispushout(def)
if not def.walkable then return end
if def.liquidtype ~= "none" then return end
if def.groups and def.groups.is_stack_only then return end
return normalbox(def.collision_box)
end
local solids = {}
minetest.after(0, function()
for k, v in pairs(minetest.registered_nodes) do
if v.walkable and v.liquidtype == "none"
and normalbox(v.collision_box) then
if ispushout(v) then
solids[k] = true
end
end