Skip to content

Commit 91f6e5f

Browse files
authored
Fix crafting for fences etc. starting with colon (#3132)
1 parent 82b017a commit 91f6e5f

File tree

2 files changed

+39
-27
lines changed

2 files changed

+39
-27
lines changed

game_api.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ Allows creation of new fences with "fencelike" drawtype.
324324
name = "default:fence_wood",
325325
description = "Wooden Fence",
326326
texture = "default_wood.png",
327-
material = "default:wood",
327+
material = "default:wood", -- `nil` if you don't want the recipe
328328
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
329329
sounds = default.node_sound_wood_defaults(),
330330

mods/default/functions.lua

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -309,14 +309,6 @@ end
309309
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
310310

311311
function default.register_fence(name, def)
312-
minetest.register_craft({
313-
output = name .. " 4",
314-
recipe = {
315-
{ def.material, 'group:stick', def.material },
316-
{ def.material, 'group:stick', def.material },
317-
}
318-
})
319-
320312
local fence_texture = "default_fence_overlay.png^" .. def.texture ..
321313
"^default_fence_overlay.png^[makealpha:255,126,126"
322314
-- Allow almost everything to be overridden
@@ -364,10 +356,22 @@ function default.register_fence(name, def)
364356
-- Always add to the fence group, even if no group provided
365357
def.groups.fence = 1
366358

359+
local material = def.material
367360
def.texture = nil
368361
def.material = nil
369362

370363
minetest.register_node(name, def)
364+
365+
-- Register crafting recipe, trim away starting colon if any
366+
if not material then return end
367+
name = string.gsub(name, "^:", "")
368+
minetest.register_craft({
369+
output = name .. " 4",
370+
recipe = {
371+
{ material, 'group:stick', material },
372+
{ material, 'group:stick', material },
373+
}
374+
})
371375
end
372376

373377

@@ -376,15 +380,6 @@ end
376380
--
377381

378382
function default.register_fence_rail(name, def)
379-
minetest.register_craft({
380-
output = name .. " 16",
381-
recipe = {
382-
{ def.material, def.material },
383-
{ "", ""},
384-
{ def.material, def.material },
385-
}
386-
})
387-
388383
local fence_rail_texture = "default_fence_rail_overlay.png^" .. def.texture ..
389384
"^default_fence_rail_overlay.png^[makealpha:255,126,126"
390385
-- Allow almost everything to be overridden
@@ -433,26 +428,30 @@ function default.register_fence_rail(name, def)
433428
-- Always add to the fence group, even if no group provided
434429
def.groups.fence = 1
435430

431+
local material = def.material
436432
def.texture = nil
437433
def.material = nil
438434

439435
minetest.register_node(name, def)
436+
437+
-- Register crafting recipe, trim away starting colon if any
438+
if not material then return end
439+
name = string.gsub(name, "^:", "")
440+
minetest.register_craft({
441+
output = name .. " 16",
442+
recipe = {
443+
{ material, material },
444+
{ "", ""},
445+
{ material, material },
446+
}
447+
})
440448
end
441449

442450
--
443451
-- Mese post registration helper
444452
--
445453

446454
function default.register_mesepost(name, def)
447-
minetest.register_craft({
448-
output = name .. " 4",
449-
recipe = {
450-
{'', 'default:glass', ''},
451-
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
452-
{'', def.material, ''},
453-
}
454-
})
455-
456455
local post_texture = def.texture .. "^default_mese_post_light_side.png^[makealpha:0,0,0"
457456
local post_texture_dark = def.texture .. "^default_mese_post_light_side_dark.png^[makealpha:0,0,0"
458457
-- Allow almost everything to be overridden
@@ -480,10 +479,23 @@ function default.register_mesepost(name, def)
480479
end
481480
end
482481

482+
local material = def.material
483483
def.texture = nil
484484
def.material = nil
485485

486486
minetest.register_node(name, def)
487+
488+
-- Register crafting recipe, trim away starting colon if any
489+
if not material then return end
490+
name = string.gsub(name, "^:", "")
491+
minetest.register_craft({
492+
output = name .. " 4",
493+
recipe = {
494+
{'', 'default:glass', ''},
495+
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
496+
{'', material, ''},
497+
}
498+
})
487499
end
488500

489501
--

0 commit comments

Comments
 (0)