Explorar o código

Fix rotation of falling facedir nodes (#12587)

in some cases
Gregor Parzefall %!s(int64=2) %!d(string=hai) anos
pai
achega
70b71c5013
Modificáronse 2 ficheiros con 16 adicións e 4 borrados
  1. 2 4
      builtin/game/falling.lua
  2. 14 0
      games/devtest/mods/testnodes/properties.lua

+ 2 - 4
builtin/game/falling.lua

@@ -158,12 +158,10 @@ core.register_entity(":__builtin:falling_node", {
 				or def.drawtype == "normal"
 				or def.drawtype == "nodebox" then
 			if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then
-				local fdir = node.param2 % 32
+				local fdir = node.param2 % 32 % 24
 				-- Get rotation from a precalculated lookup table
 				local euler = facedir_to_euler[fdir + 1]
-				if euler then
-					self.object:set_rotation(euler)
-				end
+				self.object:set_rotation(euler)
 			elseif (def.drawtype ~= "plantlike" and def.drawtype ~= "plantlike_rooted" and
 					(def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted" or def.drawtype == "signlike")) then
 				local rot = node.param2 % 8

+ 14 - 0
games/devtest/mods/testnodes/properties.lua

@@ -13,6 +13,20 @@ minetest.register_node("testnodes:falling", {
 	groups = { falling_node = 1, dig_immediate = 3 },
 })
 
+minetest.register_node("testnodes:falling_facedir", {
+	description = S("Falling Facedir Node"),
+	tiles = {
+		"testnodes_1.png",
+		"testnodes_2.png",
+		"testnodes_3.png",
+		"testnodes_4.png",
+		"testnodes_5.png",
+		"testnodes_6.png",
+	},
+	paramtype2 = "facedir",
+	groups = { falling_node = 1, dig_immediate = 3 },
+})
+
 -- Same as falling node, but will stop falling on top of liquids
 minetest.register_node("testnodes:falling_float", {
 	description = S("Falling+Floating Node"),