@@ -658,59 +658,101 @@ minetest.register_craft({
658
658
659
659
---- fence gate----
660
660
661
- local fence = {
662
- description = " Fence Gate" ,
663
- drawtype = " mesh" ,
664
- tiles = {" default_wood.png" },
665
- paramtype = " light" ,
666
- paramtype2 = " facedir" ,
667
- sunlight_propagates = true ,
668
- is_ground_content = false ,
669
- drop = " doors:gate_closed" ,
670
- connect_sides = { " left" , " right" },
671
- groups = {snappy = 1 , choppy = 2 , oddly_breakable_by_hand = 2 ,
672
- flammable = 2 , fence = 1 },
673
- on_rightclick = function (pos , clicker )
674
- local node = minetest .get_node (pos )
675
- local def = minetest .registered_nodes [node .name ]
676
- minetest .swap_node (pos , {name = def .gate , param2 = node .param2 })
677
- minetest .sound_play (def .sound , {pos = pos , gain = 0.3 ,
678
- max_hear_distance = 8 })
679
- end ,
680
- selection_box = {
661
+ function doors .register_fencegate (name , def )
662
+ local fence = {
663
+ description = def .description ,
664
+ drawtype = " mesh" ,
665
+ tiles = { def .texture },
666
+ paramtype = " light" ,
667
+ paramtype2 = " facedir" ,
668
+ sunlight_propagates = true ,
669
+ is_ground_content = false ,
670
+ drop = name .. " _closed" ,
671
+ connect_sides = { " left" , " right" },
672
+ groups = def .groups ,
673
+ sounds = def .sounds ,
674
+ on_rightclick = function (pos , clicker )
675
+ local node = minetest .get_node (pos )
676
+ local node_def = minetest .registered_nodes [node .name ]
677
+ minetest .swap_node (pos , {name = node_def .gate , param2 = node .param2 })
678
+ minetest .sound_play (node_def .sound , {pos = pos , gain = 0.3 ,
679
+ max_hear_distance = 8 })
680
+ end ,
681
+ selection_box = {
682
+ type = " fixed" ,
683
+ fixed = {- 1 / 2 , - 1 / 2 , - 1 / 4 , 1 / 2 , 1 / 2 , 1 / 4 },
684
+ },
685
+ }
686
+
687
+ if not fence .sounds then
688
+ fence .sounds = default .node_sound_wood_defaults ()
689
+ end
690
+
691
+ fence .groups .fence = 1
692
+
693
+ local fence_closed = table .copy (fence )
694
+ fence_closed .mesh = " doors_fencegate_closed.obj"
695
+ fence_closed .gate = name .. " _open"
696
+ fence_closed .sound = " doors_fencegate_open"
697
+ fence_closed .collision_box = {
681
698
type = " fixed" ,
682
699
fixed = {- 1 / 2 , - 1 / 2 , - 1 / 4 , 1 / 2 , 1 / 2 , 1 / 4 },
683
- },
684
- }
700
+ }
685
701
686
- local fence_closed = table .copy (fence )
687
- fence_closed .mesh = " doors_fencegate_closed.obj"
688
- fence_closed .gate = " doors:gate_open"
689
- fence_closed .sound = " doors_fencegate_open"
690
- fence_closed .collision_box = {
691
- type = " fixed" ,
692
- fixed = {- 1 / 2 , - 1 / 2 , - 1 / 4 , 1 / 2 , 1 / 2 , 1 / 4 },
693
- }
702
+ local fence_open = table .copy (fence )
703
+ fence_open .mesh = " doors_fencegate_open.obj"
704
+ fence_open .gate = name .. " _closed"
705
+ fence_open .sound = " doors_fencegate_close"
706
+ fence_open .groups .not_in_creative_inventory = 1
707
+ fence_open .collision_box = {
708
+ type = " fixed" ,
709
+ fixed = {{- 1 / 2 , - 1 / 2 , - 1 / 4 , - 3 / 8 , 1 / 2 , 1 / 4 },
710
+ {- 5 / 8 , - 3 / 8 , - 14 / 16 , - 3 / 8 , 3 / 8 , 0 }},
711
+ }
694
712
695
- local fence_open = table .copy (fence )
696
- fence_open .mesh = " doors_fencegate_open.obj"
697
- fence_open .gate = " doors:gate_closed"
698
- fence_open .sound = " doors_fencegate_close"
699
- fence_open .groups .not_in_creative_inventory = 1
700
- fence_open .collision_box = {
701
- type = " fixed" ,
702
- fixed = {{- 1 / 2 , - 1 / 2 , - 1 / 4 , - 3 / 8 , 1 / 2 , 1 / 4 },
703
- {- 5 / 8 , - 3 / 8 , - 14 / 16 , - 3 / 8 , 3 / 8 , 0 }},
704
- }
713
+ minetest .register_node (" :" .. name .. " _closed" , fence_closed )
714
+ minetest .register_node (" :" .. name .. " _open" , fence_open )
705
715
706
- minetest .register_node (" doors:gate_closed" , fence_closed )
707
- minetest .register_node (" doors:gate_open" , fence_open )
716
+ minetest .register_craft ({
717
+ output = name .. " _closed" ,
718
+ recipe = {
719
+ {" default:stick" , def .material , " default:stick" },
720
+ {" default:stick" , def .material , " default:stick" }
721
+ }
722
+ })
723
+ end
708
724
709
- minetest .register_craft ({
710
- output = " doors:gate_closed" ,
711
- recipe = {
712
- {" default:stick" , " group:wood" , " default:stick" },
713
- {" default:stick" , " group:wood" , " default:stick" },
714
- },
725
+ doors .register_fencegate (" doors:gate_wood" , {
726
+ description = " Wooden Fence Gate" ,
727
+ texture = " default_wood.png" ,
728
+ material = " default:wood" ,
729
+ groups = {choppy = 2 , oddly_breakable_by_hand = 2 , flammable = 2 }
715
730
})
716
731
732
+ doors .register_fencegate (" doors:gate_acacia_wood" , {
733
+ description = " Acacia Fence Gate" ,
734
+ texture = " default_acacia_wood.png" ,
735
+ material = " default:acacia_wood" ,
736
+ groups = {choppy = 2 , oddly_breakable_by_hand = 2 , flammable = 2 }
737
+ })
738
+
739
+ doors .register_fencegate (" doors:gate_junglewood" , {
740
+ description = " Junglewood Fence Gate" ,
741
+ texture = " default_junglewood.png" ,
742
+ material = " default:junglewood" ,
743
+ groups = {choppy = 2 , oddly_breakable_by_hand = 2 , flammable = 2 }
744
+ })
745
+
746
+ doors .register_fencegate (" doors:gate_pine_wood" , {
747
+ description = " Pine Fence Gate" ,
748
+ texture = " default_pine_wood.png" ,
749
+ material = " default:pine_wood" ,
750
+ groups = {choppy = 2 , oddly_breakable_by_hand = 2 , flammable = 2 }
751
+ })
752
+
753
+ doors .register_fencegate (" doors:gate_aspen_wood" , {
754
+ description = " Aspen Fence Gate" ,
755
+ texture = " default_aspen_wood.png" ,
756
+ material = " default:aspen_wood" ,
757
+ groups = {choppy = 2 , oddly_breakable_by_hand = 2 , flammable = 2 }
758
+ })
0 commit comments